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 stands for the GitHub page.
What are Rubies?
- CRuby, MRI, JRuby, RubySpec, Rubinius, YARV: A Little Bit of Ruby Naming by Noah Gibbs, Appfolio, Dec 2017
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, - also known as Matz's Ruby Interpreter (MRI) or CRuby; using the YARV (Yet another Ruby VM) since version 1.9.
- Fullstaq Ruby, - an MRI-based Ruby distribution (fully open source) that's optimized for servers; compiled with the
Jemalloc
andmalloc_trim
patches, allowing lower memory usage and higher performance; by Hongli Lai (Phusion) et al
- Fullstaq Ruby, - an MRI-based Ruby distribution (fully open source) that's optimized for servers; compiled with the
- JRuby, - Ruby on the Java Virtual Machine (JVM)
- TruffleRuby - a high performance Ruby built with the Truffle Language Kit on the GraalVM
- mruby, - lightweight Ruby; designed for linking and embedding within your application
- mruby/c - 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 - , π - 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, by Ryan Lopopolo et al - a ruby "wrapper" made with rust that compiles to WebAssembly; by default uses mruby as "backend"
- ruruby - 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 - small, smart, secure, safe, solid & sound (s6) ruby - the ruby programming language for contract / transaction scripts on the blockchain world computer
- Topaz, - Ruby coded in Python on top of RPython (the toolchain that powers PyPy)
- Rubinius (rbx), - designed for concurrency; uses a low-pause generational garbage collector; core library and tools coded in Ruby
- GoRuby - Ruby coded in Go
- tinyrb, - a tiny subset of Ruby with a Lua'esc Virtual Machine (VM)
- fruby - Ruby en Français (French) e.g. classe, défini, si, sinonsi, vrai, faux, fin, etc.
Discontinued / Rest In Peace (R.I.P.) Rubies
- IronRuby, - a ruby interpreter built on top of the Microsoft .NET Common Language Runtime (CLR)
- MacRuby - a ruby interpreter built on top of Apple's Objective-C/Cocoa library
- MagLev, - a ruby interpreter built on top of the GemStone/S (64-bit) Virtual Machine (VM)
- Ruby Enterprise Edition (REE) - builds on top of MRI Rubies, versions 1.8.X and later
- SmallRuby @ ΔeskΓ© vysokΓ© uΔenΓ technickΓ© v Praze (ΔVUT) - a ruby interpreter built on top of the Smalltalk/X virtual machine
- Diamondback Ruby (DRuby) @ University of Maryland (UMD) - adds gradual typing (with type inference and type annotations) to Ruby
- CRuby + Eclipse OMR Preview / Pilot - an (experimental) ruby virtual machine (vm) built with the Eclipse OMR (open multi-language runtime kit / components)
- Cardinal - a ruby compiler for the Parrot virtual machine (related to Perl 6)
Ruby-to-Ruby
- Ruby Next , π - 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 - 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 - , π - source-to-source compiler
- rubys/ruby2js , π - minimal yet extensible Ruby to JavaScript converter
- RubyJS, - JavaScript standard library based on the Ruby core-lib
Ruby-to-WebAssembly (WASM)
- Prism , π - 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, - 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 - lets you use ruby in rust or rust in ruby; the missing tie between ruby and rust
- Ruru - 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, - Ruby-like syntax; statically-typed with type inference; compiles to machine code; run a ye good olde binary
Ruby-to-Java
- Mirah, - formerly known as Duby; compiles to Java bytecode; no (extra) runtime library required
- RubyFlux - 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, - Ruby enVironment Manager; 27,000 lines of shell scripts to manage your rubies (overwrites your cd)
- rbenv - intercepts Ruby commands using shim executables added into your $PATH
- chruby - changes the current Ruby
- uru - multi-platform Ruby environment manager written in Go; you can run it on Windows without Cygwin
- asdf-vm - extendable version manager with support for Ruby and many other languages
Ruby Language Research, Papers & Books
- Ruby under a Microscope - An Illustrated Guide to Ruby Internals by Pat Shaughnessy; No Starch Press; 360 pages; Nov 2013
- Ruby Performance Optimization: Why Ruby Is Slow, and How to Fix It by Alexander Dymo; The Pragmatic Programmers
- The Ruby Bibliography, A list of Ruby research theses and papers.
- Streem Lang - prototype of stream based programming language by Yukihiro Matsumoto
Ruby Benchmarks & Tests
- RubyBench, - Ruby Releases Benchmarks
Ruby Type Annotations / Signatures
- Official Ruby::Signature - official home of the Ruby Type Signature language (
.rbi
); incl. parser, the syntax and the semantics for type signatures (typesigs) - Steep , π - gradual typing for ruby
- Sorbet , π - a fast, powerful typechecker designed for Ruby from Stripe
- More Sorbet Projects:
- sorbet-typed - a central repository for sharing type definitions for ruby gems
- sorbet-rails - a set of tools to make sorbet work with rails seamlessly
- Sord - a tool to generate Ruby Signature language (
.rbi
) files from YARD documentation - Parlour - a versatile Ruby Signature language (
.rbi
) generator and plugin system - sorbet-progress - measure your progress as you adopt sorbet, stay motivated!
- More Sorbet Projects:
- Contracts for Ruby (contracts.ruby) , π - a contract is one line of code that you write above a method definition; it validates the arguments to the method, and validates the return value of the method
- Rubype (Ruby+Type) , π - gradual type checking for Ruby
- Typedocs , π - method type annotations for Ruby
- Typecheck , π - type checking for Ruby methods
- RDL , π - a lightweight system for adding types, type checking, and contracts to Ruby. In RDL, types can be used to decorate methods
For more see the Awesome Types page Β»
Ruby Stdlib (Core) Extensions / Refinements
- Active Support , π
- Zucker , π - collection of Ruby refinements; lots of small refinements to sweeten your Ruby code
- Powerpack , π by Bozhidar Batsov et al - collection of Ruby core extensions for array, enumerable, hash, numeric, string, etc.
- PowerCore by Arturo Herrero et al - collection of Ruby core extensions for array, date, fixnum, hash, kernel, object, proc, string, etc.
Ruby Library Collections
- SciRuby - - tools for scientific computing in Ruby e.g. nmatrix, statsample, etc.
- Functional Ruby , π - adding functional programming tools to Ruby; inspired by Erlang, Clojure, Haskell, and Functional Java
- Concurrent Ruby , π - 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 QuickRef - Language, Standard Library, Tools
- Learn Ruby in Y Minutes, - A whirlwind tour of Ruby - learnruby.rb
Ruby Parser / Unparser
- seattlerb/ruby_parser (RP) , π - 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 , π - 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, , π - Yay! A Ruby Documentation Tool
- SDoc , π - RDoc generator to build searchable HTML documentation for Ruby code
- RDoc , π - RDoc produces HTML and online documentation for Ruby code
Ruby Linter / Code Checker / Static Code Analyzer
- RuboCop , π - a Ruby static code analyzer
- reek , π - code smell detector for Ruby
- RubyCritic , π
Ruby Binary Packagers
- Traveling Ruby, - self-contained, portable Ruby binaries
- Omnibus , π - mini language (that is, domain-specific language (DSL) for installers (that is, binary packages)
Ruby Gems / Libraries
- RubyGems, - 100,000+ Gems
- Awesome Ruby
- Awesome ActiveRecord
- Awesome Jekyll @ Planet Jekyll
- Awesome Markdown
- Ruby Gem of the Week Series @ Planet Ruby,
- Trending Ruby Projects @ GitHub - Today, This Week, This Month
- Alltime Starred Ruby Projects @ GitHub
- Ruby Toolbox
- Gems @ Ruby Bookmarks
Ruby Community (Events, Questions & Answers, Announcements, etc.)
- Ruby @ Reddit
- Awesome Ruby Events - meetups, conferences, camps, etc. from around the world
- Planet Ruby, - online news reader about all things ruby
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!