- Compile once, run anywhere for low-level languages like C++. With limitations, of course.
- More debugging capabilities. Maybe it could be used for dynamic analysis. Theoretically it should be possible to change code at runtime.
- Something like Valgrind? Valgrind is really complex and doesn't run on Windows at all. It seems like you could make a portable substitute with this.
- Maybe GraalVM can be used to provide additional memory safety guarantees, not sure.
Kind of hard for me to say because I don't actually know exactly what GraalVM provides, so it's kind of a guess. But it does seem like there are some genuine use cases beyond the neatness of it.
This seems to imply only implementing a C JIT, so my memory may be wrong: http://chrisseaton.com/rubytruffle/cext
Truffleruby seems to be using Sulong now: https://github.com/oracle/truffleruby/commit/f16a52934437a96...
The main use case seems to be speed up dynamic languages (ruby, python, javascript, R), and Sulong is used to handle the C extensions, so that the optimizations can be performed across the language boundaries. Unboxing and inlining mostly in the hot paths. Makes sense. Plus more memory safety than C/C++/Fortran.
This is very weird. How can (lack of) optimizations possibly interfere with things like calling conventions? Whatever they're doing, it smells of fragile.
I am trying hard not to get overly excited, let see some real world benchmarks once Truffle is ready to run Real World Rails.