C++ PLSQL Python JavaScript Shell M4
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
benchmarks Changed core/window API to take packed ABGR8888 color values Sep 10, 2017
docs Update bootstrap.md Nov 26, 2017
espresso Missing imports now throw an exception Jul 25, 2017
examples Music example WIP Nov 7, 2017
packages Added string escaping and fixed bug in parsing package (#119) Apr 9, 2018
plush Moved package sources Nov 8, 2017
tests Added string escaping and fixed bug in parsing package (#119) Apr 9, 2018
vm Fix 3 problems on 32bit targets (#118) Dec 9, 2017
.gitattributes Create .gitattributes Jun 15, 2017
.gitignore Moved package sources Nov 8, 2017
.travis.yml Fix 3 problems on 32bit targets (#118) Dec 9, 2017
Dockerfile travis + docker Jun 3, 2017
Dockerfile-32 Fix 3 problems on 32bit targets (#118) Dec 9, 2017
LICENSE Initial commit Apr 25, 2017
README.md Added doc about Plush bootstrap Nov 26, 2017
appveyor.yml Enabled parallel builds on AppVeyor and Travis Jul 29, 2017
benchmark.py Added import microbenchmark. Stylistic changes. Sep 9, 2017
configure Changed ftrapv compiler flag for fwrapv Jun 22, 2017
configure.ac Changed ftrapv compiler flag for fwrapv Jun 22, 2017
espresso.sh Fix test running on Arch (#112) Oct 14, 2017
makefile.in Fix 3 problems on 32bit targets (#118) Dec 9, 2017
plush.sh Implemented integer modulo operator in Plush Jun 14, 2017
push_pkg.sh Initial commit Apr 25, 2017
run_tests.sh Started work on std/audio package Oct 25, 2017
scheme.sh Implemented integer modulo operator in Plush Jun 14, 2017

README.md

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.

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

# 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

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/0

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 (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

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.

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