Note that there are some explanatory texts on larger screens.

plurals
  1. POClean, self-contained VM implemented in C and under 100-200K compiled code size?
    primarykey
    data
    text
    <p>I'm looking for a VM with the following features:</p> <ul> <li>Small compiled code footprint (<strong>under 200K</strong>).</li> <li>No external dependencies.</li> <li>Unicode (or raw) string support.</li> <li><strong>Clean code</strong>/well organized.</li> <li><strong>C(99) code</strong>, NOT C++.</li> <li><strong>C/Java-like syntax</strong>.</li> <li>Operators/bitwise: AND/OR, etc.</li> <li><strong>Threading</strong> support.</li> <li><strong>Generic/portable bytecode</strong>. Bytecode should work on different machines even if it was compiled on a different architecture with different endianness etc.</li> <li><strong>Barebones</strong>, nothing fancy necessary. Only the basic language support.</li> <li><strong>Lexer/parser and compiler separate from VM</strong>. I will be embedding the VM in a program and then compile the bytecode independently.</li> </ul> <p>So far I have reviewed <a href="http://en.wikipedia.org/wiki/Lua_(programming_language)" rel="nofollow noreferrer">Lua</a>, <a href="http://en.wikipedia.org/wiki/Squirrel_(programming_language)" rel="nofollow noreferrer">Squirrel</a>, <a href="http://en.wikipedia.org/wiki/Neko_(programming_language)" rel="nofollow noreferrer">Neko</a>, <a href="http://en.wikipedia.org/wiki/Pawn_(programming_language)" rel="nofollow noreferrer">Pawn</a>, <a href="http://en.wikipedia.org/wiki/Io_(programming_language)" rel="nofollow noreferrer">Io</a>, AngelScript... and the only one which comes somewhat close to the spec is Lua, but the syntax is horrible, it does not have bitwise support, and the code style generally sucks. Squirrel and IO are huge, mostly. Pawn is problematic, it is small, but bytecode is not cross platform and the implementation has some serious issues (ex bytecode is not validated at all, not even the headers AFAIK).</p> <p>I would love to find a suitable option out there.</p> <p>Thanks!</p> <p><strong>Update:</strong> Javascript interpreters are... interpreters. This is a VM question for a bytecode-based VM, hence the compiler/bytecode vm separation requirement. JS is interpreted, and very seldom compiled by JIT. I don't want JIT necessarily. Also, all current ECMAScript parsers are all but small.</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload