Simplified version of Firestorm targeting C instead of machine code directly.
You can find more details about our approach in this blog post: Lightstorm: minimalistic Ruby compiler.
Depending on the workload, lightstorm can significantly speedup the existing code. Here is an example of speedups observed for aobench benchmark. The compiled version (rightmost) decreases total execution time by nearly ~30%.
You can either use a codespace or a devcontainer. For a local setup, follow the steps below.
You need ninja, cmake (at least 3.28) and llvm 19.
On macOS:
brew install ninja cmake hyperfine llvm@19On Ubuntu:
sudo apt-get install ninja-build cmakeTo install LLVM 19 follow the instructions here.
git clone git@github.com:DragonRuby/lightstorm.git --recursive# On Ubuntu cmake --workflow --preset lightstorm-ubuntu-install # On macOS cmake --workflow --preset lightstorm-macos-install> echo 'puts "Hello, Lightstorm"' > hello.rb > ./install.dir/bin/lightstorm hello.rb -o hello.rb.c > clang hello.rb.c -o hello_lightstorm \ -L./install.dir/lib/ \ -isystem./third_party/mruby/include -isystem./third_party/mruby/build/host/include/ \ -llightstorm_runtime_main -llightstorm_mruby -lm > ./hello_lightstorm Hello, LightstormBuild a test (tests/integration/loads.rb):
> cd build.dir > ninja loads.rb.exe > ../tests/integration/Output/loads.rb.tmp.exe 1 -1 42 -42 1000 -1000 1000000 -1000000 42.0 a string 42 true false main hello [:a_sym]Run integration tests
pip install lit filecheck ninja run-integration-testsRun benchmarks
ninja run-benchmarksLightstorm is released under MIT license.
Licenses from dependencies can be found in open-source-licenses.txt.
