Awesome Series @ Planet Ruby
A collection of awesome Rubies (compilers, interpreters, virtual machines, parsers, doc generators, version managers, etc.)
Note: 💎 stands for the RubyGems page and stands for the GitHub page.
- CRuby, MRI, JRuby, RubySpec, Rubinius, YARV: A Little Bit of Ruby Naming by Noah Gibbs, Appfolio, Dec 2017
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? »
- 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
- 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.
- 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 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
- Opal - , 💎 - source-to-source compiler
- rubys/ruby2js , 💎 - minimal yet extensible Ruby to JavaScript converter
- RubyJS, - JavaScript standard library based on the Ruby core-lib
- 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
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
- Crystal, - Ruby-like syntax; statically-typed with type inference; compiles to machine code; run a ye good olde binary
- Mirah, - formerly known as Duby; compiles to Java bytecode; no (extra) runtime library required
- RubyFlux - a ruby to java static compiler
- RubyMotion - commercial compiler for Apple iOS/Cocoa
- 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.
- 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 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
- RubyBench, - Ruby Releases Benchmarks
- 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 »
- 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.
- 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 QuickRef - Language, Standard Library, Tools
- Learn Ruby in Y Minutes, - A whirlwind tour of Ruby - learnruby.rb
- 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
- 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
- Traveling Ruby, - self-contained, portable Ruby binaries
- Omnibus , 💎 - mini language (that is, domain-specific language (DSL) for installers (that is, binary packages)
- 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 @ Reddit
- Awesome Ruby Events - meetups, conferences, camps, etc. from around the world
- Planet Ruby, - online news reader about all things ruby
Jesse Cooke • Marcel Hlopko • Sota Yamashtia
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!