Skip to content

Releases: esa/asn1scc

ICD Generation improvement

06 Jul 13:54
Compare
Choose a tag to compare

Implements feature described in #343
Addition of a filter in a panel to simplify the navigation in the generated ICD documents

image

Bugfixes

06 Jun 08:26
Compare
Choose a tag to compare

Maintenance release

  • fix a corner case of infinite loop
  • ICD generation improvement
  • Fix issue #334 (crash of asn1scc)
  • switch to .NET9

Maintenance release - bugfix

27 Apr 09:13
Compare
Choose a tag to compare

Fix issue #332 - generation of duplicate macro definitions in C, causing compiler warnings

Code optimization and decoding bufix

07 Apr 07:37
Compare
Choose a tag to compare
  • Major bugfix (issue #330) Possible invalid memory access in BitStream_ReadByte (could point to an invalid memory address if buffer was larger than value set in the byte counter)

  • This version introduces a functionality to automatically detect and exclude unused generated functions, resulting in significantly smaller output code for both C and Ada backends.

Key Features

  1. Unused Function Elimination via -icdPdus
    When using the -icdPdus argument, ASN1SCC now performs a dependency analysis starting from the specified PDUs and their associated functions (isEqual(), isValid(), init(), encode(), and decode()).

    • Only the functions directly or indirectly required by these PDUs are generated.
    • All unused functions are excluded from the output, reducing code size and improving maintainability.
  2. New -dpdus Argument
    A new command-line option, -dpdus, was added to help identify Protocol Data Units (PDUs) in the input ASN.1 grammar.

    • PDUs are defined as top-level types that are not referenced by any other type.
    • Detected PDUs are printed to the console to help users configure -icdPdus more easily.

Impact

  • Reduces the size of generated code by omitting unused functions.
  • Especially beneficial for resource-constrained systems or projects aiming to minimize binary size.

Bugfixes

16 Mar 16:17
Compare
Choose a tag to compare
  • Fix missing Xer_EncodeNull and Xer_DecodeNull functions (#326)
  • Fix erroneous variable name in XER encoders (#325)
  • Removed warnings from latest GCC in compilation of autogenerated test cases (#323)
  • Fix corner case with hyphens generated in place of underscores (#322)
  • Detect and report REAL numbers that can't be represented in memory when used in bounds (#321)

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