---
title: "The Ruby 3.0 special edition"
publication: "Ruby Weekly"
issue: 533
published_at: "2020-12-29"
canonical_url: "https://rubyweekly.com/issues/533"
---

Ruby 3.0 is here, and it's fantastic. |        

#533 — December 29, 2020 

[Read on the Web](https://rubyweekly.com/issues/533)   

🙂 I hope you enjoyed your Christmas break! I'm still on mine, but because Ruby has such an _interesting_ release schedule, I felt I had to come back for this special issue all about Ruby 3.0 which came out on Christmas Day :-)
__
_Peter Cooper, your editor_  

Ruby Weekly 

![](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60/trkjv8ejcoanwjmmsqig.jpg)  

Ruby 3.0 Released  

[The Official Ruby 3.0 Release Post](https://www.ruby-lang.org/en/news/2020/12/25/ruby-3-0-0-released/) — This is the place to start if you want a quick roundup direct from the core team. We’re going to dig in more throughout the rest of this issue, but the core points are: 

- Ruby 3.0 meets the [3x3 goal](https://engineering.appfolio.com/appfolio-engineering/2015/11/18/ruby-3x3) by being 3x faster than Ruby 2.0 on _some_benchmarks.
- MJIT is more mature though still not considered one size fits all. Some workloads it'll speed up significantly, others (such as Rails apps) it could even slow down.
- Actor-like [Ractors](https://github.com/ruby/ruby/blob/master/doc/ractor.md) have been (experimentally) introduced as a new concurrency abstraction.
- `Fiber#scheduler` brings in some neat 'behind the scenes' improvements for existing concurrency approaches.
- The [RBS](https://developer.squareup.com/blog/the-state-of-ruby-3-typing/) language is a new, official way to describe types used in Ruby programs and [TypeProf](https://github.com/ruby/typeprof/blob/master/doc/demo.md) can infer types from existing Ruby code.
- From my own experience so far, this is the most stable and easy major version upgrade Ruby has ever had. Think more like going from Ruby 2.6→2.7 than the 1.8→1.9-style sprint across a live battlefield! 

Yui Naruse and the Ruby Core Team   

[The Epic Ruby 3.0 Changelog](https://rubyreferences.github.io/rubychanges/3.0.html) — A deeper, code-driven look over the key syntax and feature changes in Ruby 3.0. This is the one resource to skim if you’re short of time because many of these things might catch you out when you upgrade. We were huge fans of the [Ruby 2.7 version](https://rubyreferences.github.io/rubychanges//2.7.html) too. 

Ruby References   

[A List of Ruby 3 Features](https://bigbinary.com/blog/ruby-3-features) — A more quickly digested, high level version of the main announcement, perhaps. Beginners might prefer this. 

Datt Dongare beginner   

[Ruby 3.0.0 Now Available on Heroku](https://devcenter.heroku.com/changelog-items/2004) — Good news if you’re a user of the popular PaaS, though it is considered a ‘preview’ version for now. 

Heroku   

[Ruby 3.0 JIT and Beyond](https://medium.com/@k0kubun/ruby-3-0-jit-and-beyond-4d9404ce33c) — _“Ruby 3.0 JIT is the fastest JIT ever for MRI. However, despite Ruby 3.0’s big improvement in reducing i-cache misses, it’s still not ready for optimizing Rails applications. Stay tuned for Ruby 3.1.”_ 

k0kubun    

Ruby 3.0 in Action  

[Climbing Steep Hills, or Adopting Ruby 3 Types with RBS](https://evilmartians.com/chronicles/climbing-steep-hills-or-adopting-ruby-types) — You’ve heard Ruby 3.0 has some initial support for types by way of RBS, but what does it really _mean_? This is a deep dive into adding Ruby type signatures to existing projects and then using the Steep tool to do the type checking. This is the one post to read if RBS and type checking in Ruby intrigues you. 

Vladimir Dementyev   

[Using Ruby 3.0 to Solve Advent of Code Problems](https://dev.to/baweaver/advent-of-ruby-3-0-day-01-report-repair-4ib0) — [Advent of Code](https://adventofcode.com/2020) is a fantastic annual set of challenges designed to let developers experiment with new techniques, approaches, and languages. Brandon used this year’s challenges as a way to explore Ruby 2.7 and 3.0 features and has the first five days wrapped up so far. 

Brandon Weaver   

[Writing a Ractor-Based Web Server: Part II](https://kirshatrov.com/2020/12/27/ractor-web-server-part-two/) — A follow up to [an article](https://kirshatrov.com/2020/09/08/ruby-ractor-web-server/) we posted a few months ago where Kir created a scalable Web server in a reasonably small amount of Ruby thanks to ractors. Here he looks at the constraints of ractors and how he helped improve the ractor implementation too. 

Kir Shatrov   

[Ruby 3.0 and the New FiberScheduler Interface](http://www.wjwh.eu/posts/2020-12-28-ruby-fiber-scheduler-c-extension.html) — While the Ractor system has got most of the headlines so far, the work on Fiber will arguably have the biggest short term impact on Ruby’s concurrency story. [Developing Fiber Scheduler for Ruby 3](https://coderemixer.com/2020/12/22/ruby-3-fiber-scheduler-evt-dev-log-en/) goes into even more depth. 

Wander Hillen   

[Benchmarking Ruby 2.4 to 3.0 with 3 Real World Libraries](https://gettalong.org/blog/2020/benchmarking-rubies.html) — Namely: HexaPDF (PDF generator), Kramdown (a Markdown converter), and geom2d (2D geometry library). 

Thomas Leitner    

Ruby 3.0 in Tools  

[Sord: Convert YARD Docs to Sorbet RBI and Ruby 3/Steep RBS Files](https://github.com/AaronC81/sord) — Automatically generate RBI and RBS type signature files from the types specified in YARD documentation comments. 

Aaron Christiansen   

[Ruby Next: Transpile Modern Ruby Code to Run on Ruby 2.5 or `mruby`](https://github.com/ruby-next/ruby-next) — Designed to let us code using cutting edge/experimental Ruby features and then transpile that code to run on Ruby 2.5 or `mruby`, say. This week’s [0.11.0 release](https://github.com/ruby-next/ruby-next/releases/tag/v0.11.0) adds support for some Ruby 3.0 features including _find patterns_, _endless methods_ and leading arguments support when doing argument forwarding. 

Vladimir Dementyev   

[rubyapi.org: Another Way to Search and Explore Core Ruby Docs](https://rubyapi.org/) — It’s already serving up Ruby 3.0 documentation. 

Colby Swandale   

[RuboCop 1.7: The Ruby Static Code Analyzer and Formatter](https://github.com/rubocop-hq/rubocop) — This [latest release](https://github.com/rubocop-hq/rubocop/releases/tag/v1.7.0) improves Ruby 3.0 support. 

RuboCop Headquarters    

In other festive news..  

[The 2020 Ruby Advent Calendar](http://planetruby.github.io/gems/) — An article per day about a Ruby gem. We first linked it when it only had a few items but it's now complete and there's lots to look through if you want to discover some new gems to try out. 

Best of Ruby Gems Series   

We'll be back on January 7 with our first normal issue of 2021 – see you then, and we hope you have a happy new year's period :-)        

Curated by [Peter Cooper](https://twitter.com/peterc), [Glenn Goodrich](https://twitter.com/ruprict) and [Cooperpress](https://cooperpress.com/). 

[Change your email address](https://rubyweekly.com/edit_subscription/*|UID|*) or[Stop getting this newsletter](https://rubyweekly.com/leave/*|UID|*) 

© Cooper Press Ltd · Fairfield Enterprise Centre, Louth, LN11 0LS, United Kingdom
