Language runtime framework designed to empower developers devise modern and novel programming language features.
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:
- An instruction set that can broadly cover fundamental language functionalities.
- An abstract language representation that can capture high-level language constructs.
- A set of APIs for extensions, customizations, and optimizations.
- A well thought and extensible architecture.
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.
Here is a list of recommended steps to get started on the project:
- Get familiar with the project by checking out these useful links:
- Project Documentation
- Design and Architecture
- Dependencies and Build Environments
- Annotated Source Code
- 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:
2.3. Build all, including benchmarks, sanity tests, and dynamic analysis tests (optional):
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
- Checkout more wiki pages if you are interested:
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:
To run an individual Python program, such as python/tests/int.py, run:
python python/pyta.py python/tests/int.py
Please read the following wiki pages if you'd like to contribute to the project:
coreVM is licensed under The MIT License.
For technical issues and other inquiries, please file issues here.