Find me on Codeberg

A Ruby to binary experiment

Now over, results in news.

What

RubyX compiles Ruby code to binary.
In 100% pure Ruby.

The goal here is to prove that dynamic languages do not have to be slow.
Only interpretation is slow, but when Ruby is compiled to binary, it can be really fast.

How fast (X times), will eventually depend on the community. The RubyX approach works, but to create an MRI compatible Ruby will take many more man-years than I have.

RubyX is here to empower you, to make your Ruby shine as much as you like.

Since RubyX is written in Ruby, anyone can easily join, and the project is very open to newcomers. In time the idea is to implement a democratic version of open source, as an alternative the current "benevolent dictator" model.

Contrary to what many newcomers think, ruby-x is also technically easy to join. In the end it is just Ruby, and only a very small percent of code is low level. We have a list of issues in GitHub for beginners.

Status

The RubyX compiler is working (ie creates binaries), and the architecture has been refined over several years.

A substantial part of the Ruby language has been implemented:

Upcoming work

Obviouly cancelled now (see news).

But there is still a lot of work, here are some of the next few topics

  • Inlining and static memory analysis
  • Start stdlib with String and files
  • Dynamic Memory management
There are also many small things anybody can start with.

Docs

The short introduction is under the architecture menu.

The presentation for GrillRb is more detailed than the previous unconf Hamburg one. But a 20 minute video was made in Hamburg and can be found on youtube.

To get to know the system, there is also an interpreter and a basic visual debugger.

The about section has some info of when and how this started. If you feel like contributing read this or write a mail to the group.

News

Last but not least, I try to get recent developments down on paper when they are still fresh. Though not much has happened lately, as we bought this

Moving on (2023-01-08)

Lessons learned (2021-11-18)

Register allocation in a ruby compiler (2020-03-22)