First proof of concept of a LLVM driven backend for the neko virtual machine


Vadim Atlygin has been working on a LLVM backend for Neko, and we are
happy to announce that "Hello world" works now.

For LLVM readers, Neko is a tight virtual machine, which is primarily
targetted by haXe. haXe is a statically typed programming language
that has targets to JavaScript, Flash, as well as Neko. Both haXe and
Neko are developed by Nicolas Cannasse, with contributions from many
others. You can read more about haXe and Neko at and

The current neko vm has a x86 JIT. The aim of this work is to get the
Neko VM to run fast on 64 bit machines, and hopefully improve
performance on 32 bit targets as well.

You can get the code from this repository:

The work is still incomplete - only the first 10 opcodes out of 66 are
implemented, but there is enough to get "Hello world" and simple
arithmetic to work. The current port is still slower than the existing
VM, but that is expected. The next steps are to implement the rest of
the opcodes. At first, we will just plug them up to use c callbacks,
and then as a next step, convert them to real LLVM bytecodes later.
Until we have real LLVM produced for the opcodes, it will be slower
than the original VM.

If you want to help out, you can contribute test cases for opcodes,
implement c callback implementations for some of the opcodes, or even
better optimized code for opcodes. We propose to use the Neko mailing
list for discussion on this.

Vadim Atlygin & Asger Ottar Alstrup

Great and very appreaciated news!
Out of curiosity, why have you decided to translate Neko to LLVM instead of creating a new target for haXe?
This project is awesome :wink:


Excellent work. This is a very cool idea. Do you have any clue as to the kind of overall speed increases we'll likely expect when this project reaches its target milestone?


Asger Ottar Alstrup wrote: