Merlin is a dynamically and strongly typed programming language written in Rust. Merlin's threading system empowers programmers to write powerful code that leverages concurrency - regardless of whether your system has atomics.
Merlin uses Rust's atomic data types to remove the need for a GIL without sacrificing performance. In addition, it has a register-based interpreter (like CPUs) which has large performance advantages over the Python stack-based interpreter that is simpler and needs to shuffle a lot of memory around.
With this code:
a=1
b=2
a+b
a+b
a+b
Total execution time:
Merlin 1.3 (release): 20 ns
./merlin program.me -t 10000
Python 3.10.6: 54.9 ns
python3 -m timeit -c "a=1;b=2;a+b;a+b;a+b"
Merlin is: 2.75x faster
With this code:
a=1
b=2
a+b
a+b
a+b
a+b
a+b
a+b
Total execution time:
Merlin 1.3 (release): 57.86 ns
./merlin program.me -t 10000
Python 3.10.6: 103 ns
python3 -m timeit -c "a=1;b=2;a+b;a+b;a+b;a+b;a+b;a+b"
Merlin is: 1.78x faster
Merlin 1.3: 2.89x slower for 2x more.
Python 3.10.6: 1.87x slower for 2x more.
To get started with Merlin:
- Download rust (preferably with rustup command line tool)
- Run
make release
- Execute code using the generated binary!