3 ms·
In the 'Lisp World' JIT compiler are mostly not used. The main approaches are: * program compilation, where the object system can declare parts as non-extensib
by lispm 11y ago
In the 'Lisp World' JIT compiler are mostly not used. The main approaches are:
* program compilation, where the object system can declare parts as non-extensible
* a runtime compiler, which can compile methods
See for example for a recent attempt to statically compile methods and handing the types to the optimizing compiler (which also uses type inference):
https://github.com/guicho271828/inlined-generic-function/ https://github.com/guicho271828/inlined-generic-function/
- baldfat 11y agoIn the Lisp World, Racket has a great JIT which is optional. https://docs.racket-lang.org/guide/performance.html https://docs.racket-lang.org/guide/performance.html Racket is a beautiful thing.
- lispm 11y agoRacket is Racket. CLISP also can use a JIT - it uses GNU Lightning for runtime native code generation (https://www.gnu.org/software/lightning/ https://www.gnu.org/software/lightning/). Anyway the Racket JIT seems to be a bit limited: > The JIT compiler works incrementally as functions are applied, but the JIT compiler makes only limited use of run-time information when compiling procedures, since the code for a given module body or lambda abstraction is compiled only once. The JIT’s granularity of compilation is a single procedure body, not counting the bodies of any lexically nested procedures.