0.5.5:
  * Remove @@logger.debug entries during build
  * Building -debug and regular gems and tarballs
0.5.4:
  * Added Base#import to streamline the Base.find and Base.find_all methods
    - Speeds up find and find_all by not accessing LDAP multiple times
      for data we already have.
  * Added tests/benchmark which is a slightly modified version of excellent
    benchmarking code contributed by 
    Ollivier Robert <roberto -_-AT-_- keltia.freenix.fr>.
0.5.3:
  * Changed attribute_method to send in associations
    - fixes belongs_to (with local_kay) and inheritance around that
0.5.2:
  * Make sure values are .dup'd when they come from LDAP
0.5.1:
  * Changed Schema2#class_attributes to return {:must => [], :may => []}
  * Fixed Base#must and Base#may to return with full SUPerclass requirements
0.5.0:
  * API CHANGE (as with all 0.x.0 changes) (towards ActiveRecord duck typing)
    - Base#ldapattribute now always returns an array
    - Base#ldapattribute(true) now returns a dup of an array, string, etc 
      when appropriate (old default) - This is just for convenience
    - Base#ldapattribute returns the stored value, not just a .dup
    - Associations methods return objects by default instead of just names.
      Group.new('foo').members(false) will return names only.
    - Base.connect returns true as one might expect
  * Value validation and changing (binary, etc) occur prior to write, and
    not immediately on attribute_method=(value).
  * Attribute method validity is now determined /on-the-fly/.
  * Default log level set to OFF speeds up 'speedtest' by 3 seconds! 
    (counters last point which added some slowness :)
  * Added Schema2#class_attributes which caches and fully supertype expands
    attribute lists.
  * Integrated Schema2#class_attributes with apply_objectclass which automagically
    does SUP traversal and automagically updates available methods on calls to
    #attributes, #method_missing, #validate, and #write
  * Added 'attributes' to 'methods' allowing for irb autocompletion and other
    normal rubyisms
  * Moved almost all validation to Base#validate to avoid unexpected exceptions
    being raised in seemingly unrelated method calls. This means that invalid 
    objectClasses may be specified. This will only be caught on #write or 
    a pre-emptive #validate. This goes for all attribute errors though.
    This also makes it possible to "break" objects by removing the 'top'
    objectclass and therefore the #objectClass method...
0.4.4:
  * Fixed binary subtype forcing:
    - was setting data as subtype ;binary even when not required
  * Added first set of unit tests.
    - These will be cleaned up in later releases as more tests are added.
  * Fixed subtype clobber non-subtype (unittest!)
    - cn and cn;lang-blah: the last loaded won
  * Fixed multivalued subtypes from being shoved into a string (unittest!)
    - an error with attribute_input_value
0.4.3:
  * Fixed write (add) bugs introduced with last change
    - only bug fixes until unittests are in place
0.4.2:
  * Added ruby-activeldap.gemspec
  * Integrated building a gem of 'ruby-activeldap' into Makefile.package
  * Added attr parsing cache to speed up repetitive calls: approx 13x speedup
    = 100 usermod-binary-add calls
      - Without attr parsing cache:
        real    13m53.129s
        user    13m11.350s
        sys     0m7.030s
      - With attr parsing cache:
        real    1m0.416s
        user    0m28.390s
        sys     0m2.380s
0.4.1:
  * Schema2 was not correctly parsing objectClass entries.
    - This is fixed for now but must be revisited.
0.4.0:
  * Added #<attribute>(arrays) argument which when true
    always returns arrays. e.g.
       irb> user.cn(true)
       => ['My Common Name']
    This makes things easier for larger programming tasks.
  * Added subtype support:
    - Uses Hash objects to specify the subtype
      e.g. user.userCertificate = {'binary' => File.read('mycert.der')}
    - Added recursive type enforcement along with the subtype handling
    - This required overhauling the #write method. 
      - Please report any problems ASAP! :^)
  * Added automagic binary support
    - subtype wrapping done automatically
    - relies on X-NOT-HUMAN-READABLE flag
  * Added LDAP::Schema2 which is an extension of Ruby/LDAP::Schema
    - made Schema#attr generic for easy type dereferencing
  * Updated rdoc in activeldap.rb
  * Updated examples (poorly) to reflect new functionality
  * Added several private helper functions
0.3.6:
  * Fixed dn attribute value extraction on find and find_all
    - these may have grabbed the wrong value if a DN attr has
      multiple values.
  * Fixed Base.search to return all values as arrays and update
    multivalued ones correctly
  * Lowered the amount of default logging to FATAL only
0.3.5:
  * Moved to rubyforge.org!
0.3.4:
  * Changed license to Ruby's
0.3.3:
  * Changed Base.search to return an array instead of a hash of hashes
  * Change Base.search to take in a hash as its arguments
0.3.2:
  * Bug fix - fixed support for module'd extension classes (again!)
0.3.1:
  * Updated the documentation
  * Fixed ignoring of attrs argument in Base.search
  * Fixed mistake in groupls (using dnattr directly)
  * Fixed a mistake with overzealous dup'ing
0.3.0:
  * MORE API CHANGES (configuration.rb, etc)
  * Major overhaul to the internals!
    - removed @@BLAH[@klass] in lieu of defining
      class methods which contain the required values. This
      allows for clean inheritance of Base subclasses! Whew!
    - Added @@config to store the options currently in use
      after a Base.connect
    - Now cache passwords for doing reconnects
    - dnattr now accessible to the outside as a class method only
  * Added Base.search to wrap normal LDAP search for convenience.
    - This returns a hash of hashes with the results indexed first by
      full dn, then by attribute.
0.2.0:
  * API CHANGES:
    - Extension classes must be defined using map_to_ldap instead of setting
      random values in initialize
    - Base#find is now Base.find_all and is a class method
    - Base.find returns the first match a la Array#find
    - force_reload is gone in belongs_to and has_many created methods
    - hiding Base.new, Base.find, and Base.find_all from direct access
  * added uniq to setting objectClass to avoid stupid errors
  * fixed new object creation bug where attributes were added before the
    objectclass resulting in a violation (Base#write)
  * fixed attribute dereferencing in Base#write
  * fixed bug with .dup on Fixnums
  * methods created by has_many/belongs_to  and find and find_all now take an
    optional argument dnattr_only which will return the value of dnattr for
    each result instead of a full object.
  * Base.connection=(conn) added for multiplexing connections
  * Added a manual to activeldap.rb which covers most usage of Ruby/ActiveLDAP
  * Base.connect(:try_sasl => true) should now work with GSSAPI if you are
    using OpenLDAP >= 2.1.29
0.1.8:
  * .dup all returned attribute values to avoid weirdness
  * .dup all assigned values to avoid weirdness
  * Changed default configuration.rb to use example.com
0.1.7:
  * Added support for non-unique DN attributes
  * Added authoritative DN retrieval with 'object.dn'
0.1.6:
  * Added Base.close method for clearing the existing connection (despite Ruby/LDAP's lack of .close)
0.1.5:
  * Fixed incorrect usage of @klass in .find (should .find be a class method?)
0.1.4:
  * Change WARN to INFO in associations.rb for has_many
0.1.3:
  * Fixed class name mangling
  * Added support for classes to take DNs as the initialization value
0.1.2:
  * Patch from Dick Davies: Try SSL before TLS
  * Log4r support
  * Better packaging (automated)
  * Work-around for SSL stupidity
    - SSLConn doesn't check if the port it connected to is really using SSL!
0.1.1:
  * Dynamic table class creation
  * SASL/GSSAPI disabled by default - doesn't work consistently
0.1.0:
  * Added foreign_key to has_many
  * Added local_key to belongs_to
  * Added primary_members to Group example
  * Added "nil" filtering to has_many
  * Packaged up with setup.rb
  * Added RDocs and better comments
0.0.9:
  * Separated extension classes from ActiveLDAP module
  * Cleaned up examples with new requires
0.0.8:
  * Added user and group scripting examples
    - usermod, userls, useradd, userdel
    - groupmod, groupls
0.0.7:
  * Cleaner authentication loop:
    - SASL (GSSAPI only), simple, anonymous
  * Added allow_anonymous option added (default: false)
0.0.6:
  * Write support cleaned up
  * Exception classes added
0.0.5:
  * LDAP write support added
0.0.4:
  * MUST and MAY data validation against schema using objectClasses
0.0.3:
  * LDAP attributes alias resolution and data mapping
0.0.2:
  * Associations: has_many and belongs_to Class methods added for Base
0.0.1:
  * Extension approach in place with example User and Group classes
0.0.0:
  * Basic LDAP read support in place with hard-coded OUs
