Hi folks!
Since people have started talking about runtimes for the functions defined in Wikilambda (see: V8 Engine andor WebAssembly thread), I figured I should mention the project I’ve been working on for a few weeks: GraalEneyj.[1] It’s supposed to be(come) a GraalVM-based (re)implementation of the eneyj language/runtime[2] that Denny wrote and which is currently part of the AbstractText extension.
GraalVM,[3] for those who haven’t heard of it yet, is a Java-based project to build high-performance language implementations. There are already GraalVM-based implementations of JavaScript,[4] R,[5] Ruby,[6] LLVM,[7] WebAssembly,[8] and more,[9] and code snippets in any of these languages can run in the same (J)VM ((Java) Virtual Machine) and call each other with no performance penalty. This is of course interesting if we’re thinking about Wikilambda holding function implementations in different languages – with GraalEneyj, it should be possible to seamlessly compose functions implemented in any language for which a GraalVM implementation is available. GraalVM is also supposed to deliver highly optimized language implementations with relatively little development effort, but so far GraalEneyj is not yet at a point where I could benchmark it.
If that sounds interesting to you, please get in touch! You can also explore the code that I have so far (there’s not a ton of documentation yet, but hopefully the README[10] is at least enough to get a basic idea and run the tests), or watch the GraalEneyj walkthrough[11] that I recorded last month. (At some point I should record another one, since the code keeps changing, but for now that’s all I have to offer.)
Cheers,
Lucas Werkmeister
PS: In my day job I’m a software developer at Wikimedia
Deutschland e. V., but all of this is private-time activity so
far, not work related.
[1]: https://github.com/lucaswerkmeister/graaleneyj/
[2]: https://github.com/google/abstracttext/tree/master/eneyj
[3]: https://www.graalvm.org/
[4]: https://github.com/graalvm/graaljs
[5]: https://github.com/oracle/fastr/
[6]: https://github.com/oracle/truffleruby
[7]: https://github.com/oracle/graal/tree/master/sulong
[8]: https://github.com/oracle/graal/tree/master/wasm
[9]:
https://github.com/oracle/graal/blob/master/truffle/docs/Languages.md
[10]: https://github.com/lucaswerkmeister/graaleneyj/#readme
[11]: https://www.youtube.com/watch?v=mQVpcBMjSaw