= Backports --- History
== Version 3.6.0 - February 14th, 2014
* Additional features of 2.1.0
* Bignum#bit_length
* Fixnum#bit_length
* Module#include (now public)
== Version 3.5.0 - February 3rd, 2014
* Additional features of 2.0.0
* Range#size
== Version 3.4.0 - December 29th, 2013
* Additional features of 2.1.0
* Array#to_h, Enumerable#to_h
== Version 3.3.0 - April 3rd, 2013
* Moved `Proc#yield` & `Hash#key` from 1.8.7 to 1.9.1
== Version 3.2.0 - April 2nd, 2013
* Moved `Dir.mktmpdir` to the stdlib 'tmpdir' for Ruby 1.8.7
* Removed `returning` as it is no longer part of Rails.
== Version 3.1.0 - March 5th, 2013
* Backports can now be loaded separately!
* Small tweaks and fixes for many methods to pass more RubySpecs
== Version 3.0.0 - February 24th, 2013
* Features of 2.0.0 are now required when requiring 'backports'.
* Additional features of 2.0.0
* Struct#to_h, NilClass#to_h, Hash#to_h
* Hash#default_proc = nil
* OpenStruct lib
* 1.8.7's Enumerator#with_index (it wasn't in the 1.8.7 NEWS file...)
== Version 2.8.0 - February 3rd, 2013
* Added some features of 2.0.0 (must be required explicitly until official release):
* Array#bsearch
* Range#bsearch
== Version 2.7.0 - January 14th, 2013
* Added some features of 2.0.0 (must be required explicitly until official release):
* Enumerable#lazy
* Enumerator::Lazy
== Version 2.6.0 - May 29th, 2012
* Removed Enumerable#join
== Version 2.5.0 - March 25th, 2012
* Added some features of 1.9.3:
* IO::NULL
* IO#advise
* String#byteslice
* String#prepend
== Version 2.4.0 - March 24th, 2012
* Add backporting for libraries
* Bring libraries up to date:
* Matrix
* Prime
* Set
* Added some features of 1.9.3:
* IO.write, IO.binwrite
* Add forcing backports (must be required explicitly):
* Hash#select (returns a Hash instead of an Array)
* Enumerable / Array#map (returns an enumerator when called without a block)
* String#length, size (for UTF-8 support)
== Version 2.3.0 - May 13th, 2011
* Added Enumerator::Yielder#<<
== Version 2.2.0 - May 13th, 2011
* Ruby 1.8.8 was officially cancelled; code was moved to Ruby 1.9.1 and README updated.
* "".ord now raises an error.
== Version 2.1.0 - April 16th, 2011
* Proc#curry, #lambda (thanks Konstantine Haase)
== Version 2.0.0 - December 5th, 2010
Change of major version because of two small changes that are not quite compatible and because the minor version was getting quite high!
* Remove attempt at faking the new method missing. Unless you used `respond_to_missing` *and* `method(:some_method_handled_with_method_missing)`, you won't see a difference, except better performance (see issue #32) and this fixes some errors (see issue #34)
* Change behavior of array.flatten(0) to match Ruby 1.9 (i.e. return a dup of array, instead of array itself)
== Version 1.18.0 - June 19th, 2010
* Added some features of 1.9.1:
* Math#log2, Math#log with base
* Also fixed Enumerator#each in 1.8.6.
== Version 1.17.0 - May 17th, 2010
* Added some features of 1.9.2:
* Array#repeated_combination, #repeated_permutation
== Version 1.16.2 - April 11th, 2010
* Added some features of 1.9.2:
* Array#uniq, #uniq! (with block)
* Array#product (with block)
* Dir.home
* Hash#keep_if, select!
* Random (new class)
== Version 1.15.0 - March 23rd, 2010
* Added a features of 1.9.2:
* Object#singleton_class
== Version 1.14.0 - March 3rd, 2010
* Added some features of 1.9.2:
* Array#rotate, rotate!
* Array#keep_if, select!
* Array#sort_by!
* Enumerable#join
* Enumerable#slice_before
* Float::INFINITY, NAN
* MatchData#==
== Version 1.13.0 - January 20th, 2010
* Missing for 1.8.7 were
* Array#permutation
* Hash#hash (was only inherited)
* Hash#eql? (was only inherited)
== Version 1.12.0 - December 4th, 2009
* Finer grain includes (see README)
require "backports/1.9" # requires all ruby backports
require "backports/1.9.1" # requires all ruby backports up to 1.9.1 (but not 1.9.2)
* Backported all builtin methods of 1.8.8 (most of which where moved from the 1.9 backports)
* Refreshed README
== Version 1.11.0 - November 4th, 2009
* Added Enumerable#flat_map / collect_concat (Ruby 1.9)
* Added Object#public_send (Ruby 1.9)
* Added Object#public_method (Ruby 1.9)
* bug fixes
== Version 1.10.0 - September 29th, 2009
* Added Enumerable#chunk (Ruby 1.9)
* Added Kernel#respond_to_missing? (Ruby 1.9)
* Completed Process.exec (Ruby 1.8.7)
== Version 1.9.0 - September 4th, 2009
* In Ruby 1.9, most class methods of File accept filenames as String, or convertible via #to_str or #to_path.
File#to_path is also an alias to File#path. These have been backported.
* File.binread (actually IO.binread)
* BasicObject available via "require 'backports/basic_object"
== Version 1.8.4 - September 3rd, 2009
Added Dir.mktmpdir for older version of 1.8.6
== Version 1.8.1 - September 1st, 2009
Added the alias String#lines (Ruby 1.8.7)
== Version 1.8 - August 30, 2009
Backports can be required selectively:
* backports/1.8.7
* backports/1.9 (which include 1.8.7)
* rails
== Version 1.8 - August 30, 2009
Backports can be required selectively:
* backports/1.8.7
* backports/1.9 (which include 1.8.7)
* rails
== Version 1.7.1 - August 20, 2009
Enumerable#take and Enumerable#first(n) are now returning as soon as possible. Previously, #each was yielding one element too many. See redmine issue #1554.
== Version 1.7 - May 27, 2009
Porting all 1.8.7 features to rubinius was quite enlightening (http://blog.marc-andre.ca/2009/05/schizo-ruby-puzzle.html ).
Many improvements were made to be consistent with MRI, e.g. converting arguments using to_int if needed, etc...
The changes are now reflected in 'backports'.
Some IO and ARGF methods were missing and are now complete.
== Version 1.6.6 - April 30, 2009
Important bug fix. String#gsub is left alone until I find a good way to modify it.
== Version 1.6 - April 29, 2009
Completed backport to 1.8.7.
* Array
* extract_options!
* Binding
* +eval+
* Dir
* +each+, +foreach+
* Enumerator
* +new+
* +with_object+
* +next+, +rewind+
* Hash
* Optional block for delete_if, each, each_key, each_pair, each_value, reject!, select (and ENV)
* Integer
* moved stuff out of Fixnum
* Optional block for +downto+, +times+, +upto+
* IO
* Optional block for +each+, +each_line+, +each_byte+, +foreach+ (and ARGF)
* Kernel
* +loop+, +StopIteration+
* +__method__+, +__callee__+
* Method
* +name+, +owner+, +receiver+
* Module
* +class_exec+, +module_exec+
* Numeric
* +step+
* Object
* +define_singleton_method+
* +instance_exec+
* ObjectSpace
* +each_object+
* Range
* Optional block for +each+, +step+
* Regexp
* +union+
* String
* +try_convert+
* ascii_only?
* +bytesize+
* +chr+
* +clear+
* +codepoints+, +each_codepoint+
* +stringify_keys+, +stringify_keys!+
* +each+, +each_line+, +each_byte+
* +gsub+
* +upto+
* Struct
* +each+, +each_pair+
* Symbol
* <=>, +casecmp+
* +capitalize+, +downcase+, +next+, +succ+, +swapcase+, +upcase+
* =~, [], empty?, length, match, size
* UnboundMethod
* +name+, +owner+
== Version 1.5 - April 24, 2009
* Array (completed)
* +combination+
* +try_convert+
* Optional block for collect!, :map!, :each, :each_index, :reject, :reject!, :delete_if
* +pop+, +shift+
* +product+
* Fixnum (completed)
* +div+, +fdiv+
* +succ+
* +magnitude+
* Enumerable (completed)
* +each_with_object+
* +inject+
* +max_by+, +min_by+, +minmax+, +minmax_by+
* +reduce+
* +to_a+
== Version 1.4 - April 21, 2009
* String
* +rpartition+
* Proc
* +yield+
== Version 1.3 - April 17, 2009
* Enumerable
* none?
* Array
* +sample+, +shuffle+, +shuffle!+
* String
* +each_char+, +chars+
* +partition+
Tests and fixes for String#start_with? and String#end_with?
== Version 1.2 - April 12, 2009
* Array
* +reverse_each+
* +cycle+
* Enumerable
* +reverse_each+
* +each_slice+, +each_cons+
* +count+
* +cycle+
* +group_by+
* Hash
* default_proc=
== Version 1.1 - April 11, 2009
* Array
* +flatten+, flatten!
* +find_index+, +index+
* Hash
* +reverse_merge+, reverse_merge!
== Version 1.0 - April 2nd, 2009
=== Initial release.