Releases: ndsev/zserio
Zserio v2.0.0
The goal of this main release is to publish stabilized schema language which contains the following new features:
- New zserio type bitmask
- New generated service interface
- New generated pubsub interface
- New zserio type varsize
New generated service interface is completely independent on used communication library and it is up to the application to implement the corresponding service backend.
There are available three sample service backend implementations:
- zserio-service-grpc-cpp - Sample C++ implementation of zserio service using gRPC
- zserio-service-rmi-java - Sample Java implementation of zserio service using RMI
- zserio-service-http-python - Sample Python implementation of zserio service using HTTP
New generated pubsub interface is completely independent on used communication library and it is up to the application to implement the corresponding pubsub backend.
There are available three sample pubsub backend implementations:
- zserio-pubsub-mosquitto-cpp - Sample C++ implementation of zserio pubsub using mosquitto
- zserio-pubsub-paho-mqtt-java - Sample Java implementation of zserio pubsub using Paho MQTT
- zserio-pubsub-paho-mqtt-python - Sample Python implementation of zserio pubsub using Paho MQTT
Please note that this release does not contain old C++98 generator anymore. The last version supporting old C++98 generator is the zserio v1.4.0.
The release contains a lot of fixes and improvements as well.
Fixes
#87 - Name clashing in generated code
#142 - Parameter used as an offset doesn't work
#159 - Bit fields or arrays using 64-bit length don't work in Java
#162 - Ambiguous instantiate error in case of circular imports
#167 - Generated C++ code introduces resource leak in case of SQLite DB opening failure
#171 - Zserio Java generated code clashes with java standard types
#176 - Documentation emitter crashes in case of invalid see tag
#180 - Fix multiline string literals in grammar
#181 - C++ generator crashes if package name begins with underscore
#182 - String concatenation generates uncompilable C++ code
#183 - Fix string literals in SQL constraints and pubsub
#189 - BitStreamWriter.writeBitBuffer fails when internal buffer is used
#190 - Generated code contains reset method for optional fields when -wihoutWriterCode is specified
#207 - C++ - Unaligned cache fill
#208 - Change the last byte implementation in the bit buffer
#210 - Buggy BitStreamWriter constructor from BitBuffer
#211 - BitStreamWriter should not reset whole given buffer
#216 - Wrong constraint checking for optional fields in C++
#218 - Disable functions in offsets
New Features
#129 - Add bitmasks into zserio language
#169 - Redesign generated service interface
#170 - Add pubsub support into zserio language
#200 - Cross language portability for array size
Improvements
#46 - Optimize AnyHolder inplace creation
#153 - Improve static analysis of Java code
#154 - Improve static analysis of C++ code
#155 - Improve static analysis of Python code
#172 - Remove generated annotation from Java generated code
#174 - Consider to restrict implicit arrays
#179 - Change default behaviour of SQL constraint for fields
#184 - Remove '@' character pre-processing in SQL constraints
#187 - Add keyword 'topic' to the pubsub types
#204 - Cross language portability for auto arrays
#205 - Cross language portability for unions
#206 - Cross language portability for strings
#212 - Cross language portability for bit buffer
#217 - Disable dynamic string concatenation
Zserio v2.0.0-pre5
This is the fifth beta version of the zserio v2.0.0 which contains new zserio type varsize
.
New zserio type varsize
can be used in schemas for array sizes which must fulfill cross language portability.
This pre-release contains several fixes as well.
Fixes
#207 - C++ - Unaligned cache fill
#208 - Change the last byte implementation in the bit buffer
#210 - Buggy BitStreamWriter constructor from BitBuffer
#211 - BitStreamWriter should not reset whole given buffer
New Features
#200 - Cross language portability for array size
Improvements
#204 - Cross language portability for auto arrays
#205 - Cross language portability for unions
#206 - Cross language portability for strings
#212 - Cross language portability for bit buffer
Zserio v2.0.0-pre4
This is the fourth beta version of the zserio v2.0.0 which contains several fixes.
Main reason of this pre-release is to solve possible symbol clashing in generated code by introducing some identifier naming restrictions (issue #87). This might break backward compatibility of some schemas.
Fixes
#87 - Name clashing in generated code
#189 - BitStreamWriter.writeBitBuffer fails when internal buffer is used
#190 - Generated code contains reset method for optional fields when -wihoutWriterCode is specified
Zserio v2.0.0-pre3
This is the thirtd beta version of the zserio v2.0.0 which contains slightly changed syntax for pubsub types.
The pubsub interface stays completely independent on used communication library and it is up to the application to implement the corresponding pubsub backend.
Improvements
#187 - Add keyword 'topic' to the pubsub types
Zserio v2.0.0-pre2
This is the second beta version of the zserio v2.0.0 which contains new generated pubsub interface.
New generated pubsub interface is completely independent on used communication library and it is up to the application to implement the corresponding pubsub backend.
There are available three sample pubsub backend implementations:
- zserio-pubsub-mosquitto-cpp - Sample C++ implementation of zserio pubsub using mosquitto
- zserio-pubsub-paho-mqtt-java - Sample Java implementation of zserio pubsub using Paho MQTT
- zserio-pubsub-paho-mqtt-python - Sample Python implementation of zserio pubsub using Paho MQTT
The pre-release contains several fixes as well.
Fixes
#176 - Documentation emitter crashes in case of invalid see tag
#180 - Fix multiline string literals in grammar
#181 - C++ generator crashes if package name begins with underscore
#182 - String concatenation generates uncompilable C++ code
#183 - Fix string literals in SQL constraints and pubsub
New Features
#170 - Add pubsub support into zserio language
Improvements
#174 - Consider to restrict implicit arrays
#179 - Change default behaviour of SQL constraint for fields
#184 - Remove '@' character pre-processing in SQL constraints
Zserio v2.0.0-pre1
This is the first beta version of the zserio v2.0.0 which contains
New generated service interface is completely independent on used communication library and it is up to the application to implement the corresponding service backend.
There are available three sample service backend implementations:
- zserio-service-grpc-cpp - Sample C++ implementation of zserio service using gRPC
- zserio-service-rmi-java - Sample Java implementation of zserio service using RMI
- zserio-service-http-python - Sample Python implementation of zserio service using HTTP
Please note that this pre-release does not contain old C++98 generator anymore. The last version supporting old C++98 generator is the zserio v1.4.0.
The pre-release contains several fixes as well.
Fixes
#142 - Parameter used as an offset doesn't work
#162 - Ambiguous instantiate error in case of circular imports
#167 - Generated C++ code introduces resource leak in case of SQLite DB opening failure
#171 - Zserio Java generated code clashes with java standard types
New Features
#129 - Add bitmasks into zserio language
#169 - Redesign generated service interface
Improvements
#46 - Optimize AnyHolder inplace creation
#153 - Improve static analysis of Java code
#154 - Improve static analysis of C++ code
#155 - Improve static analysis of Python code
#172 - Remove generated annotation from Java generated code
Zserio v1.4.0
The main goal of this release is to publish
- templates in the zserio language,
- new instantiate keyword to support explicit template instantiations and
- new zserio type extern to support proprietary extensions.
Zserio templates got inspiration from C++ class templates concept and borrowed syntax from Java generics.
Please note that all template instantiations are resolved during zserio compilation not to put any hurdle to generators and to support languages which do not have natively templates.
This release contains as well a change of the generated C++ API for optional members not to force applications to use internal zserio OptionalHolder
abstraction.
This is the last release which contains the old C++ generator which can be invoked using command line argument '-cppStandard c++98'
. However, please note that this old C++ generator does not support new zserio type extern.
Fixes
#148 - Choices with complicated selector does not work for C++ and Java
#151 - GRPC service endpoints are language dependent
#158 - Generated template file names too long
#161 - Instantiate type does not resolve subtypes
New Features
#70 - Add extern keyword into zserio language to support proprietary extensions
#144 - Add templates into zserio language
#150 - Add instantiate keyword into zserio language
Improvements
#146 - C++11: optional access unnecessary
Zserio v1.4.0-pre2
The main goal of this pre-release is to publish
- new instantiate keyword to support explicit template instantiations and
- new zserio type extern to support proprietary extensions.
Fixes
#151 - GRPC service endpoints are language dependent
New Features
#70 - Add extern keyword into zserio language to support proprietary extensions
#150 - Add instantiate keyword into zserio language
Zserio v1.4.0-pre1
The main goal of this pre-release is to publish templates in the zserio language to allow testing before main release.
Zserio templates got inspiration from C++ class templates concept and borrowed syntax from Java generics.
Please note that all template instantiations are resolved during zserio compilation not to put any hurdle to generators and to support languages which do not have natively templates.
This pre-release contains as well a change of the generated C++ API for optional members not to force applications to use internal zserio OptionalHolder
abstraction.
Fixes
#148 - Choices with complicated selector does not work for C++ and Java
New Features
#144 - Add templates into zserio language
Improvements
#146 - C++11: optional access unnecessary
Zserio v1.3.0
The main goal of this release is to publish modernized C++ generator together with C++ runtime library which supports C++11 standard.
The following are main new features in C++11 generated code:
- Scoped strongly typed enumerations
- Field constructors using perfect forwarding
- Move constructors
- Move assignment operators
- Zserio arrays mapped directly to STL vector
- Zserio optional members mapped to zserio::OptionalHolder
For more information about generated C++11 code, please check Zserio C++ Quick Start Tutorial.
The old C++ generator is still supported and can be invoked using command line argument '-cppStandard c++98'
. However, it's deprecated and can be removed anytime in the future.
The second goal of this release is to upgrade the grammar compiler ANTLR from version 2 to the newest version 4 which required a huge zserio core redesign.
The release contains several fixes as well.
Fixes
#107 - C++ and python generate wrong includes / imports for default package sources
#113 - Indexed offsets do not work in Python if code only for reader is generated
#114 - Wrong Python code for functions with the same name
#130 - Generated Python code fails during reading table row with NULL columns
#131 - Implicit array cannot have indexed offsets
#132 - Script build.sh is not working if project path contains spaces
#139 - Amalgamation source file is not generated for default package into directory '.'
New Features
#36 - optional support for initializer_list
#108 - Modern C++ Generator
Improvements
#121 - Generate __init__.py for each package
#123 - Upgrade ANTLR2 to the newest ANTLR4
#125 - cppcheck does not check C++ header files
#136 - Remove GRPC from c++98 emitter
#137 - Forbid ZSERIO prefix in all identifiers
#138 - Remove sum operator