This changelog is not maintained anymore. To have a look at Utilrb's history,
inspect the git log at http://gitorious.org/orocos-toolchain/utilrb.git

=== Version 1.4.0

* release the latest git version. utilrb has not seen any release for a very
  long time, and did not move so much anyway. The reason for this release is
  mainly to fix rubygem installation between older rubygem version and newest
  ruby version

=== Version 1.3.4

* fixes a minor problem with PkgConfig handling on broken installations.
  pkg-config is picky about all dependencies being installed on the system.
  The issue is that pkg-config --list-all will stop in the middle of the
  enumeration if one of the packages misses some dependencies.
  PkgConfig.has_package? was using --list-all through PkgConfig.each_package,
  and therefore was wrongly returning false sometimes.
  Moved it to pkg-config --exists, which works.

=== Version 1.3.3

* fixed a problem with WeakRef crashing on 1.8.7p172. This version of weakref
  should now work on every versions of 1.8.6 and 1.8.7
* made ColumnFormatter more configurable
* made the Rakefile callable with ruby's binaries that are not called 'ruby'

=== Version 1.3.2

* make utilrb depend only on standard C++, no boost

=== Version 1.3.1

* quickfix release: update the Manifest file for Hoe

=== Version 1.3

* added Utilrb::WeakRef, a much leaner version of the standard WeakRef:
  implemented in C++, not a subclass of Delegate (delegate is very costly).

=== Version 1.2

* compatibility with ruby 1.9. Some feature are specific 1.8:
  IO#clearerr, Proc#line, Proc#file and Proc#same_body?.
* misc fixes to Time#to_hms and Time.from_hms
* migrate to facets >= 2.4.0
* fix Object#address on 64bit architectures
* new functionality:
  - socket-related tools (see Socket)
  - Dir#empty?

=== Version 1.1

* changes and fixes:
  - fix documentation here and there
  - make sure all defined #to_s methods handle recursion
  - defined Module#cached_enum: returns an Enumerator method for
    a "each_" method, cachin the enumerator object. Works also
    for iteration with one argument (caching one Enumerator by
    argument)
  - fix Time.from_hms when the millisecond field has leading zeroes
  - optimizations here and there:
    * Array#to_value_set does not rely on rb_iterate
    * specific implementation of ValueSet#dup
    * more generally, avoid object allocation where possible
  - ColumnFormatter object: formats CSV output for display

=== Version 1.0
Bumped version number because of incompatible changes. Make it 1.0 since
having 0. version numbers for this kind of library is completely meaningless

* incompatible changes:
  - Enumerable#+ acts on too many objects. Define it only on Enumerable::Enumerator
  - remove automatic convertion into ValueSet for methods which were doing it
  - removed Queue#get: fastthread is now the preferred threading library in
    Ruby 1.8.6, so Queue#get cannot be implemented anymore

* new features:
  - PkgConfig class
  - define Proc#same_body?, Proc#file and Proc#line
  - Module#attr_predicate
  - 'since', 'until' and block parameters for Exception#full_message
  - ValueSet#intersects? (more efficient than checking that the intersection
    is empty)

* changes and fixes:
  - properly handle singleton classes in has_ancestor?
  - properly handle recursion in ValueSet#to_s and Array#to_s
  - add the 'setup' task on the Rakefile to build the C extension
  - make Module#has_ancestor? work event if the C extension is not built

=== Version 0.2.3

* new features:
  - BenchmarkAllocation, a Benchmark-like interface to benchmark object
    allocation
  - ValueSet#delete_if
  - Time#from_hms takes a time as "h:m:s.ms" and builds the corresponding
    Time object. Note that "s", "s.ms", "m:s", "m:s.ms", ... are accepted
    formats

* changes and fixes:
  - define Queue#get only if we are using Ruby's core Queue. The current
    implementation is incompatible with fastthread for instance (and 
    fastthhread's maintainer does not want #get on its Queue). Included
    a patch to define Queue#get on fastthread
  - fix ValueSet#== raising if the argument is not a ValueSet
  - fix brain-dead SequenceEnumerator#+, which was changing its receiver

=== Version 0.2.2
The "don't forget to bump version number" release. 0.2 was supposed to be 0.2.1

* new features:
  - Queue#get: waits for the queue to be not empty and returns all elements at 
    once. A non_block parameter is given which makes get() return [] if the
    queue is empty

* changes:
  - Array#to_s and Hash#to_s now enclose the result in [] and {}. The difference
    with #inspect is that we call #to_s on the elements.

=== Version 0.2.1
* new features:
  - Kernel#is_singleton?
  - Module#inherited_enumerable (class_inherited_enumerable on steroids)
  - Module#attribute() can be used in singleton classes (previously we had to 
    call class_attribute() in the class itself)
  - UnboundMethod#call(obj, *args, &block) calls the method on obj with 
    the provided arguments (does m.bind(obj).call(*args, &block))

* changes:
  - changed semantics of Module::include for inclusion of modules in modules:
    the source_module::ClassExtension gets included in
    target_module::ClassExtension.  Previously, it was extending the target's
    singleton class. This way, Module really acts as a mixin for both class
    methods and instance methods

=== Version 0.1
* Initial release


