Good news everyone! 🎉 After two years of R&D, we've finally merged the Bytecode DSL into master! Truffle now generates bytecode interpreters from AST-like specifications for you. ASTs are dead, long live bytecodes! Check it out: github.com/oracle/graal...
Post
Thanks to the reviewers @awoess.bsky.social , @eregon.bsky.social, Stepan Sindelar, @gillesduboscq.bsky.social, Matthias Neugschwandtner, and special thanks to @stefan-marr.de for early adopting it with TruffleSOM.
SimpleLanguage was fully migrated already. You can check out the specification here: github.com/oracle/graal... In progress for migration are GraalPy and GraalJS. GraalPy already passes all the tests. 🎉
This major feature will be released with 24.2. You can test it by building Truffle from source or you can pick up the latest dev build maven bundle from: github.com/graalvm/graa...
2 reposts5 likes
This is just the beginning. From now on with every @graalvm.org release we will improve performance, compress the bytecode layout and add new features like a fast first tier template JIT. Thanks to the DSL abstraction we are much more flexible for future optimizations.
The operation specification and the generated bytecode interpreter is just Java bytecodes which we JIT using Futamura projections. If you want to dive into how Truffle works, here is a talk where I explain the basics: youtu.be/pksRrON5XfU?...