All Projects → epellis → Esta

epellis / Esta

Interpreted language and bytecode VM of my own design written in Rust [Unmaintained]

Programming Languages

rust
11053 projects

Projects that are alternatives of or similar to Esta

Wasm3
🚀 The fastest WebAssembly interpreter, and the most universal runtime
Stars: ✭ 4,375 (+15525%)
Mutual labels:  wasm, interpreter, virtual-machine
Umka Lang
Umka: a statically typed embeddable scripting language
Stars: ✭ 308 (+1000%)
Mutual labels:  interpreter, virtual-machine
RISVM
A low overhead, embeddable bytecode virtual machine in C++
Stars: ✭ 21 (-25%)
Mutual labels:  interpreter, virtual-machine
Gravity
Gravity Programming Language
Stars: ✭ 3,968 (+14071.43%)
Mutual labels:  interpreter, virtual-machine
maxc
Programming Language maxc
Stars: ✭ 36 (+28.57%)
Mutual labels:  interpreter, virtual-machine
3bc-lang
Low level language, tiny virtual machine that works on computers and microcontrollers. (Friendly Punched cards)
Stars: ✭ 155 (+453.57%)
Mutual labels:  interpreter, virtual-machine
V8
The official mirror of the V8 Git repository
Stars: ✭ 18,808 (+67071.43%)
Mutual labels:  interpreter, virtual-machine
cabasa
Haxe Framework for WebAssembly
Stars: ✭ 30 (+7.14%)
Mutual labels:  virtual-machine, wasm
Gasm
An Experimental Wasm Virtual Machine for Gophers
Stars: ✭ 437 (+1460.71%)
Mutual labels:  wasm, virtual-machine
Neko
The Neko Virtual Machine
Stars: ✭ 447 (+1496.43%)
Mutual labels:  interpreter, virtual-machine
Awesome Wasm Runtimes
A list of webassemby runtimes
Stars: ✭ 490 (+1650%)
Mutual labels:  wasm, virtual-machine
interp
Interpreter experiment. Testing dispatch methods: Switching, Direct/Indirect Threaded Code, Tail-Calls and Inlining
Stars: ✭ 32 (+14.29%)
Mutual labels:  interpreter, wasm
warpy
WebAssembly interpreter in RPython
Stars: ✭ 54 (+92.86%)
Mutual labels:  interpreter, wasm
ocaml-offchain
Fork of WebAssembly reference interpreter with support for generating proofs needed for blockchain verification
Stars: ✭ 42 (+50%)
Mutual labels:  interpreter, wasm
Corium
Corium is a modern scripting language which combines simple, safe and efficient programming.
Stars: ✭ 18 (-35.71%)
Mutual labels:  interpreter, virtual-machine
Webassemblyjs
Toolchain for WebAssembly
Stars: ✭ 566 (+1921.43%)
Mutual labels:  wasm, interpreter
wazm
Web Assembly Zig Machine
Stars: ✭ 54 (+92.86%)
Mutual labels:  interpreter, wasm
lust
A parser, compiler, and virtual machine evaluator for a minimal subset of Lua; written from scratch in Rust.
Stars: ✭ 120 (+328.57%)
Mutual labels:  interpreter, virtual-machine
Ph7
An Embedded Implementation of PHP (C Library)
Stars: ✭ 422 (+1407.14%)
Mutual labels:  interpreter, virtual-machine
Hashlink
A virtual machine for Haxe
Stars: ✭ 523 (+1767.86%)
Mutual labels:  interpreter, virtual-machine

Esta

CircleCI GitHub code size in bytes

Esta is a gradually typed, interpreted language and virtual machine implementation of my own design written in Rust

Interpreted: .est source code is compiled into byte code (simple assembly instructions) and run on the Esta VM.

Gradually Typed: The Esta Interpreter can infer variable type (e.g.):

var a: num = 4;     // Explicitly declare a is an int

var c = a + b;      // Since c and b have unknown types, they adopt a's type

Syntax

Esta's syntax is an LR(1) grammar that takes most of it's ideas from the C-family of languages. It is most similar to JavaScript and Go. Here is an example snippet of code:

fun multiply(a, b) {
    if a <= 0 {
        return b;
    } else {
        return b + multiply(a - 1, b);
    }
}

print(multiply(3, 4) == 12);

Blog Posts

Development

You are welcome to check the project out and try some of the demos provided.

WARNING: Please note that at it's current state, Esta is pre-alpha and is experiences radical, breaking changes daily.

git clone https://github.com/epellis/esta.git
cd esta
cargo build
RUST_LOG=esta=debug cargo run demos/hello.est

You can also measure performance by evaluating the Fibonacci Sequence using a naive recursive O(n^2) algorithm.

cargo bench

Deployment

WIP: Installer coming soon

cargo run --release my_program.est
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].