Permalink
Switch branches/tags
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
207 lines (123 sloc) 12.9 KB

Awesome Series @ Planet Ruby

Rubies (Virtual Machines, Compilers, ...)ActiveRecordWebframeworks (Micro, Macro, APIs, ...)Events (Conferences, Camps, Meetups, ...)Blogs (News, Opinions, Podcasts, ...)

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
    • 2017: 2.5 (Dec/24)
    • 2016: 2.4 (Dec/24)
    • 2015: 2.3 (Dec/24)
    • 2014: 2.2 (Dec/24)
  • JRuby, :octocat: - Ruby on the Java Virtual Machine (JVM)
    • 2016: v9.1.0.0
    • 2014: v1.7.x
  • Rubinius (rbx), :octocat: - designed for concurrency; uses a low-pause generational garbage collector; core library and tools coded in Ruby
  • TruffleRuby, :octocat: - A high performance Ruby on top of Truffle and Graal
  • mruby, :octocat: - lightweight Ruby; designed for linking and embedding within your application
  • Opal - :octocat:, 💎 - source-to-source ruby-to-javascript compiler

Minor / Upcoming Rubies

  • Topaz, :octocat: - Ruby coded in Python on top of RPython (the toolchain that powers PyPy)
  • GoRuby :octocat: - Ruby coded in Go
  • MagLev, :octocat: - a ruby interpreter built on top of the GemStone/S (64-bit) Virtual Machine (VM); note - to run MagLev you need a commercial GemStone/S Server (license)
  • tinyrb, :octocat: - a tiny subset of Ruby with a Lua'esc Virtual Machine (VM)
  • fruby :octocat: - Ruby in Français (French) e.g. classe, défini, si, sinonsi, vrai, faux, fin, etc.

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

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-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

Ruby Language Research, Papers & Books

Ruby Benchmarks & Tests

Ruby Type Annotations / Signatures

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!