Releases: ndsev/zserio-cpp17
v1.1.0
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
maxArrayPreallocin 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
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
-withSourcesAmalgamationfor amalgamation support (disabled by default). - Adaptation of the runtime library to be built as a shared library.
- New
usingdeclarations for template arguments,ArrayViewinstantiations andViewsinDataabstraction.
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
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
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 thestd::allocatorto be used in generated code.pmr:This value sets thestd::pmr::polymorphic_allocatorto be used in generated code.ppmr:This value sets thezserio::pmr::PropagatingPolymorhpicAllocatorto 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
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
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
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.