>> Most of the elisp code you run is largely static. It does change
> And JavaScript programs almost never change after a website is loaded
No, but new javascript programs are frequently loaded.
> You do not need any files to compile Elisp code, and you do not have to save the bytecode anywhere.
You do not need to do any of this by hand, but it still happens; emacs does it automatically.
> What exactly is your definition of JIT? I think you might be confusing "JIT" with dynamic recompilation.
The term is somewhat nebulous. I don't think it's appropriate to apply it to the result of a traditional compilation process that occurs immediately prior to execution. If (for instance) I write a script in c and run it with tcc -run, what happens is that that file is compiled—very similarly to a ‘traditional’ AOT, though the dynamic linker is bypassed—and the result is run.
Essential to JIT, in my view, is not dynamic recompilation, but plain dynamic compilation. Compilation should occur concurrently with execution, and is usually accompanied by some heuristic for deciding what to compile first (e.g. tracing) as well as an interpreter. Wikipedia agrees:
> JIT is a way of executing computer code that involves compilation during execution of a program
______________________________________
> what do you think happens to C?
Under most implementations, it is statically compiled to a native binary. Even if it is not, however, ECL does not JIT c, but produces it statically.