Feature #21972
openAdd Date.birthday and Date.age to track Ruby's milestones
Description
Since its inception in 1993, Ruby has grown beyond a mere programming language to become a rich culture beloved by developers worldwide. However, the standard date library surprisingly lacks a formal interface to commemorate Ruby's own historical milestones.
The fact that developers cannot programmatically reference Ruby’s heritage is a missed opportunity to foster affection and respect for the language's identity. To rectify this historical oversight, I propose adding the following methods to reference Ruby's key anniversaries and calculate the elapsed years.
New Features¶
-
Date.birthday(version = nil)
Returns the "birthday" of significant moments in Ruby's history.-
nil(default): 1993-02-24 (The day the name "Ruby" was decided). -
0.95: 1995-12-21 (The first public release date). -
1.0: 1996-12-25 (The first stable release date).
-
-
Date.age(version = nil)
Calculates the current age (in full years) based on today's date and the specified milestone.-
Date.age: Years since the name "Ruby" was born. -
Date.age(0.95): Years since Ruby was first introduced to the public as OSS. -
Date.age(1.0): Years since Ruby began its journey as a stable language.
-
Usage Example¶
# Check the "age" of each edition
puts "Name age: #{Date.age}" # => 33 (as of 2026)
puts "OSS age: #{Date.age(0.95)}" # => 30
puts "Stable: #{Date.age(1.0)}" # => 29
# Perform a special action on a specific anniversary
if Date.today == Date.birthday(1.0)
celebrate_stable_anniversary!
end
Implementation and Testing¶
The attached patch (birthday_and_age.patch) includes the implementation of these methods along with a rigorous test suite (test/date/test_date_birthday.rb).
The tests cover argument dispatching, ArgumentError for invalid inputs, and edge cases for age calculation (e.g., boundaries before and after the actual birthday), ensuring production-level quality.
Equipping Ruby with the intelligence to reflect upon its own origins is a vital step toward the next 30 or 40 years of its evolution.
(Note: This proposal was submitted on a special day that encourages looking at our history with both deep respect and a touch of creative imagination, as is traditional for such a significant date in the calendar.)
Files