Skip to content

Releases: ndsev/zserio

Zserio v2.14.0

30 Apr 12:58
Compare
Choose a tag to compare

Zserio Core 2.14.0

  • Reformatting of the Java sources according to the clang-format rules

C++ Extension 1.0.1

  • Support for Conan 2.x deployment
  • Official support of the C++17 standard for clang, minGW and MSVC compilers
  • Updating documentation (serialization API, additional API)
  • Replacement of the cppcheck and CodeQL static analysis tools by the SonarCloud
  • Fixed all conversion warnings fired from old gcc 8.0 compiler
  • Fixed a bug that caused the JSON reader to fail when encountering empty bytes or external fields
  • Fixed a bug that caused the JSON reader to fail when encountering floats in scientific notation
  • Reformatting of the C++ and Java sources according to the clang-format rules

Java Extension 1.1.0

  • Partial implementation of Zserio subtypes in the generated Java code
  • Fixed a bug that caused the JSON reader to fail when encountering empty bytes or external fields
  • Fixed a bug that caused the JSON reader to fail when encountering floats in scientific notation
  • Reformatting of the Java sources according to the clang-format rules

Python Extension 1.0.1

  • Fixed a bug that caused the JSON reader to fail when encountering empty bytes or external fields
  • Fixed a bug that caused the JSON reader to fail when encountering floats in scientific notation
  • Official support of Python 3.12
  • Reformatting of the Java sources according to the clang-format rules
  • Reformatting of the Python sources according to the black rules

Doc Extension 1.0.1

  • Fixed a bug that caused generation failure when choices have cases expressed by constants
  • Reformatting of the Java sources according to the clang-format rules

XML Extension 1.0.1

  • Reformatting of the Java sources according to the clang-format rules

Fixes

#559 - Json: Scientific notation decode error
#568 - MSVC 2017 Conformance Mode does not compile C++ runtime library
#581 - JSON reader fails in case of empty extern field
#582 - JSON reader fails in case of empty bytes field
#586 - Fix MISRA C++ 2023 rule 8.2.5 "reinterpret_cast shall not be used"
#592 - When the parameter of choice type is constant, document generation fails
#593 - Fix MISRA C++ 2023 rule 15.1.3 "Conversion operators and constructors that are callable with a single argument shall be explicit"
#596 - C++ runtime tests fail for C++17 using MSVC v142

New Features

#533 - Zserio Conan 2.x Deployment and Integration of CMake Helper
#574 - Add SonarCloud support to scan C++ runtime
#578 - Consider to implement subtype classes in Java

Improvements

#82 - Modernize CMake configuration
#333 - add_zserio_module cmake function
#504 - Consider to remove cppcheck static analysis tool
#558 - Add clang-format tool to check all C++ sources
#560 - Provide Zserio CMake helper for easier integration to CMake based projects
#561 - Add clang-format tool to check all Java sources
#563 - Add readability-identifier-length rule to clang-tidy tool
#567 - Add support for Python 3.12
#569 - Docs: Add more info to EOF exception
#573 - Enhance C++ configuration to support compilation using C++17 standard
#575 - Consider to split GitHub Actions according to the generators
#579 - Enable conversion warnings for gcc compiler
#583 - Docs: Add section about PMR allocators in C++ documentation
#594 - Consider to remove CodeQL queries for AUTOSAR
#603 - Add black tool to check all Python sources

Zserio v2.13.0

14 Dec 08:34
Compare
Choose a tag to compare

Zserio Core 2.13.0

  • New Zserio Compatibility Guide which defines
    • New version numbers for all supported Zserio extensions
    • New binary encoding version
    • New JSON encoding version
  • Official support of Java 11 and Java 17

C++ Extension 1.0.0

  • Introducing of new extension version together with binary and JSON encoding versions
  • Size optimization of generated objects which are not packed in the schema
  • Brand new less than operator using this ordering
  • Fix of move constructors for parameterized types
  • Fix of JSON bitmasks reading
  • Fix problems related to using-based function references in runtime library for MSVC (C++20)
  • Official support of MSVC 2019 and clang 14

Java Extension 1.0.0

  • Introducing of new extension version together with binary and JSON encoding versions
  • Size optimization of generated objects which are not packed in the schema
  • Fix of new SpotBugs 4.8.2 issues
  • Official support of Java 11 and Java 17
  • Potential API incompatibilities with previous version:
    • All generated classes are now declared as final because of SpotBugs CT_CONSTRUCTOR_THROW issue

Python Extension 1.0.0

  • Introducing of new extension version together with binary and JSON encoding versions
  • Size optimization of generated objects which are not packed in the schema

Doc Extension 1.0.0

  • Introducing of new extension version

XML Extension 1.0.0

  • Introducing of new extension version

Fixes

#532 - Move constructor of parameterized types can throw
#536 - Cannot compile zserio using "building by hand" instructions: javadoc error
#538 - Fix problems related to using-based function references (C++ 20)
#547 - C++ fails to read JSON bitmask with more than 2 values

New Features

#288 - Add less than operator to c++ emitted code
#456 - zserio compatibility management and mechanisms

Improvements

#516 - Generated objects which are not packed does not need to define packing interface
#535 - Update officially support clang compiler to version 14.0.6
#544 - Add official support for MSVC 2019
#545 - Add official support for Java 17
#549 - Add official support for Java 11
#551 - Upgrade SpotBugs version from 3.1.12 to 4.8.2
#552 - Solve SpotBugs issue UWF_UNWRITTEN_FIELD in generated code
#553 - Solve SpotBugs issue CT_CONSTRUCTOR_THROW in generated code

Zserio v2.12.0

05 Oct 11:28
Compare
Choose a tag to compare

The main goal of this release is to publish the following brand new features in the language:

The release contains as well new documentation:

This release contains the following improvements in generated code:

  • Optimization of memory allocations during parsing of huge packed arrays in C++, Java and Python code
  • Checking of correctness of C++ runtime library version during compilation in C++ code

This release contains the following improvements in runtime libraries:

  • Improving runtime test coverage in C++
  • Improving arrays implementation in C++

Fixes

#506 - Fix C++ warning in generated SQL table code with validation

New Features

#482 - Solve backward compatible extension at the end of top level structures
#486 - New keywords for compatibility: removed, deprecated
#528 - Add new warning for packed unions which has no packable fields

Improvements

#13 - initializeOffsets method does not resize offset arrays
#328 - Schema evolution in zserio
#377 - Consider to create separated Zserio encoding guide documentation
#406 - Define and document supported tool chains for all target languages
#464 - The value ranges of the varsize are 2^36 (68,719,476,736)
#471 - Add a description about the JSON mapping used by zserio
#485 - Investigate GitHub analysis tool which can check Autosar C++
#500 - zserio logo not suitable for dark mode
#503 - Improve C++ runtime test coverage
#508 - Improve arrays implementation in C++ runtime library
#519 - ZSERIO_RUNTIME_64BIT looks obsolete in 2.11.0
#520 - zserio_ant_task.compile jdk17 deprecation on AccessController
#524 - Optimize memory allocations for packed arrays
#525 - Enhance unpackable warning to report clearly that packed keyword is ignored
#529 - Check correct C++ runtime library version during compilation

Zserio v2.11.0

11 May 13:42
Compare
Choose a tag to compare

The main goal of this release is to improve Functional Safety in C++ generator. This covers:

This release contains the following improvement in generated code:

  • Adding new method to convert enum string to value in generated C++, Java and Python code

This release contains as well two important bug fixes for C++ generator:

  • Fix allocation strategy not to fragment allocated memory
  • Fix move/copy constructors not to keep dangling pointers in generated objects

Fixes

#479 - Allocated memory can be fragmented during parsing in C++
#501 - Dangling pointer after move/copy constructor of dynamic bit field arrays

New Features

#487 - Add method to retrieve enum value from enum string directly
#492 - Add clang-tidy to the C++ static code analysis c++

Improvements

#491 - Provide test coverage statistics in release assets enhancement
#493 - Documentation on when C++ exceptions are thrown

Zserio v2.10.0

10 Mar 13:22
Compare
Choose a tag to compare

The main goal of this release is to publish the following significant performance improvements for Python and C++:

  • Optimization of pure Python reading performance
  • Possibility of usage BitStreamReader and BitStreamWriter C++ implementations in Python runtime
  • Optimization of C++ reading performance
  • Optimization of byte aligned reading and writing for string and bytes types in C++, Java and Python runtime libraries

This release contains as well new Zserio benchmarks together with Protobuf benchmarks by Zserio.

The release contains the following improvement in generated code:

  • Adding of non-explicit empty constructor in generated C++ code

Potential API incompatibilities with previous version:

  • Deprecated Java runtime class ZserioIO has been removed
  • Deprecated Java runtime classes FileBitStreamReader and FileBitStreamWriter have been removed
  • Deprecated Java File constructor has been removed from the generated code
  • Deprecated Java write function to File has been removed from the generated code

Improvements

#459 - Introduce non-explicit empty constructor in C++
#460 - Java: Remove deprecated file write and read methods from generated code
#461 - Java: Remove deprecated ZserioIO class from runtime
#462 - Improve error message when using template with wrong number of arguments
#466 - Optimize pure Python performance
#468 - No difference between explicit and implicit (auto-) values of enum members
#469 - Consider to use C++ implementation in Python runtime
#472 - Extended GitHub Actions configuration needed
#474 - Support Python 3.11 in Zserio build
#478 - Optimize C++ parsing performance
#480 - Extend Zserio benchmarks
#483 - Improve byte aligned reading for strings and bytes

Zserio v2.9.0

02 Dec 12:29
Compare
Choose a tag to compare

The main goal of this release is to publish the following brand new features:

  • Built-in type bytes
  • Raw bytes as request/response in services
  • Raw bytes as messages in pub/subs
  • New warning if documentable type has no sticky comment using specifier [doc-comment-missing]

This release contains the following improvements in generated code:

  • Removal of pre-write actions in generated Java and Python code
  • Removal of initializeOffsets() calling from SQL Table write() method in C++ code
  • Deprecating of file write and read methods in Java code

This release contains as well the following improvements in runtime libraries:

  • Improving serialization and deserialization utitilies together with deprecating of ZserioIO and InitializeOffsetsWriter interfaces in Java
  • Adding serializeToBytes() and deserializeFromBytes() methods in C++

This release contains as well several bug fixes.

Potential API incompatibilities with previous version:

  • This release can potentially break applications which do not initialize offsets and call zserio write() method or pass zserio objects to API for serialization (pubsub, service, SQL table).
    If this happens, the application will have to call initializeOffsets() method explicitly. To make this transition easier, each runtime library contains serialize() and deserialize() methods which call initializeOffsets() method automatically.
  • Python runtime function deserialize_bytes() has been renamed to deserialize_from_bytes() to be consistent with another languages.
  • Java generic method callMethod() in ServiceClientInterface has been slightly changed to use generic parameter.
  • In C++ runtime IBasicServiceData class, the method getReflectable() returns IBasicReflectableConstPtr instead of IBasicReflectablePtr
  • Java runtime ServiceData class has been changed to interface
  • Python runtime ServiceData class has been changed to interface (constructor has been removed)

Potential CLI incompatibility with previous version:

  • The warning specifier [doc-comment-see] has been renamed to [doc-comment-link].
    This change can influence usage of -withWarnings or -withoutWarnings command line options.

Fixes

#421 - StackOverflowError during template instantiation when same name is chosen
#430 - Misleading error message when using parametrized types in a wrong way
#452 - Fix Java validation of SQL virtual tables with null column values
#458 - Wrong unresolved referenced symbol warning in documentation comment

New Features

#426 - Implement warning if documentable type has no sticky comment
#433 - Allow using raw bytes as request/response in services
#448 - Implement new zserio type 'bytes'
#450 - Allow using raw bytes as messages in pub/subs

Improvements

#373 - Java: Consider to remove pre-write actions
#374 - Python: Consider to remove pre-write actions
#399 - Java: Improve serialization utilities in runtime library
#400 - Implement test coverage in Java runtime library
#435 - C++: Remove initializeOffsets calling from SQL Table write
#436 - C++: Implement serializeToBytes and deserializeFromBytes in runtime library
#453 - Java: Deprecate file write and read methods in generated code

Zserio v2.9.0-pre1

14 Nov 08:00
Compare
Choose a tag to compare
Zserio v2.9.0-pre1 Pre-release
Pre-release

The main goal of this pre-release is to publish removal of pre-write actions in Java and Python.

This change can potentially break applications which calls zserio write() method or which passes zserio objects to API for serialization (pubsub, service, SQL table). If this happens, the application will have to call initializeOffsets() method explicitly. To make this transition easier, each runtime library contains serialize() and deserialize() methods which call initializeOffsets() method automatically.

This pre-release contains as well some fixes.

Fixes

#421 - StackOverflowError during template instantiation when same name is chosen
#430 - Misleading error message when using parametrized types in a wrong way
#452 - Fix Java validation of SQL virtual tables with null column values

New Features

#426 - Implement warning if documentable type has no sticky comment

Improvements

#373 - Java: Consider to remove pre-write actions
#374 - Python: Consider to remove pre-write actions
#399 - Java: Improve serialization utilities in runtime library
#435 - C++: Remove initializeOffsets calling from SQL Table write
#436 - C++: Implement serializeToBytes and deserializeFromBytes in runtime library

Zserio v2.8.0

14 Oct 14:44
Compare
Choose a tag to compare

The main goal of this release is to publish the following brand new features:

  • Binary operator isset
  • Documentation in the generated code (containing as well comments from schema) using new command line option -withCodeComments
  • Warnings subsystem which allows filtering using new command line option -withoutWarnings and unique warning specifier (tag)

This release contains the following improvements in generated code:

  • Adding of data types checking of column values in generated C++ and Java validation code
  • Adding possibility to get zserio object from C++ reflectable interface
  • Adding generation of initializeOffsets method in C++ reflectable interface
  • Adding generation of C++ reflectable interface even if -withoutWriterCode is used

This release contains as well the following improvement in runtime libraries:

  • Adding string representation of enumerations and bitmasks in JSON debug string in C++, Java and Python runtime library

This release contains as well several bug fixes.

Fixes

#193 - Documentation see tag does not resolve identifiers correctly
#402 - Non-deterministic Hash Codes for Enumerations
#408 - Dynamic bitfield parameters cause crash of Java or C++ generator
#412 - C++: Creating bitmask and enum arrays via reflections doesn't work
#414 - C++: Dynamic bitfield arrays using parameters are not possible to construct

New Features

#32 - Add support for code documentation
#98 - Implement documentation comments in the generated API code
#403 - Introduce new operator isset for bitmasks
#422 - Redesign command line options for warnings

Improvements

#51 - Consider command line argument to disable "optional clause warnings"
#135 - Consider possibility to disable warning "Enumeration value is not handled in choice"
#230 - Check nested templates for instantiations
#276 - Document all possible compiler warnings
#410 - C++: Generate reflectable interface even when -withoutWriterCode is used
#411 - C++: Add initializeOffsets method to Reflectable interface
#413 - C++: Add possibility to get object from Reflectable interface
#416 - Debug string showing codes as numbers instead of names
#420 - Implement data types checking of column values in validation code

Zserio v2.7.0

15 Jul 11:22
Compare
Choose a tag to compare

The main goal of this release is to publish reading of debug string representation of Zserio objects using JSON format.

This release contains one improvement which generates new optional value reset method in Java and Python code.

The release contains as well two bug fixes in Zserio expression operators.

Fixes

#322 - Dynamic bitfield type do not compile using modulo operator
#401 - Any operator of uint64 type using known values generates uncompilable Java code

New Features

#278 - Implement reading of debug string representation

Improvements

#392 - Introduce optional value resetter in Java and Python

Zserio v2.6.1

23 May 07:31
Compare
Choose a tag to compare

The main goal of this release is to publish the following fixes in debug string representation of Zserio objects:

  • Fix of debug string representation for optional enums and bitmask in generated Python code
  • Fix of const correctness in debug string representation functions in generated C++ code
  • Improvement of compilation error message in debug string representation if C++ reflections are not present

From this release, documentation of Zserio runtime libraries is available online:

Fixes

#397 - Debug string output can fail in Python in case of optional enum or bitmask
#398 - MSVC: Generated C++ code can't be compiled with C++ 17

Improvements

#394 - Implement const alternative of C++ reflections
#395 - Public zserio runtime documentation to GitHub pages
#396 - Improve C++ compilation error message for debug string if reflections are not present