Please note that ZetaVM is currently at the early prototype stage. As such, it is incomplete and breaking changes may happen often.
- GNU Make
- GCC 5.4+ (linux) or clang (OSX), or cygwin (Windows)
- Optional: autoconf and pkg-config, if needing to edit the configure file
- Optional: sdl2, if wanting to use audio and graphics capabilities
- Optional: Python 2 is needed to run the benchmark.py script
# Clone this repository git clone firstname.lastname@example.org:maximecb/zetavm.git # Run the configure script and compile zetavm # Note: run configure with `--with-sdl2` to build audio and graphics support cd zetavm ./configure make -j4 # Optionally run tests to check that everything works properly make test
# To run programs, pass the path to a source file to zeta, for example: ./zeta benchmarks/fib.pls -- 29 # To start up the Plush REPL (interactive shell), # you can run the Plush language package as a program: ./zeta lang/plush/0
ZetaVM is a Virtual machine and JIT compiler for dynamic programming languages. It implements a basic core runtime environment on top of which programming dynamic languages can be implemented with relatively little effort.
Features of the VM include:
Built-in support for dynamic typing
Dynamically growable objects (JS-like)
Dynamically-typed arrays (JS/Python-like)
Integer and floating-point arithmetic
Immutable UTF-8 strings
Text-based code and data storage format (JSON-like)
First-class stack-based bytecode (code is data)
Built-in graphical and audio libraries
Coming soon: built-in package manager
Zeta image files (.zim) are JSON-like, human-readable text files containing objects, data and bytecodes to be executed by ZetaVM. They are intended to serve as a compilation target, and may contain executable programs, or libraries/packages.
A recording of a talk about ZetaVM given at PolyConf 2017 is available.
For more information, see the documentation in the docs directory:
There are also a few blog post about Zeta and its design.