Skip to content
vic

zetavm/zetavm

Multi-Language Platform for Dynamic Programming Languages

zetavm/zetavm.json
{
"createdAt": "2017-04-25T06:26:09Z",
"defaultBranch": "master",
"description": "Multi-Language Platform for Dynamic Programming Languages",
"fullName": "zetavm/zetavm",
"homepage": "https://pointersgonewild.com/category/zeta/",
"language": "C++",
"name": "zetavm",
"pushedAt": "2022-07-19T02:01:32Z",
"stargazersCount": 640,
"topics": [
"interpreter",
"jit",
"jit-compiler",
"language",
"vm"
],
"updatedAt": "2025-10-24T00:26:52Z",
"url": "https://github.com/zetavm/zetavm"
}

Build Status Build status Gitter chat

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 git@github.com: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

  • Garbage collection

  • JIT compilation

  • 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]!(/tests/vm/ex_image.zim) (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]!(docs) directory:

  • [Overview and Roadmap]!(docs/roadmap.md)

  • [Design and Guiding Principles of ZetaVM]!(docs/design.md)

  • [Packages included with ZetaVM]!(docs/packages.md)

  • [Plush Language Guide]!(docs/plush_guide.md)

  • [Plush Bootstrap Process]!(docs/bootstrap.md)

  • [Execution Model and Semantics]!(docs/exec_model.md)

  • [Contributing to ZetaVM]!(docs/contributing.md)

  • [Creating your own Language with ZetaVM]!(docs/new_language.md)

There are also a few blog post about Zeta and its design.

For additional questions and clarifications, open a GitHub issue and tag it as a question, or join the ZetaVM Gitter chat.