News
====
+.. _release8.0:
+
+8.0
+---
+* **Incompatible** change: explicitly check that only naive datetime
+ objects are used for UTCTime and GeneralizedTime, raise an error
+ otherwise. Previously they silently ignored ``tzinfo``
+
+.. _release7.7:
+
+7.7
+---
+* Strictly check that tag's long encoded form does not contain leading zero
+ (X.690 8.1.2.4.2 (c))
+* Strictly check that tag's long form is used in expected way for small values
+ (X.690 8.1.2.2)
+
+.. _release7.6:
+
+7.6
+---
+* Proper strict alphabet validation of VisibleString
+* VisibleString and IA5String also have ``allowable_chars`` property
+* Fixed TeletexString, T61String use ``iso-8859-1`` encoding (instead of
+ ``ascii``), because they are 8-bit encodings
+
+.. _release7.5:
+
+7.5
+---
+* Also print full TLVlen in ASN.1 browser
+
+.. _release7.4:
+
+7.4
+---
+
+* Fix DEFINED BY pprinting when invoking as __main__ module
+* Integer has ``tohex()`` for getting hexadecimal representation of its value
+* ``hexdump()`` (``hexdump -C`` like output) and ``ascii_visualize()``
+ (visualize ASCII printable characters, like in ``hexdump -C``) pretty
+ printing functions appeared
+* Experimental ASN.1 interactive terminal browser (``--browse`` and
+ ``pyderasn.browse``).
+ You will need `urwid package <http://urwid.org/>`__ to use it
+
+.. _release7.3:
+
+7.3
+---
+
+* SEQUENCE/SET fully performs default value existence validation in
+ evgen mode, by the cost of DEFAULTed value full decoding. That should
+ not be the problem, as DEFAULTs are relatively small in practice. Now
+ evgen mode has the same DER validation strictness as an ordinary one
+
+.. _release7.2:
+
+7.2
+---
+
+* Restored workability of some command line options
+* 2-pass DER encoding mode with very little memory footprint
+
+.. _release7.1:
+
+7.1
+---
+
+* README updating
+
+.. _release7.0:
+
+7.0
+---
+* Fixed invalid behaviour where SET OF allowed multiple objects with the
+ same tag to be successfully decoded
+* Fixed possibly invalid SET DER encoding where objects were not sorted
+ by tag, but by encoded representation
+* ``Any`` does not allow empty data value now. Now it checks if it has
+ valid ASN.1 tag
+* ``SetOf`` is not treated as ready, if no value was set and minimum
+ bounds are greater than zero
+* ``Any`` allows an ordinary ``Obj`` storing, without its forceful
+ encoded representation storage. That is required for CER encoding
+ mode, where we do not know in advance what encoding will be used
+* ``ObjectIdentifier`` stores values as C unsigned long integer,
+ forbidding storage of huge integers, that must not be a problem in
+ practice
+* Initial support for so called ``evgen_mode``: event generation mode,
+ where no in-memory objects storing happens, giving ability to process
+ ASN.1 data without fully parsing it first. ``python -m pyderasn`` has
+ ``--evgen`` mode switcher
+* Useful ``agg_octet_string`` that is able to streamingly decode string
+ from events of ``evgen_mode``, allowing strings retrieving without
+ copying them to memory first
+* Initial experimental CER encoding mode, allowing streaming encoding of
+ the data directly to some writeable object
+* Ability to use mmap-ed memoryviews to skip files loading to memory
+* Ability to use memoryview as an input for \*Strings. If they are
+ mmap-ed, then you can encode any quantities of data streamingly
+ without copying to memory
+
+.. _release6.3:
+
+6.3
+---
+* Fixed workability under Python 3.5. Previously only 2.7 and 3.6
+ versions were tested
+
+.. _release6.2:
+
+6.2
+---
+* Python ``int()``'s accepts even more various non-decimal characters
+ than expected. Make validation fully strict in UTCTime and
+ GeneralizedTime, without relying on ``int()``
+
.. _release6.1:
6.1
---
* UTCTime and GeneralizedTime allowed values to have plus sign in them,
- passing int() check successfully. Prohibit that incorrect behaviour
+ passing ``int()`` check successfully. Prohibit that incorrect behaviour
+* UTCTime and GeneralizedTime BER decoding support
+* Faster UTCTime and GeneralizedTime decoding, and slightly better
+ overall performance
+* Workability under Cython
* Explicitly Check that all ObjectIdentifier arcs are non-negative
.. _release6.0:
* Copies made previously with ``.copy()`` lacked ``.defined`` field,
now they are not
* All objects are friendly to ``pickle`` libraries
-* ``PrintableString`` has ``allow_asterisk`` and ``allow_ampersand``
+* PrintableString has ``allow_asterisk`` and ``allow_ampersand``
properties
* ``.hexencode()``, ``.hexdecode()`` and ``.hexdecod()`` methods
appeared, working with hexadecimal encoded data
* Control characters (like newlines) of text fields in pprinted output
are escaped
* Ability to allow asterisk and ampersand characters
- (``allow_asterisk``, ``allow_ampersand`` kwargs) in
- ``PrintableString``, that unfortunately could be met
- in X.509 certificates
+ (``allow_asterisk``, ``allow_ampersand`` kwargs) in PrintableString,
+ that unfortunately could be met in X.509 certificates
.. _release5.5:
5.4
---
-* Do not shadow underlying ``DecodeError`` during decoding of optional
+* Do not shadow underlying DecodeError during decoding of optional
sequence's field
.. _release5.3:
1.5
---
-* Generic decoder's scheme and pretty printer
+* Generic decoder's schema and pretty printer
(:py:func:`pyderasn.generic_decoder`) can be used in libraries
* Ability to specify :ref:`defines_by_path <defines_by_path_ctx>`
during command line invocation