This page is for people who want to send a patch. If you want to report a bug, see HowToReport.
Only Ruby trunk (2.7.0dev as of mid-2019) may accept new features. 1.9/2.0/2.1/2.2/2.3/2.4/2.5/2.6 won't accept new features, and maintenance branches like 2.6 also won't merge new features.
Search previous discussions in ruby-core.
You must agree that your code will be distributed and/or modified and so on under Ruby's License. The license may change in the future, you must join the discussion if you don't agree the change.
Usually it should be for trunk of Ruby. (except when it is a bugfix and the bug exists only in a maintenance branch)
Format must be a unified diff (
diff -pu is prefered.
svn diff and
git diff are also ok).
Don't introduce cosmetic changes (follow original coding style of the code).
Don't mix different changes in one issue/patch/commit.
Benchmark scripts should be in separate files under
benchmark directory, commit logs are not for benchmarking.
Make a redmine ticket as Bug or Feature, and it will be forwarded to ruby-core (or ruby-dev).
Pull request to https://github.com/ruby/ruby is acceptable for tiny fixes. But pull requests which need discussions will be ignored unless you create a redmine ticket.
A ticket may be ignored by accident (because reviewers are busy, and so on). In this case, ping the ticket.
You may also add your ticket to the topics of an upcoming Developers Meeting under "From non-attendees" (see "Developer Meetings" on the wiki main page).
You must agree that your patch will be licensed under the Ruby License, and when we change the license we will assume that you agreed with the change unless you object to the changes in time.