4 ms·
What Scheme implementation did the code originally use?
by davexunit 11y ago
What Scheme implementation did the code originally use?
- Johnny_Brahms 11y agoThe Guile 2.0 branch. I don't know what magic optimisation dust they sprinkled over the upcoming 2.2, but it sure is fast. We thought about using chicken, but it depends quite a lot on using syntax-case to deconstruct everything, and I didn't want to learn their implicit renaming stuff. Apparently the 2.2 branch has full elisp support. Can't wait for Emacs to run on it.
- davexunit 11y agoAh, that makes sense! Guile 2.2 has a completely rewritten compiler and virtual machine. I'm happy to see some real-world instances of it greatly improving performance.
- Johnny_Brahms 11y ago"greatly improving performance" is an understatement! It was literally 3x. I didn't even have to change anything. Not bad for a language that usually beats python by quite a large margin :)
- wtbob 11y ago> Apparently the [guile] 2.2 branch has full elisp support. Can't wait for Emacs to run on it. I really wish folks would spend the time they spent porting elisp to guile Scheme porting elisp to Lisp instead. Scheme's great for what it is (really), but what it is not is an industrial-strength systems programming language. Common Lisp is.
- davexunit 11y ago>porting elisp to guile Scheme This is a common misunderstanding. Emacs Lisp is not being rewritten as Scheme. What is actually happening is that there is a compiler for Emacs Lisp that runs on Guile's virtual machine. Elisp isn't going anywhere.
- wtbob 11y agoRegardless, I wish that they'd spent that effort writing an elisp→Lisp compiler rather than an elisp→Scheme compiler.
- davexunit 11y agoIt's not an elisp->scheme compiler.
- wtbob 11y agoWhat does it compile to, if not Scheme? And, regardless, I wish that they'd not used Scheme. I really, really wish that they'd not used Scheme.
- jabl 11y agoI'm not that familiar with guile internals, but IIRC they have some intermediate representation (bytecode?) that the VM then runs. So the frontend languages (Scheme, Elisp, even Javascript IIRC) are compiled to bytecode, the Guile VM then interprets the bytecode.