Skip to content
Permalink
master
Switch branches/tags
Go to file
 
 
Cannot retrieve contributors at this time

Awesome Series @ Planet Ruby

Rubies

A collection of awesome Rubies (compilers, interpreters, virtual machines, parsers, doc generators, version managers, etc.)

Contributions welcome. Anything missing? Send in a pull request. Thanks.

Note: 💎 stands for the RubyGems page and :octocat: stands for the GitHub page.

What are Rubies?

3x3 News

3x3 => Ruby 3 will be 3 times faster in 2020

Ruby 3 - the next major update of ruby (planed for 2020) will be 3 times (3x) faster than Ruby 2.

Note: The baseline for Ruby3x3 is 2.0 so all the improvements in 2.x will count toward the 3x goal.

Find out more @ Ruby 3x3 - Ruby 3 Will Be 3 Times Faster - What's News? »

Major Rubies

  • Ruby, :octocat: - also known as Matz's Ruby Interpreter (MRI) or CRuby; using the YARV (Yet another Ruby VM) since version 1.9.
    • Fullstaq Ruby, :octocat: - an MRI-based Ruby distribution (fully open source) that's optimized for servers; compiled with the Jemalloc and malloc_trim patches, allowing lower memory usage and higher performance; by Hongli Lai (Phusion) et al
  • JRuby, :octocat: - Ruby on the Java Virtual Machine (JVM)
  • TruffleRuby :octocat: - a high performance Ruby built with the Truffle Language Kit on the GraalVM
  • mruby, :octocat: - lightweight Ruby; designed for linking and embedding within your application
    • mruby/c :octocat: - alternative mruby designed for one-chip microprocessors and optimized for small size rather than execution speed e.g. memory size < 40 KiB vs. < 400 KiB
  • Opal - :octocat:, 💎 - source-to-source ruby-to-javascript compiler
  • DragonRuby ($40+) - a (cross-platform) commercial game toolkit / toolchain (based on a newer variant of the secret closed-source RubyMotion) for Nintendo Switch, XBOX One, PlayStation 4 and others; by Ryan C. Gordon, Amir Rajan, Aaron Lasseigne et al

Minor / Upcoming Rubies

  • Artichoke Ruby, :octocat: by Ryan Lopopolo et al - a ruby "wrapper" made with rust that compiles to WebAssembly; by default uses mruby as "backend"
  • ruruby :octocat: - a ruby made with rust (w/ hand-written parser); built from scratch in "100% pure rust", that is, no dependency on any other ruby engine in C such as CRuby (MRI), mruby, etc.
  • sruby :octocat: - small, smart, secure, safe, solid & sound (s6) ruby - the ruby programming language for contract / transaction scripts on the blockchain world computer
  • Topaz, :octocat: - Ruby coded in Python on top of RPython (the toolchain that powers PyPy)
  • Rubinius (rbx), :octocat: - designed for concurrency; uses a low-pause generational garbage collector; core library and tools coded in Ruby
  • GoRuby :octocat: - Ruby coded in Go
  • tinyrb, :octocat: - a tiny subset of Ruby with a Lua'esc Virtual Machine (VM)
  • fruby :octocat: - Ruby en Français (French) e.g. classe, défini, si, sinonsi, vrai, faux, fin, etc.

Discontinued / Rest In Peace (R.I.P.) Rubies

Ruby-to-Ruby

  • Ruby Next :octocat:, 💎 - a ruby-to-ruby-compiler - "transpiler" - and a collection of polyfills for supporting the latest and upcoming ruby features (APIs and syntax) in older versions and alternate rubies
  • pragmas :octocat: - a ruby-to-ruby "search and replace" library that lets you use your own language syntax pragmas - turn on the future today or add your own ideas for easy (re)use for everyone - let's evolve the ruby language together by experimenting in the wild in a pragma(tic) way - early alpha

Ruby-to-JavaScript

  • Opal - :octocat:, 💎 - source-to-source compiler
  • rubys/ruby2js :octocat:, 💎 - minimal yet extensible Ruby to JavaScript converter
  • RubyJS, :octocat: - JavaScript standard library based on the Ruby core-lib

Ruby-to-WebAssembly (WASM)

  • Prism :octocat:, 💎 - a framework for building client-side web apps with ruby and web assembly (wasm); uses mruby and emscripten to compile ruby code to web assembly that runs inside the browser; incl. a runtime for working with the browser's document object model (DOM) and events - early alpha

Ruby <3 Rust

Native Ruby Extensions with Rust

  • Helix, :octocat: - lets you write ruby classes in rust without having to write the glue code yourself; offload performance-critical code to rust without leaving your ruby workflow
  • Rutie :octocat: - lets you use ruby in rust or rust in ruby; the missing tie between ruby and rust
  • Ruru :octocat: - rust + ruby (ruru); replace your ruby code with rust, method by method, class by class; as simple as ruby, as efficient as rust

Ruby-to-C (LLVM)

  • Crystal, :octocat: - Ruby-like syntax; statically-typed with type inference; compiles to machine code; run a ye good olde binary

Ruby-to-Java

  • Mirah, :octocat: - formerly known as Duby; compiles to Java bytecode; no (extra) runtime library required
  • RubyFlux :octocat: - a ruby to java static compiler

Ruby-to-Objective-C/Cocoa

  • RubyMotion - commercial compiler for Apple iOS/Cocoa

Ruby-to-Erlang (†)

  • Elixir - Ruby-inspired syntax; a dynamic, functional language for the Erlang VM compiles to BEAM instructions (bytecode)

(†): Note: Elixir is not a Ruby-to-Erlang compiler. Elixir started off with a Ruby-inspired syntax. The language semantics differ e.g. dynamic pure functional vs dynamic general pragmatic "multi-paradigm" language.

Ruby Version Manager

  • rvm, :octocat: - Ruby enVironment Manager; 27,000 lines of shell scripts to manage your rubies (overwrites your cd)
  • rbenv :octocat: - intercepts Ruby commands using shim executables added into your $PATH
  • chruby :octocat: - changes the current Ruby
  • uru - multi-platform Ruby environment manager written in Go; you can run it on Windows without Cygwin
  • asdf-vm :octocat: - extendable version manager with support for Ruby and many other languages

Ruby Language Research, Papers & Books

Ruby Benchmarks & Tests

Ruby Type Annotations / Signatures

For more see the Awesome Types page »

Ruby Stdlib (Core) Extensions / Refinements

Ruby Library Collections

  • SciRuby - :octocat: - tools for scientific computing in Ruby e.g. nmatrix, statsample, etc.
  • Functional Ruby :octocat:, 💎 - adding functional programming tools to Ruby; inspired by Erlang, Clojure, Haskell, and Functional Java
  • Concurrent Ruby :octocat:, 💎 - modern concurrency tools including agents, futures, promises, thread pools, supervisors, and more; inspired by Erlang, Clojure, Scala, Go, Java, JavaScript, and classic concurrency patterns

Ruby Quick References / Cheat Sheets

Ruby Parser / Unparser

  • seattlerb/ruby_parser (RP) :octocat:, 💎 - a ruby parser written in ruby (using racc -- which does by default use a C extension). RP's output is the same as ParseTree's output: s-expressions using ruby's arrays and base types
  • whitequark/parser :octocat:, 💎 - a ruby parser written in ruby; also includes an "unparser" to produce equivalent source code from the parser's Abstract Syntax Tree (AST)s

Ruby Documentation Generators

  • YARD, :octocat:, 💎 - Yay! A Ruby Documentation Tool
  • SDoc :octocat:, 💎 - RDoc generator to build searchable HTML documentation for Ruby code
  • RDoc :octocat:, 💎 - RDoc produces HTML and online documentation for Ruby code

Ruby Linter / Code Checker / Static Code Analyzer

Ruby Binary Packagers

  • Traveling Ruby, :octocat: - self-contained, portable Ruby binaries
  • Omnibus :octocat:, 💎 - mini language (that is, domain-specific language (DSL) for installers (that is, binary packages)

Ruby Gems / Libraries

Ruby Community (Events, Questions & Answers, Announcements, etc.)

Thanks

Jesse Cooke • Marcel Hlopko • Sota Yamashtia

Meta

License

The awesome list is dedicated to the public domain. Use it as you please with no restrictions whatsoever.

Questions? Comments?

Send them along to the ruby-talk mailing list. Thanks!