See full version of this project on https://rubychangelog.com/
This page was last updated on 2024-07-06 via rake readme
task
- 🔒 EOL 2027-03-31
- Implementations: MRI 3.3.3
- ⚙️ 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.4
- ⚙️ 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.7
- 🆕 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
- 🔄
#then
alias 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
- 🆕
rescue
in blocks - 🆕
Hash#slice
andHash#transform_keys
- 🆕
ERB#result_with_hash
- 🔄 New
Array
aliases -#prepend (#unshift)
and#append (#push)
- 🔄 Pattern argument on
Enumerable
methods - 🔄 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#truncate
now accept a precision - 🗑️ Removed
Fixnum
andBignum
classes (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
- 🗑️
callcc
is obsolete - use Fiber instead - 🗑️
DL
has 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 - 🆕
Rational
andComplex
literals - 🆕 Generational GC - young / old objects
- 🔒 EOL 2016-02-24
- 🆕 Keyword arguments
- 🆕
Module#prepend
- 🆕
Enumerator#lazy
- 🆕
%i
a 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
$ yield
# =* Yield is serving your markdown at http://localhost:4000/
- 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 -
bundle exec yield
and on mkdocs - Commit & publish