= 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.

* <tt>"".ord</tt> 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
  * <tt>extract_options!</tt>

* Binding
  * +eval+

* Dir
  * +each+, +foreach+

* Enumerator
  * +new+
  * +with_object+
  * +next+, +rewind+

* Hash
  * Optional block for <tt>delete_if, each, each_key, each_pair, each_value, reject!, select</tt> (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+
  * <tt>ascii_only?</tt>
  * +bytesize+
  * +chr+
  * +clear+
  * +codepoints+, +each_codepoint+
  * +stringify_keys+, +stringify_keys!+
  * +each+, +each_line+, +each_byte+
  * +gsub+
  * +upto+

* Struct
  * +each+, +each_pair+

* Symbol
  * <tt><=></tt>, +casecmp+
  * +capitalize+, +downcase+, +next+, +succ+, +swapcase+, +upcase+
  * <tt>=~, [], empty?, length, match, size</tt>

* UnboundMethod
  * +name+, +owner+

== Version 1.5 - April 24, 2009

* Array (completed)
  * +combination+
  * +try_convert+
  * Optional block for <tt>collect!, :map!, :each, :each_index, :reject, :reject!, :delete_if</tt>
  * +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
  * <tt>none?</tt>

* Array
  * +sample+, +shuffle+, +shuffle!+

* String
  * +each_char+, +chars+
  * +partition+

Tests and fixes for <tt>String#start_with?</tt> and <tt>String#end_with?</tt>

== Version 1.2 - April 12, 2009

* Array
  * +reverse_each+
  * +cycle+

* Enumerable
  * +reverse_each+
  * +each_slice+, +each_cons+
  * +count+
  * +cycle+
  * +group_by+

* Hash
  * <tt>default_proc=</tt>

== Version 1.1 - April 11, 2009

* Array
  * +flatten+, <tt>flatten!</tt>
  * +find_index+, +index+

* Hash
  * +reverse_merge+, <tt>reverse_merge!</tt>

== Version 1.0 - April 2nd, 2009

=== Initial release.
