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