1. 9
  1.  

  2. 1

    This is a timely subject for me.
    I’m trying to write a simple but VM. The language itself would be onlya bit more than an RPN calculator,

    (op, X, Y, Z) where op = {+, *, and, or} and (call, F, Y, Y, Z) where you call an external or internal function.

    However, I would like this to be quick and to run incrementally - it makes one step each time it receives an external message. Also, I would like to keep all the data and states in a memory mapped file - essentially, on the heap.

    Keeping each [artificial] “stack frame” as small as possible is the main thing I can think of to increase the speed.

    Also: Looking at the home-page of the language the author is writing a VM for: “Converge is a dynamically typed object orientated programming language with compile-time meta-programming facilities - put simply, Converge has a macro-like facility that can embed domain specific languages with arbitrary syntaxes into source files. ”

    Yes, being able to use absolutely any syntax sounds like it could make the language very slow indeed - It seems like that would be the equivalent of running bison and then gcc each time you interpret a program.