Using LLVM for a JIT interpreter turnsout to be problematic – or, it used to be:
Hi,
So who was the Compiler Pioneer?
Heinz Rutishauser (1918 - 1970) https://en.wikipedia.org/wiki/Heinz_Rutishauser
Or:
Frances E. Allen (1932 - 2020)
https://en.wikipedia.org/wiki/Frances_Allen
Well the more earlier Compiler Pioneer was
of course Heinz Rutishauser, just from the
live span. But I guess the contribution
of Heinz Rutishauser is also impressive,
like 33% of early ALGOL was from him,
but the original name was International
Algebraic Language.
Now here is the main question: Why does
no Prolog system implementation, use
Frances Allen optimizations? Or picked up
ideas from LLVM, and is still ticking
along with WAM? LLVM uses SSA form heavily,
which is directly related to compiler
theory Allen helped formalize in
the 1970s–1980s.
Hi,
My penny of thought, ideas from Frances
Allen can be nevertheless picked up, even
if the experience with LLVM was mixed:
Using LLVM for a JIT interpreter turnsout to be problematic – or, it used to be:
the Unladen Swallow project for Python ran
into a lot of problems with using LLVM
as a JIT, and eventually gave up. However,
the Lua project seems to avoid these problems
by generating the main interpreter with
LLVM rather than using LLVM as a JIT.
built using LLVM into CPython's virtual machine (2010) https://en.wikipedia.org/wiki/Unladen_Swallow
Building the fastest Lua interpreter.. automatically! (2022) https://sillycross.github.io/2022/11/22/2022-11-22/
For example Python has its own JIT in the
form of PyPy. But PyPy generates machine code
on its own — it does not rely on LLVM to do so.
So the advice could be:
- Pick up ideas as in PyPy, not necessarely projects, i.e. LLVM
- Have self hosting systems as in Lua
- Maybe pick up ideas for intermediate code, and not machine code
There are many Prolog systems which have only
WAM inspired code as intermediate code. And
these Prolog systems are judged more interpreters
than compilers, since they don't generate
machine code. My quest is currently to replace
WAM by something better for intermediate code.
The better thingy is DAM, Dogelog Abstract Machine.
Bye
Mild Shock schrieb:
Hi,
So who was the Compiler Pioneer?
Heinz Rutishauser (1918 - 1970)
https://en.wikipedia.org/wiki/Heinz_Rutishauser
Or:
Frances E. Allen (1932 - 2020)
https://en.wikipedia.org/wiki/Frances_Allen
Well the more earlier Compiler Pioneer was
of course Heinz Rutishauser, just from the
live span. But I guess the contribution
of Heinz Rutishauser is also impressive,
like 33% of early ALGOL was from him,
but the original name was International
Algebraic Language.
Now here is the main question: Why does
no Prolog system implementation, use
Frances Allen optimizations? Or picked up
ideas from LLVM, and is still ticking
along with WAM? LLVM uses SSA form heavily,
which is directly related to compiler
theory Allen helped formalize in
the 1970s–1980s.
Hi,
My experience so far, PyPy is sometimes almost
as fast as JavaScript. Quite impressive sometimes.
But Async I/O in Python is shit.
I have a problem with Async I/O, a solution I
couldn't figure out yet. Still investigating the
problem. I recently posted it here:
comp.lang.python
Bye
Mild Shock schrieb:
Hi,
My penny of thought, ideas from Frances
Allen can be nevertheless picked up, even
if the experience with LLVM was mixed:
Using LLVM for a JIT interpreter turnsout to be problematic – or, it used to be:
the Unladen Swallow project for Python ran
into a lot of problems with using LLVM
as a JIT, and eventually gave up. However,
the Lua project seems to avoid these problems
by generating the main interpreter with
LLVM rather than using LLVM as a JIT.
built using LLVM into CPython's virtual machine (2010)
https://en.wikipedia.org/wiki/Unladen_Swallow
Building the fastest Lua interpreter.. automatically! (2022)
https://sillycross.github.io/2022/11/22/2022-11-22/
For example Python has its own JIT in the
form of PyPy. But PyPy generates machine code
on its own — it does not rely on LLVM to do so.
So the advice could be:
- Pick up ideas as in PyPy, not necessarely projects, i.e. LLVM
- Have self hosting systems as in Lua
- Maybe pick up ideas for intermediate code, and not machine code
There are many Prolog systems which have only
WAM inspired code as intermediate code. And
these Prolog systems are judged more interpreters
than compilers, since they don't generate
machine code. My quest is currently to replace
WAM by something better for intermediate code.
The better thingy is DAM, Dogelog Abstract Machine.
Bye
Mild Shock schrieb:
Hi,
So who was the Compiler Pioneer?
Heinz Rutishauser (1918 - 1970)
https://en.wikipedia.org/wiki/Heinz_Rutishauser
Or:
Frances E. Allen (1932 - 2020)
https://en.wikipedia.org/wiki/Frances_Allen
Well the more earlier Compiler Pioneer was
of course Heinz Rutishauser, just from the
live span. But I guess the contribution
of Heinz Rutishauser is also impressive,
like 33% of early ALGOL was from him,
but the original name was International
Algebraic Language.
Now here is the main question: Why does
no Prolog system implementation, use
Frances Allen optimizations? Or picked up
ideas from LLVM, and is still ticking
along with WAM? LLVM uses SSA form heavily,
which is directly related to compiler
theory Allen helped formalize in
the 1970s–1980s.
| Sysop: | Keyop |
|---|---|
| Location: | Huddersfield, West Yorkshire, UK |
| Users: | 715 |
| Nodes: | 16 (3 / 13) |
| Uptime: | 16:16:14 |
| Calls: | 12,103 |
| Calls today: | 3 |
| Files: | 15,004 |
| Messages: | 6,518,058 |