Skip to content

Releases: ndsev/zserio

Zserio v2.15.0

30 Oct 08:10
Compare
Choose a tag to compare

Zserio Core 2.15.0

  • Improved warning message for optional fields
  • Disabled most of the expressions in offsets
  • Fixed checking of duplicated offsets
  • Fixed checking of offset usage in expressions

C++ Extension 1.1.0

  • Implemented generation of parsing information code using new command line option -withParsingInfoCode
  • Improved generated const literals to be constexpr
  • Fixed possibility of passing large parameters by value for packed arrays
  • Fixed violations of several MISRA C++ 2023 rules
  • Fixed auto optional fields generated without writer code using command line option -withoutWriterCode

Java Extension 1.1.2

  • Improved documentation
  • Fixed auto optional fields generated without writer code using command line option -withoutWriterCode

Python Extension 1.0.3

  • Improved documentation
  • Fixed auto optional fields generated without writer code using command line option -withoutWriterCode

Fixes

#168 - Improve offset expression checking
#571 - Improve warning message for optional fields
#586 - Fix MISRA C++ 2023 rule 8.2.5 "reinterpret_cast shall not be used"
#605 - Fix MISRA C++ 2023 rule 7.0.5 "Integral promotion or the usual arithmetic conversions shall not change the type signedness"
#607 - Fix MISRA C++ 2023 rule 0.1.2 "The value returned by a function shall be used"
#609 - Fix MISRA C++ 2023 rule 6.4.1 "A variable declared in an inner scope shall not hide a variable declared in an outer scope"
#624 - Unexpected error message when using '-withReflectionCode'
#627 - Fix MISRA C++ 2023 rule 8.2.6 "An object with integral, enumerated, or pointer to void type shall not be cast to a pointer type"
#628 - Fix MISRA C++ 2023 rule 7.0.3 "The numerical value of a character shall not be used"
#630 - Fix MISRA C++ 2023 rule 7.0.4 "The operands of bitwise operators and shift operators shall be appropriate"
#631 - Fix MISRA C++ 2023 rule 6.7.1 "Local variables shall not have static storage duration"
#632 - Fix MISRA C++ 2023 rule 13.3.3 "The parameters in all declarations or overrides of a function shall either be unnamed or have identical names"
#633 - Fix MISRA C++ 2023 rule 12.3.1 "The union keyword shall not be used"
#634 - Fix MISRA C++ 2023 rule 28.6.2 "Forwarding references and std::forward shall be used together"
#635 - Fix MISRA C++ 2023 rule 5.10.1 "User-defined identifiers shall have an appropriate form"
#637 - Fix MISRA C++ 2023 rule 15.0.1 "Special member functions shall be provided appropriately"
#639 - Fix MISRA C++ 2023 rule 19.2.2 "The #include directive shall be followed by either a or "filename" sequence"
#640 - Offsets should not be allowed in expressions
#645 - Duplicated offsets should be disabled
#654 - Optional Fields without Writer Coder Result in Invalid Generated Code
#657 - Big Parameters passed by value (more than the threshold value of 128 bytes)
#660 - Fix MISRA C++ 2023 rule 7.11.2 "An array passed as a function argument shall not decay to a pointer"

New Features

#652 - Emit Source Positions for Compounds

Improvements

#509 - All generated c++ const literals should be constexpr
#597 - Docs: Improve README.md documentation for Java/Python/HTML/XML generator
#618 - Update documentation of bitmask types that they does not have to be always prefixed
#641 - Disallow most of the expressions in offsets
#665 - Separate test schemas to the different repository core enhancement

Zserio v2.14.1

19 Jul 07:23
Compare
Choose a tag to compare

C++ Extension 1.0.2

  • Fixed checking of the number of bits for dynamic bit fields in runtime library
  • Fixed moving of the variables in the reflectable in runtime library
  • Fixed MSVC warnings
  • Fixed MISRA C++ 2023 rules 9.3.1 and 0.1.2
  • Fixed SonarCloud rules for bitwise operators
  • Fixed all sign-coversion warnings reported by gcc compilers

Java Extension 1.1.1

  • Fixed checking of the number of bits for dynamic bit fields in runtime library
  • Fixed checking of the compound parameters in packed arrays

Python Extension 1.0.2

  • Fixed checking of the number of bits for dynamic bit fields in runtime library
  • Fixed enumerations in runtime library to solve the backward incompatible change in EnumType implementation of the new Python version 3.12.3

Fixes

#513 - Runtime libraries don't check numBits properly during serialization / deserialization
#587 - MSVC produces some warnings in CI builds
#588 - Benchmarks do not compile with MinGW in Debug mode (CI build)
#589 - Set cpp allocator tests do not work in CI build with MSVC in Debug
#595 - Python runtime tests fail for new Python 3.12.3
#599 - C++ runtime tests fail for C++11 using MinGW 7.5.0
#606 - Fix MISRA C++ 2023 rule 9.3.1 "The body of an iteration-statement or a selection-statement shall be a compound-statement"
#607 - Fix MISRA C++ 2023 rule 0.1.2 "The value returned by a function shall be used"
#614 - Check for minimum C++ standard version doesn't work
#616 - Java doesn't check compound parameters which are used deep in packed arrays
#621 - Local variables in C++ runtime reflectable are not automatically moved
#622 - Solve SonarCloud rule "Results of ~ and << operations on operands of underlying types unsigned char..."
#623 - Solve SonarCloud rule "Bitwise operators should not be applied to signed operands"
#625 - Fix all sign-conversion warnings reported by gcc compiler

Improvements

#620 - Improve documentation about C++ custom memory management

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