Skip to content

Releases: esa/asn1scc

v4.5.2.4 - Performance boost

13 Jan 13:29
Compare
Choose a tag to compare

This release is a maintenance release (no new features) addressing parsing performance (10x boost).

Parsing performance boost and Scala update

24 Nov 21:57
d9f556f
Compare
Choose a tag to compare

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

29 Sep 16:56
Compare
Choose a tag to compare

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 named TELECOMMAND and TELEMETRY (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

13 Jul 13:32
Compare
Choose a tag to compare
  • Fix regression with boolean encodings (issues #312 and #309)
  • Fix Inefficient and Incorrect Generated Code for CHOICEs (#307)
  • Fix Failure when encoding/decoding messages in Streaming Mode with large Bit Strings (and smaller BitStream buffers) (#292)
  • Improve ICD generation

C Backend optimizations

22 Apr 07:13
e1f6ca1
Compare
Choose a tag to compare

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

17 Mar 19:40
Compare
Choose a tag to compare

Minor update - C runtime now always includes the BitStream_GetLength function

Bugfixes

11 Mar 10:01
Compare
Choose a tag to compare

Bugfixes:

  • Streaming mode when using bit strings (#292)
  • Cases of infinite loop when using -fp AUTO (#296)

Scala backend (and bug fixes)

08 Mar 08:48
Compare
Choose a tag to compare
  • 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

24 Sep 17:19
Compare
Choose a tag to compare

Minor update - align C and Ada backends

Maintenance release: fix bug with -ig

17 Sep 15:59
Compare
Choose a tag to compare

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).