See full version of this project on https://rubychangelog.com/
This page was last updated on 2025-11-13 via rake readme task
- 🔒 EOL 2028-03-31
- Implementations: MRI 3.4.7
- 🆕
itblock parameter reference - ⚙️ Prism becomes the default parser
- ⚙️ Major YJIT performance improvements with compressed context
- ⚙️ Happy Eyeballs Version 2 (RFC 8305) support in socket library
- ⚙️ Modular GC architecture allowing alternative garbage collector implementations
- ⚙️ Array methods rewritten in Ruby for better performance
- ⚙️ JSON.parse approximately 1.5x faster than json-2.7.x
- 🔒 EOL 2027-03-31
- Implementations: MRI 3.3.10
- ⚙️ Introduced Prism parser as a default gem
- ⚙️ Lrama replaces Bison as parser generator
- ⚙️ Major YJIT performance improvements, introduction of RJIT
- ⚙️ Introduction of M:N thread scheduler
- ⚙️ Several performance improvements in the Garbage Collector
- ⚙️ Enhancements in IRB: advanced irb:rdbg integration; pager support
- 🔒 EOL 2026-03-31
- Implementations: MRI 3.2.9
- ⚙️ WASI based WebAssembly support
- ⚙️ Production-ready YJIT
- ⚙️ Regexp improvements against ReDoS
- ⚙️ IRB improvements (SyntaxSuggest, ErrorHighlight)
- ⚙️ Bundler 2.4 now uses PubGrub resolver instead of Molinillo
- 🔒 EOL 2025-03-31
- Implementations: MRI 3.1.6
- 🆕 debug gem: A new debugger
- 🆕 error_highlight: Fine-grained error location in backtrace
- 🆕 IRB Autocomplete and Documentation Display
- 🔄 Values in Hash literals and keyword arguments can be omitted.
- 🔄 Updates in RBS / TypeProf
- ⚙️ YJIT: New experimental in-process JIT compiler 🧪
- 🔒 EOL 2024-04-23
- Implementations: MRI 3.0.7
- 🆕 Ractor - Actor-model like concurrent abstraction 🧪
- 🆕 Fiber Scheduler for light-weight concurrency 🧪
- 🆕 RBS - a language to describe the structure of Ruby classes
- 🆕 TypeProf - type analysis tool, generates RBS type signatures 🧪
- 🆕
Hash#except - 🔄 Keyword arguments are separated from other arguments
- 🔄 Rightward assignment statement
- 🔄 Reversed (again) order of backtrace 🧪
- 🔄 Endless method definition
def square(x) = x * x - ⚙️ MJIT improvements
- 🔒 EOL 2023-03-31
- Implementations: MRI 2.7.8
- 🆕 Pattern Matching 🧪
- 🔄 REPL improvements
- 🔄 Separation of positional and keyword arguments
- 🔄 Argument forwarding
- ⚙️ Compaction GC
- 🔒 EOL 2022-04-13
- Implementations: MRI 2.6.10
- 🆕 endless ranges
(1..) - 🆕
Enumerable#chain - 🆕 function composition operators
<<, >>toProc - 🔄
#thenalias for#yield_self - ⚙️ JIT compiler
--jit - ⚙️ Bundler is installed as a default gem
- 🔒 EOL 2021-04-06
- Implementations: MRI 2.5.9, JRuby 9.2.0.0
- 🆕
yield_self - 🆕
rescuein blocks - 🆕
Hash#sliceandHash#transform_keys - 🆕
ERB#result_with_hash - 🔄 New
Arrayaliases -#prepend (#unshift)and#append (#push) - 🔄 Pattern argument on
Enumerablemethods - 🔄 Keyword arguments on
Struct.new - 🔄 Removed Top-level constant lookup
- 🔄 Reverse order of backtrace (oldest call first) 🧪
- 🔒 EOL 2020-04-01
- Implementations: MRI 2.4.10
- 🆕
Enumerable#sum - 🆕
Integer#digits - 🆕
Regexp#match?,Regexp#named_captures - 🔄 New constructor
Logger.new(STDOUT, level:, progname:) - 🔄 Float:
#round,#ceil,#floor, and#truncatenow accept a precision - 🗑️ Removed
FixnumandBignumclasses (unified toInteger)
- 🔒 EOL 2019-03-31
- Implementations: MRI 2.3.8, JRuby 9.1.17.0
- 🆕 Safe navigation operator
&. - 🆕 Frozen string literals
- 🆕
Array#dig - 🆕
Hash#fetch_values,Hash#to_proc,Hash#dig - 🆕 'Did you mean?'
- 🔒 EOL 2018-03-31
- 🗑️
callccis obsolete - use Fiber instead - 🗑️
DLhas been removed from stdlib - use Fiddle instead - ⚙️ Incremental GC - fixes performance for 'old' objects
- ⚙️ The introduction of GC for symbols (mortal/immortal)
- 🔒 EOL 2017-03-31
- 🆕 Refinements
- 🆕
Exception#cause- for libraries exceptions - 🆕
RationalandComplexliterals - 🆕 Generational GC - young / old objects
- 🔒 EOL 2016-02-24
- 🆕 Keyword arguments
- 🆕
Module#prepend - 🆕
Enumerator#lazy - 🆕
%ia literal for symbol array
Documentation app is built using mkdocs with mkdocs-material theme.
To rebuild documentation pages from templates/docs/**:
$ rake doc
# Writing to mkdocs-material/docs/versions-latest.md .. Done
# Writing to docs/docs/versions-all.md .. Done
# ...
To start documentation app locally:
$ cd docs
$ mkdocs serve
Deployment to github Pages is set up via github actions using mkdocs gh-deploy command.
To rebuild this README.md from templates/README.md.erb:
$ rake readme
# Writing to README.MD .. Done
$ mdserve README.md
# Server running at http://localhost:3000
- Compare Ruby releases page with ruby_versions.json if there are new Ruby versions.
- update ruby_versions.json with new versions details
- Update latest info about CVE - run
rake fetch:cve - Regenerate all artifacts -
rake doc readme - Verify -
mdserve README.mdand on mkdocs - Commit & publish
