Releases: esa/asn1scc
v4.5.2.4 - Performance boost
This release is a maintenance release (no new features) addressing parsing performance (10x boost).
Parsing performance boost and Scala update
This release introduces
- a major performance improvement for the parser
- a major update of the Scala backend with new proofs and complete support
Documentation (ICD) Generation and Performance Improvements
This new release improves the ICD (Interface Control Document) generation as well as the parsing performance:
- A new command line flag allows to select which ASN.1 types you want to see in the ICD (by default: all of them)
e.g.asn1scc -icdAcn icd.html -icdPdus "TELECOMMAND,TELEMETRY" dataview.asn
will generate the ICD only for the types namedTELECOMMAND
andTELEMETRY
(and all their dependencies) - The hyperlinks to the ASN.1 and ACN grammars have been fixed
- Various cosmetics improvements to improve the clarity of the tables (e.g. comments for ACN-inserted fields)
- To smoothen the transition, the new ICDs are generated in a file with the
_new.html
suffix (the prefix being the ICD name given in the command line). - Major parsing performance boost
v4.5.2.1 maintenance release
C Backend optimizations
This release introduces a new mode in asn1scc that optimizes the generated C code for ASN.1 Enumerated types, especially when there are multiple enumerants in the type (e.g., 50 or more).
When the -eee
option is present, asn1scc generates more efficient and less verbose code. Instead of generating switch statements, asn1scc generates sorted arrays containing the possible values. Lookups, such as for validation or index retrieval in uPER
encoding, are performed using an optimized binary search.
This results in more efficient code generation for large Enumerated types, improving performance and readability.
To use this mode, pass the minimum number of enumerants in an enumerated type to enable this mode as an argument to the -eee
option. For example, -eee 50
will enable this mode for enumerated types with 50 or more enumerants.
In addition this release includes major improvements to the Scala backend (with Stainless proof/contracts).
Runtime update
Minor update - C runtime now always includes the BitStream_GetLength
function
Bugfixes
Scala backend (and bug fixes)
- Major: added new Scala backend (with full support of uPER, ACN, -atc, and Stainless proofs)
- improved support for bit naming in backends (BIT STRING type) (#294)
- optimizations of the runtime (less generated code) (#293)
- fixed issue with present-when in ACN (#289)
- better support of REAL encoding in PER codec (support for
infinity/minus zero, NaN) (#287) - added missing declarations in headers (#285)
- fix settting of the .exists field when using -atc (#275)
- new flag --handle-empty-sequence / --handle-zero-array for C compilers
that disallow empty struct (formally unsupported in C99) (#274) - fix inconsistent subtyping (#268)
- fix cases of recursive calls to IsConstraintValid (#263)
Add Asn1Real_Equal function in the C backend
Minor update - align C and Ada backends
Maintenance release: fix bug with -ig
The -ig option combined with the C backend (-c) instructs the compiler to generate constant initializers for the complex types.
However it was done using the "const" keyword, which in C does not represent real constants (contrary to C++), and this resulted in compilation errors in some cases.
This version generates #defines for the initializers (in C only, C++ still uses constants).