3 ms·
> The ability to evaluate code interactively without recompilation SBCL and other implementations compile code to machine code then execute it. That is to say,
by koito17 2y ago
> The ability to evaluate code interactively without recompilation
SBCL and other implementations compile code to machine code then execute it. That is to say, when a form is submitted to the REPL, the form is not interpreted, but first compiled then executed. The reason execution finishes quickly is because compilation finishes quickly.
There are some implementations, like CCL, with a special interpreter mode exclusively for REPL-usage.[1] However, at least SBCL and ECL will compile code, not interpret.
[1] https://github.com/Clozure/ccl/blob/v1.13/level-1/l1-readloop.lisp#L710 https://github.com/Clozure/ccl/blob/v1.13/level-1/l1-readloo...
- Shinmera 2y agoI specifically talk about the fast evaluator for SBCL. But even without that contrib, SBCL does have another evaluator as well that's used in very specific circumstances.
- taeric 2y agoI think a lot of this is confusion between online versus batch compilation? Most of us have only ever seen/used batch compilation. To that end, many people assume that JIT in an interpreter is how online compilation is done. I probably am more guilty of that than I should be.
- igouy 2y ago> online compilation ? incremental compilation
- taeric 2y agoI confess I wasn't positive what the correct term would be. "Online" is common for some uses of it. And I "knew" that what we call compilation for most programs used to be called "batch compilation." Searching the term was obnoxious, though, such that I gave up. :(
- akira2501 2y ago> the form is not interpreted, but first compiled then executed That's TempleOS technology right there.
- Filligree 2y agoOther way around.
- darby_nine 2y agoDo either CCL or SBCL have any kind of partial evaluation or tracing compilation?