Skip to content

Releases: ndsev/zserio-cpp17

v1.1.0

30 Apr 12:07

Choose a tag to compare

This is a patch release for the Zserio C++17 extension, focusing on security issues recently reported in Zserio.

It is designed as an extension to the Zserio version 2.18.1.

Highlights:

  • Added support for Java 21
  • Fixed integer overflow in the BitStreamReader on 32-bit platforms
  • Implemented validation of the read size against the size of the remaining bits in the stream
  • Implemented a new runtime parameter maxArrayPrealloc in the BitStreamReader, whose value will act as an upper limit for the preallocation of read array
  • Added new section Out of Memory Allocation Errors into the documentation

Caution

Earlier versions of the C++17 Extension did not include the maxArrayPrealloc limit n the BitStreamReader. However, it is now implemented and set to 128KB by default to ensure protection in all cases. This default may cause undesired reallocations during reading, violating the rule of consecutive memory allocation. Therefore, please ensure you set a suitable maxArrayPrealloc limit for your application after this update!


Fixes

#114 - Validate the read size against the size of the remaining bits in the stream

Improvements

#110 - Fix this-escape Warning

v1.0.0

06 Mar 13:33

Choose a tag to compare

This is the first stable release of the Zserio C++17 extension for production use.

It is designed as an extension to the Zserio version 2.18.0.

This release contains the following new features:

  • New command line parameter -withSourcesAmalgamation for amalgamation support (disabled by default).
  • Adaptation of the runtime library to be built as a shared library.
  • New using declarations for template arguments, ArrayView instantiations and Views in Data abstraction.

Fixes

#79 - Wrong code generated for choice with only default case
#88 - Optional with default value is not reset during read
#92 - Debug builds with a huge choice are very demanding on memory
#95 - Add missing cstdint include in JsonEncoder.h
#98 - Client Methods do not Respect -withTypeInfoCode
#101 - Fix RTTI issues in the runtime library for MacOS
#102 - Templated Struct View is Missing the zserioData() Implementation
#103 - Fix Temporary Optional Value Access
#105 - Any and dependant types don't work properly in multi target environment with hidden symbols

New Features

#89 - Emitted c++ code for templates should have a using declaration per template argument
#90 - Amalgamation Support is Missing
#91 - Improve Access to View and Array Types
#93 - Adapt runtime to build as shared library
#107 - Emitted c++ code for arrays should have a using declaration per ArrayView instantiation

Improvements

#85 - Zserio Optional doesn't have all versions of constructors / assignment operators
#94 - Fixes problem with RTTI in Zserio runtime
#100 - Adapt runtime to build without or with custom SQLite dependency
#104 - Improve test framework to catch the missing zserioData() implementation

Zserio C++17 Extension v0.5.0

01 Aug 06:06

Choose a tag to compare

Pre-release

This is the fifth pre-release of the new Zserio C++17 extension aimed for the full testing.

This pre-release fully supports the Zserio language and Zserio templates are implemented using C++ native templates.

The C++17 extension is designed as an extension to the Zserio version 2.17.0.

The C++17 extension binary cannot be run standalone. It must be run using Zserio bundle (or Zserio core). It is enough just to copy zserio_cpp17.jar to the directory where Zserio bundle (or Zserio core) is located and run the following command:

java -jar zserio.jar schema_name.zs -cpp17 output_directory_name

Zserio C++17 Extension v0.4.0

16 May 08:55

Choose a tag to compare

Pre-release

This is the fourth pre-release of the new Zserio C++17 extension aimed for the full testing.

This pre-release integrates important user feedback, including support of std::pmr::polymorphic_allocator.

The command line argument -setCppAllocator now accepts three new values:

  • std: This value sets the std::allocator to be used in generated code.
  • pmr: This value sets the std::pmr::polymorphic_allocator to be used in generated code.
  • ppmr: This value sets the zserio::pmr::PropagatingPolymorhpicAllocator to be used in generated code.

This pre-release fully supports the Zserio language. However, Zserio templates are still implemented using template instantiations, not using C++ native templates.

The C++17 extension is designed as an extension to the Zserio version 2.16.0.

The C++17 extension binary cannot be run standalone. It must be run using Zserio bundle (or Zserio core) by the following command:

java -cp zserio.jar:zserio_cpp17.jar zserio.tools.ZserioTool schema_name.zs -cpp17 output_directory_name

Please note that the classpath separator on Windows is ';' instead of ':'.

Zserio C++17 Extension v0.3.0

22 Apr 12:11

Choose a tag to compare

Pre-release

This is the third pre-release of the new Zserio C++17 extension aimed for the full testing.

This pre-release is the first feature complete pre-release including Type Information, Reflections, Introspections and JSON export and import.

It fully supports the Zserio language. However, Zserio templates are implemented using template instantiations, not using C++ native templates.

The C++17 extension is designed as an extension to the Zserio version 2.16.0.

The C++17 extension binary cannot be run standalone. It must be run using Zserio bundle (or Zserio core) by the following command:

java -cp zserio.jar:zserio_cpp17.jar zserio.tools.ZserioTool schema_name.zs -cpp17 output_directory_name

Please note that the classpath separator on Windows is ';' instead of ':'.

Zserio C++17 Extension v0.2.0

19 Feb 15:34

Choose a tag to compare

Pre-release

This is the second pre-release of the new Zserio C++17 extension aimed for the full beta testing.

This pre-release fully supports the Zserio language but has the following limitations:

  • Zserio templates are implemented using template instantiations, not using C++ native templates
  • Support for generic programming, including type information, JSON export and import and reflections is not implemented

The C++17 extension is designed as an extension to the Zserio version 2.16.0.

The C++17 extension binary cannot be run standalone. It must be run using Zserio bundle (or Zserio core) by the following command:

java -cp zserio.jar:zserio_cpp17.jar zserio.tools.ZserioTool schema_name.zs -cpp17 output_directory_name

Please note that the classpath separator on Windows is ';' instead of ':'.

Zserio C++17 Extension v0.1.0

28 Nov 12:56

Choose a tag to compare

Pre-release

This is the first pre-release of the brand new Zserio C++17 extension aimed for the first beta testing.

This pre-release has many limitations:

  • The following Zserio language features are not implemented and are silently ignored without any warning and generated code:
    • SQL Tables
    • SQL Databases
    • Service Types
    • Pubsub Types
    • Offsets
  • Zserio Extended Members are not implemented and are always generated as regular compound fields
  • Zserio templates are implemented using template instantiations, not using C++ native templates
  • Support for generic programming, including type information, JSON export and import and reflections is not implemented

The C++17 extension is designed as an extension to the Zserio version 2.15.0.

The C++17 extension binary cannot be run standalone. It must be run using Zserio bundle (or Zserio core) by the following command:

java -cp zserio.jar:zserio_cpp17.jar zserio.tools.ZserioTool schema_name.zs -cpp17 output_directory_name

Please note that the classpath separator on Windows is ';' instead of ':'.

Please note that the generated C++17 sources must be linked with the attached Zserio C++17 runtime library.