Skip to content

kowal/ruby-changelog

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

129 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Ruby versions changelog

Intro

See full version of this project on https://rubychangelog.com/

This page was last updated on 2025-11-13 via rake readme task

Ruby changelog

Ruby 3.4

  • πŸ”’ EOL 2028-03-31
  • Implementations: MRI 3.4.7
  • πŸ†• it block 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

Ruby 3.3

  • πŸ”’ 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

Ruby 3.2

  • πŸ”’ 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

Ruby 3.1

  • πŸ”’ 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 πŸ§ͺ

Ruby 3.0

  • πŸ”’ 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

Ruby 2.7

  • πŸ”’ EOL 2023-03-31
  • Implementations: MRI 2.7.8
  • πŸ†• Pattern Matching πŸ§ͺ
  • πŸ”„ REPL improvements
  • πŸ”„ Separation of positional and keyword arguments
  • πŸ”„ Argument forwarding
  • βš™οΈ Compaction GC

Ruby 2.6

  • πŸ”’ EOL 2022-04-13
  • Implementations: MRI 2.6.10
  • πŸ†• endless ranges (1..)
  • πŸ†• Enumerable#chain
  • πŸ†• function composition operators <<, >> to Proc
  • πŸ”„ #then alias for #yield_self
  • βš™οΈ JIT compiler --jit
  • βš™οΈ Bundler is installed as a default gem

Ruby 2.5

  • πŸ”’ EOL 2021-04-06
  • Implementations: MRI 2.5.9, JRuby 9.2.0.0
  • πŸ†• yield_self
  • πŸ†• rescue in blocks
  • πŸ†• Hash#slice and Hash#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) πŸ§ͺ

Ruby 2.4

  • πŸ”’ 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 and Bignum classes (unified to Integer)

Ruby 2.3

  • πŸ”’ 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?'

Ruby 2.2

  • πŸ”’ 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)

Ruby 2.1

  • πŸ”’ EOL 2017-03-31
  • πŸ†• Refinements
  • πŸ†• Exception#cause - for libraries exceptions
  • πŸ†• Rational and Complex literals
  • πŸ†• Generational GC - young / old objects

Ruby 2.0

  • πŸ”’ EOL 2016-02-24
  • πŸ†• Keyword arguments
  • πŸ†• Module#prepend
  • πŸ†• Enumerator#lazy
  • πŸ†• %i a literal for symbol array

Development

Documentation app

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

Open http://localhost:8000/

Deployment

Deployment to github Pages is set up via github actions using mkdocs gh-deploy command.

Readme

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

Open http://localhost:3000/

New Ruby version?

  1. Compare Ruby releases page with ruby_versions.json if there are new Ruby versions.
    • update ruby_versions.json with new versions details
  2. Update latest info about CVE - run rake fetch:cve
  3. Regenerate all artifacts - rake doc readme
  4. Verify - mdserve README.md and on mkdocs
  5. Commit & publish

Contributors