Ahead-of-time (AOT) Compiler designed for Ruby, that just works.
require
and load
, including dynamic ones (e.g. load(my_path + 'x.rb'
)It takes less than 5 minutes to compile any project with Ruby Compiler.
You won't need to modify a single line of code in your application, no matter how you developed it as long as it works in plain Ruby!
First install the prerequisites:
brew install squashfs
Command Line Tools
via Xcode. You can find
this under the menu Xcode -> Preferences -> Downloads
gcc
and the related toolchain containing make
Then,
curl -L https://github.com/metanorma/ruby-packer/releases/download/v0.6.0/rubyc-darwin-x64 > rubyc
chmod +x rubyc
./rubyc --help
First install the prerequisites:
sudo yum install squashfs-tools
sudo apt-get install squashfs-tools
gcc
or clang
Then,
curl -L https://github.com/metanorma/ruby-packer/releases/download/v0.6.0/rubyc-linux-x64 > rubyc
chmod +x rubyc
./rubyc --help
First install the prerequisites:
Then download rubyc-x64.zip,
and this zip file contains only one executable.
Unzip it. Optionally,
rename it to rubyc.exe
and put it under C:\Windows
(or any other directory that is part of PATH
).
Execute rubyc --help
from the command line.
If ENTRANCE was not provided, then a single Ruby interpreter executable will be produced. ENTRANCE can be either a file path, or a "x" string as in bundle exec "x".
rubyc [OPTION]... [ENTRANCE]
-r, --root=DIR The path to the root of the application
-o, --output=FILE The path of the output file
-d, --tmpdir=DIR The directory for temporary files
-c, --clean-tmpdir Cleans temporary files before compiling
--keep-tmpdir Keeps all temporary files that were generated last time
--make-args=ARGS Extra arguments to be passed to make
--nmake-args=ARGS Extra arguments to be passed to nmake
--debug Enable debug mode
-v, --version Prints the version of rubyc and exit
--ruby-version Prints the version of the Ruby runtime and exit
--ruby-api-version Prints the version of the Ruby API and exit
-h, --help Prints this help and exit
rubyc
./a.out (or a.exe on Windows)
git clone --depth 1 https://github.com/pmq20/ruby-compiler
cd ruby-compiler
rubyc bin/rubyc
./a.out (or a.exe on Windows)
git clone --depth 1 https://github.com/pmq20/node-compiler
cd node-compiler
rubyc bin/nodec
./a.out (or a.exe on Windows)
rails new yours
cd yours
rubyc bin/rails
./a.out server (or a.exe server on Windows)
rubyc --gem=bundler bundle
./a.out (or a.exe on Windows)
curl -sSL --create-dirs -o .archives/ruby-2.6.3.tar.gz https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.3.tar.gz
tar xzf .archives/ruby-2.6.3.tar.gz && mv ruby-2.6.3 ruby && git add -f ruby && git commit -m 'Ruby' && git am .patches/ruby/*
# make changes
git add -f ruby
git commit -m 'new changes'
git rebase -i master
# reorder and squash commits as you would like
# 8 is number of commits to extract as patches
git format-patch -8 -o .patches/ruby
git add .patches/ruby
git commit -m 'new changes'
git rebase -i master
# remove all commits except the last one (start from "Ruby" up to the commit with the patch changes)
# it's done