zetavm/zetavm
{ "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"}ZetaVM
Section titled “ZetaVM”Please note that ZetaVM is currently at the early prototype stage. As such, it is incomplete and breaking changes may happen often.
Requirements:
Section titled “Requirements:”- 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
Installation
Section titled “Installation”# 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 testBasic Usage
Section titled “Basic Usage”# 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/0About ZetaVM
Section titled “About ZetaVM”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.
More Information
Section titled “More Information”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.
