Eva
Exploratory implementation of the Eva virtual machine in pure Go.
Eva is a simple virtual machine designed for educational use. This is not intended to be a production-ready language implementation.
Installation
go get github.com/lthibault/eva
Eva requires Go >= 17.0.0 with modules enabled.
Features
The standard Eva VM, as designed by Dmitry Soshnikov, boasts the following features:
- Object-Oriented Programming
- Bytecode-emitting compiler
Porting Eva to Go requires workarounds for some C++ features, such as tagged unions, leading to the development of additional features. In addition, certain language features have been added for practice and exploration.
- Dynamic Values via NaN-boxing
- Lightweight concurrency via Goroutines (planned)
- Algebraic Effect Handlers (planned)
- Lazy heap allocation (planned)