I realized today I never described how JRuby has been maintaining its
copy of the Ruby stdlib. This email will do that.

JRuby uses MRI's stdlib almost completely intact, but there are some
differences. For example:

* timeout.rb is replaced with a native version that uses timed
executor pools from the JDK
* weakref.rb is replaced with a native version that uses JVM weak references
* rdoc/ri has modifications to support printing info on Java classes/methods
* IRB has modifications to allow running from within an archive
* 1.9 mode uses a copy of RubyGems shared with 1.8 (and will be at
RubyGems 1.4.1 for JRuby 1.6)

...and so on. In order to maintain these differences but still stay in
sync with upstream changes, we opted to maintain a "fork" of the 1.8.7
and 1.9.2 stdlib directly in-place in a "fork" of MRI's github repo:

https://github.com/jruby/ruby

This is forked from ruby/ruby, and has the following two branches of interest:

https://github.com/jruby/ruby/tree/jruby-ruby_1_8_7
https://github.com/jruby/ruby/tree/jruby-ruby_1_9_2

Rather than maintaining our own copy of stdlib within the JRuby
repository, we instead overlay our changes directly atop MRI's layout
in an easily-mergeable repository. Then we use a script to aggregate
the modified stdlib files into JRuby's stdlib location.

If at any time ruby-core (or other curious) folks would like to see
what changes we have made to our copy of stdlib, these branches should
be directly comparable to those in github.com/ruby/ruby for the same
version numbers. Please feel free to ask us about any changes we have
made.

Note: Not all files have been simply modified or removed; some, like
generator.rb, have been completely rewritten with JRuby's VM
requirements in mind. If you see something missing and want to know
why, just ask.

- Charlie