v1.16.0 06-Apr-2026
--------------------


- switch to Java 21

v1.15.0 23-Mar-2026
--------------------

- add support for EXTERNAL, thanks to R Systems

- fix decoding ANY contents which contains single NULL element

v1.14.0 30-Jun-2023
--------------------

- add support for decimal REAL decoding, thanks to bibmaster and karim

- fix Windows run scripts for newer Java versions


v1.13.0 30-Jul-2021
--------------------

- added support for EXTENSIBILITY APPLIED when decoding sequences:
  accessing and setting extension bytes is possible using "-e" flag
  when compiling ASN1 files, thanks for testing to Calum MacLean

- fixed decoding empty ANY value, thanks to Steffen Conrad

- fixed decoding ANY containing element with indefinite length, thanks
  to Armin Lunkeit for pointing to the problem

- add support for decoding constructed OCTET STRINGs


v1.12.0 20-Jun-2020
--------------------

- renamed jASN1 to ASN1bean

- Added full support for indefinite length decoding. The compiler's
  -il flag to enable indefinite length decoding was removed because it
  is now always enabled.

- added support for white space in compiler's path parameters

- added support for ASN1 modules that start with a digit

- multiple minor clean ups in generated code


v1.11.3 14-Mar-2020
--------------------

- switched from Java 7 to Java 8

- Improved parsing of scientific number like 7.0E-2 and single value
  constraint for octet strings like OCTET STRING (SIZE( 1)) ('55'H)

- certain self reference like A ::= A; now cause an error message

- minor fix in run script to allow for spaces in parent directories


v1.11.2 06-Jun-2019
--------------------

- added compile support for various forms of INTEGER and REAL value
  constraints

- significant performance improvements to
  ReverseByteArrayOutputStream.write(byte[]) and
  BerLength.encodeLength

Thanks to the European Space Agency for these contributions.


v1.11.1 03-May-2019
--------------------

- removed use of JAXB function to make jASN1 compatible with Java 11

- insertion of jASN1 version in generated class headers can now be
  disabled with -dv flag

- added support for information object classes defined in external
  modules

- fixed name clash issue if a sequence, set or choice has an element
  with the same name as the sequence, set or choice

- fixed several minor inefficiencies such as unnecessary autoboxing


v1.11.0 15-Mar-2019
--------------------

- changed license to Apache 2.0 license

- changed package names from org.openmuc.* to com.beanit.*

- run scripts are now found in the bin/ folder


v1.10.0 26-Jun-2018
-------------------

- by default compiler now creates classes that implement the general
  BerType interface which contains the encode and decode functions,
  behavior can be disabled with compilers -di flag

- made asCalendar() and asDate() methods of BerGeneralizedTime class
  public

- open types in information object classes may now be OPTIONAL

- fixed support of ellipsis ('...') in the beginning of sequences


v1.9.0 13-Dec-2017
------------------

- encode functions now take general OutputStream interface as
  parameter instead of BerByteArrayOutputStream so that alternative
  reverse output streams could be developed and used. thanks to önder
  sezgin

- renamed BerByteArrayOutputStream to ReverseByteArrayOutputStream

- the BerBitString value can now be set and retrieved as array of
  booleans


v1.8.2 28-Aug-2017
------------------

- fixed decoding certain subIDs of object identifiers, thanks to Calum
  MacLean


v1.8.1 19-Jul-2017
------------------

- changed license to Mozilla Public License (MPL) v2.0

- improved BerGeneralizedTime.java thanks to Andrea Lo Pumo

- fixed decoding VisibleStrings to use readFully so that no exception
  is thrown while if read return less bytes, thanks to Jonathan
  Huthmann and Andrea Lo Pumo


v1.8.0 20-Apr-2017
------------------

- generated classes only import types imported by its module, not all
  available modules. This prevents name clashes.

- added support for parametrized types

- ANY types are now decoded and encoded differently so that their
  contents can be easily decoded by another type.

- removed support for ANY_NODECODE

- improved behaviour of compiler interface:

  * package folders no longer need to be part of the base directory
    specified.

  * files are separated by white space instead of ','

- added support for Information Object Classes

- added support for ENUMERATED lists without value and INTEGERS with
  both a value list and a constraint

- OID values are now parsed and stored in special class OidValues.java

- correctly fixed name clash of generated classes from the following
  structure SEQUENCE { test SEQUENCE OF Test }

- packages, fields and methods that clash with reserved Java key words
  are renamed (thanks to Telespazio Vega)

- added support for EMBEDDED PDV type (thanks to Telespanzio Vega)

- toString() methods of CHOICE, SEQUENCE/SET and SEQUENCE/SET OF use
  indentation to format returned string.

- added support for TIME, TIME-OF-DAY, DATE, DATE-TIME, DURATION types

- added asCalendar() and asDate() functions to BerUtcTime and
  BerGeneralizedTime thanks to Andrea Lo Pumo


v1.7.1 05-Feb-2017
------------------

- removed dependency on javax.xml.bind.DatatypeConverter so it works
  on Android again. Thanks to Karsten Ohme

- fixed coding ENUMERATED bug, introduced in release 1.7.0, thanks to
  David Jelenc

- fixed two more bugs when encoding and decoding REALs, thanks to htw
  saar


v1.7.0 27-Jan-2017
------------------

- fixed bug that the tag default of one module would override that of
  another module.

- added support for explicitly tagged SEQUENCE, SET, SEQUENCE/SET OF,
  CHOICE and ANY

- JAXB syntax mode of jasn-compiler is now default. Old syntax can be
  enabled using the legacy (-l) flag.

- numerous minor improvements to jasn1-compiler to create more
  comprehensible Java classes.

- BerInteger is now based on BigInteger instead of long. Thus it can
  code integer values larger than 8 bytes.

- fixed name clash when a sequence element of type SEQUENCE OF has the
  same name as the SEQUENCE OF type, e.g. SEQUENCE { test SEQUENCE OF
  Test }

- fixed BerReal bug when mantissa is larger than Integer.MAX

- added encode and decode functions to all generated classes that take
  only a stream as parameter


v1.6.0 03-Oct-2016
------------------

- added support for automatic tagging

- added support for empty SEQUENCEs

- hyphens in type names are now removed instead of replaced by
  underscore, the next letter after the hyphen is capitalized.

- when compiling one can enable the JAXB mode which generates classes
  that are more similar to those generated by the JAXB compiler

- added support for untagged ANY fields

- subclasses of SEQUENCE OF CHOICE .. and SEQUENCE OF SEQUENCE .. are
  now named "CHOICE" and "SEQUENCE" respectively.

- extension marker "..." can now be parsed, but is ignored for now

- multi-line comments using /* */ can now be parsed

- parser can now handle sequence/set/choice elements with no
  identifier

- fixed coding of explicitly tagged choices whithin choices

- added support for UTCTime

- fixed support for SEQUENCE OFs of tagged types such as SEQUENCE OF [3]
  INTEGER


v1.5.0 10-Dec-2015
------------------

- version of jasn1 compiler is inserted in generated class header
  comment
- added toString() method to all types
- a correct EOFException is now thrown when an unexpected end of input
  stream is reached while decoding.
- removed some unnecessary checks while decoding sequences.
- made encoding sequences, sets and choices more efficient by encoding
  the identfier directly.
- made jasn-compiler significantly faster by removing unnecessary
  conversion to XML structure.
- removed logger and command line parsing dependencies of the
  jasn1-compiler.

New features thanks to funding by the European Space Agency & Telespazio VEGA:

- added support for parsing explicit and implicit retagging such as
  MyType2 :== [2] MyType1
- added support for parsing inter-dependent ASN.1 modules from several
  files
- added support for implicitly tagged choices whithin choices by
  forcing the tag to be explicit
- added support for parsing size constraints such as (SIZE(n..m))
- added support for parsing constraints of the form "(FROM (ALL EXCEPT
  " "))"

v1.4 28-Jul-2014
----------------
- renamed jasn1-ber project to jasn1
- fixed bug in constructor of BerBitString

v1.3 14-May-2014
----------------
- fixed decoding of CHOICEs within SETs
- made decoding SETs more efficient
- minor fixes to build file to work with Gradle v1.11
- fixed decoding large BerIntegers (thanks to Helge Parzyjegla,
  University of Rostock)

v1.2.1 27-Jan-2014
------------------
- removed final from BerByteArrayOutputStream 

v1.2 10-Jan-2014
----------------
- ANY elements are now encoded/decoded.
- in some cases it could be favorable not to encode/decode elements of
  type any because it would involve big array copying. Therefor the
  compiler supports. The alternative element type called ANY_NODECODE
  which can be used inside the ASN.1 file in order to generate Java
  code that will not decod nor encode elements of these types.
- clarified licenses of dependencies.
- jasn1-compiler is now GPLv3 in order to compatible with Apache 2.0
  of BinaryNotes.
- jasn1-ber continues to be LGPLv2.1 or later
- libs are now in the central maven repository

v1.1.4 03-Jul-2013
------------------
- generated classes are declared final for better performance
- BerByteArrayOutputstream can be reset using reset() for reuse

v1.1.3 23-Aug-2012
------------------
- allow decoding of empty object identifiers

v1.1.2 14-Mai-2012
------------------
- improved efficiency in BerVisibleString
- modified BerBitString so it can be empty when decoded

v1.1.1 20-Feb-2012
------------------
- fix in BerIdentifier.decodeAndCheck(), thanks to Mr.Bostijancic from TU-Wien

v1.1.0 14-Feb-2012
------------------
- the default tagging can now be changed to implicit using the
  following kind of statement: SAMPLE DEFINITIONS IMPLICIT TAGS ::=
  ...
- the character '-' is now replaced by the '_' character in the name
  of Java classes
- support for indefinit length when decoding (not for encoding), has
  to explicitely enabled using the -il option
- SEQUENCE elements of type CHOICE that have not explicit tag are now
  supported by jASN1
- CHOICEs can now have sub CHOICES without tags. Only a warning is
  printed that this could one CHOICE could be integrated into another
  for better performance

v1.0.7 06-Feb-2012
------------------
- minor changes to gradle build file
- bug fix in decoding empty OctetString

v1.0.6 01-Feb-2012
------------------
- added a Windows batch file to execute jasn1-compiler in Windows

v1.0.5 30-Jan-2012
------------------
- fixed another bug in decoding of negative numbers

v1.0.4 27-Jan-2012
------------------
- fixed bug in decoding of negative integers in BerInteger

v1.0.3 19-Jan-2012
------------------
- modified BerByteArrayOutputStream so its buffer and index are public and added two new constructors

v1.0.2 17-Jan-2012
------------------
- added BerBitString(byte[]) constructor

v1.0.1 13-Jan-2012
------------------
- fixed bug in coding of several byte length field

1.0.0 06-Dec-2011
-----------------
- added getByteBuffer() function for BerByteArrayOutputStream so arrays don't always have to be copied
- add code byte array and encodeAndSave function to all structures for better encoding performance when
  encoding the same structure several times 
- numerous bug fixes
- all basic types are now supported

0.9.0 21-Nov-2011
-----------------
- first version
