Objective Systems is proud to announce a new major release of its ASN1C ASN.1 Compiler product - version 7.0.
ASN1C is an ASN.1 compiler (code generator) capable of parsing and generating C, C++, C#, or Java source code from Abstract Syntax Notation 1 (ASN.1) or XML Schema Definition Language (XSD) syntax.
One of the key new features in this release is the capability to generate code in Java and C# to decode XER/XML data that makes use of advanced table-constraint syntax. We have had this capability for many years for C and C++, but this now adds it to these additional languages.
In order to add this support, we had to change the XML parsing model that was used. In the past, we a used SAX-based parsing model. In this release, this is changed to use a pull-parser model. For C#, the the standard XmlReader class is used. For Java, the option of using either StAX (standard on Java SE 1.6+) or XmlPull (standard on Android) is available. This is a much simpler model than SAX and has the added benefit of producing simpler code that performs better. Note that for backward compatibility, it is still possible to generates SAX-based code, but there will be no future support for it.
In addition to the new XML features, other new features include:
- Improved selection of encoders and decoders through new configuration options. These options allow the code base to be reduced by eliminating functions that will not be used. A common pattern we observed was the case of a top level choice being used to defined elements that some agents always send and other that are always received. The new configuration options make it possible to configure client and server to contains only the functions they specifically need to support.
- Improvements to C/C++ Integer Type Configuration - the full set of integer types is now supported (there were a few missing before) from 8 bit signed or unsigned up to unlimited size "big integers" which are represented in string form. There is also now a -default-int-type command-line option that can be used to specify the integer for all unconstrained integer types in a specification.
- C/C++ libraries built with newer compilers - for Windows, C/C++ libraries built with Visual Studio 2015 have been added. For Linux, libraries built with gcc 5.x have been added.
For a complete list of additions, pleases see the Release Notes and Change Log. This release is available free-of-charge for users with active support. It is also available for a free evaluation for 30 days. See the product page for details.