Revision 0.1.3
--------------

- Include class name into asn1 value constraint violation exception.
- Fix to OctetString.prettyOut() method that looses leading zero when
  building hex string.

Revision 0.1.2
--------------

- Fix to __long__() to actually return longs on py2k
- Fix to OctetString.__str__() workings of a non-initialized object.
- Fix to quote initializer of OctetString.__repr__()
- Minor fix towards ObjectIdentifier.prettyIn() reliability
- ObjectIdentifier.__str__() is aliased to prettyPrint()
- Exlicit repr() calls replaced with '%r'

Revision 0.1.1
--------------

- Hex/bin string initializer to OctetString object reworked
  (in a backward-incompatible manner)
- Fixed float() infinity compatibility issue (affects 2.5 and earlier)
- Fixed a bug/typo at Boolean CER encoder.
- Major overhawl for Python 2.4 -- 3.2 compatibility:
  + get rid of old-style types
  + drop string module usage
  + switch to rich comparation
  + drop explicit long integer type use
  + map()/filter() replaced with list comprehension
  + apply() replaced with */**args
  + switched to use 'key' sort() callback function
  + support both __nonzero__() and __bool__() methods
  + modified not to use py3k-incompatible exception syntax
  + getslice() operator fully replaced with getitem()
  + dictionary operations made 2K/3K compatible
  + base type for encoding substrate and OctetString-based types
    is now 'bytes' when running py3k and 'str' otherwise
  + OctetString and derivatives now unicode compliant.
  + OctetString now supports two python-neutral getters: asOcts() & asInts()
  + print OctetString content in hex whenever it is not printable otherwise
  + in test suite, implicit relative import replaced with the absolute one
  + in test suite, string constants replaced with numerics

Revision 0.0.13
---------------

- Fix to base10 normalization function that loops on univ.Real(0)

Revision 0.0.13b
----------------

- ASN.1 Real type is now supported properly.
- Objects of Constructed types now support __setitem__()
- Set/Sequence objects can now be addressed by their field names (string index)
  and position (integer index).
- Typo fix to ber.SetDecoder code that prevented guided decoding operation.
- Fix to explicitly tagged items decoding support.
- Fix to OctetString.prettyPrint() to better handle non-printable content.
- Fix to repr() workings of Choice objects.

Revision 0.0.13a
----------------

- Major codec re-design.
- Documentation significantly improved.
- ASN.1 Any type is now supported.
- All example ASN.1 modules moved to separate pyasn1-modules package.
- Fix to initial sub-OID overflow condition detection an encoder.
- BitString initialization value verification improved.
- The Set/Sequence.getNameByPosition() method implemented.
- Fix to proper behaviour of PermittedAlphabetConstraint object.
- Fix to improper Boolean substrate handling at CER/DER decoders.
- Changes towards performance improvement:
  + all dict.has_key() & dict.get() invocations replaced with modern syntax
    (this breaks compatibility with Python 2.1 and older).
  + tag and tagset caches introduced to decoder
  + decoder code improved to prevent unnecessary pyasn1 objects creation
  + allow disabling components verification when setting components to
    structured types, this is used by decoder whilst running in guided mode.
  + BER decoder for integer values now looks up a small set of pre-computed
    substrate values to save on decoding.
  + a few pre-computed values configured to ObjectIdentifier BER encoder.
  + ChoiceDecoder split-off SequenceOf one to save on unnecessary checks.
  + replace slow hasattr()/getattr() calls with isinstance() introspection.
  + track the number of initialized components of Constructed types to save
    on default/optional components initialization.
  + added a shortcut ObjectIdentifier.asTuple() to be used instead of
    __getitem__() in hotspots.
  + use Tag.asTuple() and pure integers at tag encoder.
  + introduce and use in decoder the baseTagSet attribute of the built-in
    ASN.1 types.

Revision 0.0.12a
----------------

- The individual tag/length/value processing methods of 
  encoder.AbstractItemEncoder renamed (leading underscore stripped)
  to promote overloading in cases where partial substrate processing
  is required.
- The ocsp.py, ldap.py example scripts added.
- Fix to univ.ObjectIdentifier input value handler to disallow negative
  sub-IDs.

Revision 0.0.11a
----------------

- Decoder can now treat values of unknown types as opaque OctetString.
- Fix to Set/SetOf type decoder to handle uninitialized scalar SetOf 
  components correctly.

Revision 0.0.10a
----------------

- API versioning mechanics retired (pyasn1.v1 -> pyasn1) what makes
  it possible to zip-import pyasn1 sources (used by egg and py2exe).

Revision 0.0.9a
---------------

- Allow any non-zero values in Boolean type BER decoder, as it's in
  accordnance with the standard.

Revision 0.0.8a
---------------

- Integer.__index__() now supported (for Python 2.5+).
- Fix to empty value encoding in BitString encoder, test case added.
- Fix to SequenceOf decoder that prevents it skipping possible Choice
  typed inner component.
- Choice.getName() method added for getting currently set component
  name.
- OctetsString.prettyPrint() does a single str() against its value
  eliminating an extra quotes.

Revision 0.0.7a
---------------

- Large tags (>31) now supported by codecs.
- Fix to encoder to properly handle explicitly tagged untagged items.
- All possible value lengths (up to 256^126) now supported by encoders.
- Fix to Tag class constructor to prevent negative IDs.

Revision 0.0.6a
---------------

- Make use of setuptools.
- Constraints derivation verification (isSuperTypeOf()/isSubTypeOf()) fixed.
- Fix to constraints comparation logic -- can't cmp() hash values as it
  may cause false positives due to hash conflicts.

Revision 0.0.5a
---------------

- Integer BER codec reworked fixing negative values encoding bug.
- clone() and subtype() methods of Constructed ASN.1 classes now 
  accept optional cloneValueFlag flag which controls original value
  inheritance. The default is *not* to inherit original value for 
  performance reasons (this may affect backward compatibility).
  Performance penalty may be huge on deeply nested Constructed objects
  re-creation.
- Base ASN.1 types (pyasn1.type.univ.*) do not have default values
  anymore. They remain uninitialized acting as ASN.1 types. In 
  this model, initialized ASN.1 types represent either types with
  default value installed or a type instance.
- Decoders' prototypes are now class instances rather than classes.
  This is to simplify initial value installation to decoder's
  prototype value.
- Bugfix to BitString BER decoder (trailing bits not regarded).
- Bugfix to Constraints use as mapping keys.
- Bugfix to Integer & BitString clone() methods
- Bugix to the way to distinguish Set from SetOf at CER/DER SetOfEncoder
- Adjustments to make it running on Python 1.5.
- In tests, substrate constants converted from hex escaped literals into
  octals to overcome indefinite hex width issue occuring in young Python.
- Minor performance optimization of TagSet.isSuperTagSetOf() method
- examples/sshkey.py added

Revision 0.0.4a
---------------

* Asn1ItemBase.prettyPrinter() -> *.prettyPrint()

Revision 0.0.3a
---------------

* Simple ASN1 objects now hash to their Python value and don't
  depend upon tag/constraints/etc.
* prettyIn & prettyOut methods of SimplleAsn1Object become public
* many syntax fixes

Revision 0.0.2a
---------------

* ConstraintsIntersection.isSuperTypeOf() and 
  ConstraintsIntersection.hasConstraint() implemented
* Bugfix to NamedValues initialization code
* +/- operators added to NamedValues objects
* Integer.__abs__() & Integer.subtype() added
* ObjectIdentifier.prettyOut() fixes
* Allow subclass components at SequenceAndSetBase
* AbstractConstraint.__cmp__() dropped
* error.Asn1Error replaced with error.PyAsn1Error

Revision 0.0.1a
---------------

* Initial public alpha release
