Language runtime framework designed to empower developers devise modern and novel programming language features.
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
docs
libs
python
resources
schemas
scripts
src
tests
tools
valgrind
.clang-format
.gitignore
.gitmodules
.travis.yml
CMakeLists.txt
Doxyfile
LICENSE
Makefile
README.md
run_clang_format.sh

README.md

logo

Language runtime framework designed to empower developers devise modern and novel programming language features.

Build status Docs build status

Overview

With the proliferation of high-level general purpose programming languages being a dominant trend in the software industry, many developers have taken the endeavor to invent their own in attempts to illustrate their unique visions of how modern software systems can be developed. However, such tasks are usually massive undertakings as the steps involved in developing a custom language runtime tend to be extremely complex, error prone and resource consuming. Consequently, these steps end up becoming a very intimidating part in the process. Although there are candidates of generic runtimes for high-level languages that are available, many of them lack the robustness, efficiency and versatility that can meet the language requirements.

coreVM is a language-agnostic programming language runtime framework, designed with versatile interfaces and modern runtime functionalities to unfetter language developers from the burden of creating their own. Instead of re-inventing the wheel, developers can focus better on the design and implementation of core language features. coreVM strives to meet the demands of programming languages of diverse types through the following:

The points above together illustrate the project's core vision that it strives to be a powerful platform that can envision and enpower developers devise modern programming languages. Hopefully, as the project evolves, it will help guide language developers devise novel language designs and features that can shape the next generation of computing.

Get Started

Here is a list of recommended steps to get started on the project:

  1. Get familiar with the project by checking out these useful links:
  1. Build from source and have fun:

2.1 Build and install all dependencies:

git submodule update --init && make -C libs full=1

2.2. Build main binaries and run tests:

make

2.3. Build all, including benchmarks, sanity tests, and dynamic analysis tests (optional):

make full=2

2.4. Play around with the Python compiler and run individual Python tests (more below), for example:

python python/pyta.py python/tests/int.py

  1. Checkout more wiki pages if you are interested:

Moonshots

While the ultimate goal of this project is to facilitate the design and development of modern programming languages for language developers, I personally have two use cases of the project that I had envisioned.

Support the HEX programming language

One is to use coreVM as the underlying runtime for the HEX programming language that I worked on a while ago. This was actually one of the main motivations of the project before its inception.

Python language implementation based on coreVM

The second idea is to have an implementation of the Python programming language implemented using the coreVM framework, named Pyegasus (formerly named Project Pyta).

The development of the runtime framework and the language complements each other well, as the language serves to validate, test and benchmark the functionalities of the framework, and at the same time the framework provides more capabilities to facilitate the growth of the language as it evolves. The parallel developments of the two forms a positive feedback loop that accelerates the growth of both.

As of now, Pyegasus implements a tiny subset of the Python language features. The source is mirrored in this repo under python/src, and the corresponding test suite are under python/tests. There is a Python compiler that lives under python/compiler, which compiles Python source code into coreVM bytecode. In addition, there is a command-line program python/pyta.py that can directly execute a given Python program by invoking the compiler to generate coreVM bytecode, and feeds the output to coreVM. Click here to view the project summary page.

To run the entire Python test suite after compilation, run:

python python/bootstrap_tests.py

To run an individual Python program, such as python/tests/int.py, run:

python python/pyta.py python/tests/int.py

Over time, it will be interesting to compare Pyegasus's stability, performance, and many other aspects with the major flavors of the language, such as CPython, PyPy, Jython, IronPython, and Pyston.

Contribute

Please read the following wiki pages if you'd like to contribute to the project:

License

coreVM is licensed under The MIT License.

Inquiries

For technical issues and other inquiries, please file issues here.