Comments (1)
We will try to make the first implementation applying the following requirements:
- Schema authors should not be forced to decide at the beginning which type is relevant for forward/backward compatibility.
- Overhead (data and runtime) for clients which are fully compatible should be avoided.
- Compatibility data should be the same for any older compatible version.
The following restrictions will be applied:
- Field removal or type change is forbidden.
- Only adding field/item at the end of structures, choices, unions, enumerations and bitmasks are allowed.
- Enumerations which use whole range of underlying type cannot be extended.
- Choices which have non-empty default case cannot be extended.
Our current solution will be storing the bit size of all compounds (encoded as varsize) in the independent data stream (called
compatibility data).
In the first implementation, compatibility data will be compressed using RLE (efficient for array of compounds of the same bit size). Further size optimizations could be possible in the future on demand.
Note: Don't forget to implement handling of bit size zero in compatibility data. Bit size zero means that compound type is not extended at all (was and is empty).
Note: Don't forget to properly document this feature.
from zserio.
Related Issues (20)
- Consider to remove CodeQL queries for AUTOSAR
- Python runtime tests fail for new Python 3.12.3 HOT 2
- C++ runtime tests fail for C++17 using MSVC v142
- Docs: Improve README.md documentation for Java/Python/HTML/XML generator
- C++ runtime tests fail for C++11 using MinGW 7.5.0
- Add black tool to check all Python sources
- Add support for compile time reflection
- Fix MISRA C++ 2023 rule 7.0.5 "Integral promotion or the usual arithmetic conversions shall not change the type signedness" HOT 2
- Fix MISRA C++ 2023 rule 9.3.1 "Conditional statement 'if' in a function 'readBufferFromFile' should be followed by a block" HOT 2
- Fix MISRA C++ 2023 rule 0.1.2 "Unused function's 'put' return value" HOT 1
- Fix MISRA C++ 2023 rule MISRACPP2023-7_0_6-a Do not use a value of type 'int' to initialize a variable of type 'uint16_t'
- Fix MISRA C++ 2023 rule MISRACPP2023-6_4_1-a Identifier 'allocator' is hiding an identifier from global or namespace scope
- Fix MISRA C++ 2023 rule MISRACPP2023-8_2_2-a C-style cast to 'allocator_type' type is used
- Fix MISRA C++ 2023 rule MISRACPP2023-6_7_2-a Consider encapsulating variables
- Fix for MISRA C++ 2023 rule MISRACPP2023-6_4_1-c The identifier 'value' hides an identifier declared in class 'optional_holder_base'
- Fix for MISRA C++ 2023 rule MISRACPP2023-15_1_3-a Constructor 'heap_optional_holder' allowing conversion should be made explicit
- Check for minimum C++ standard version doesn't work HOT 1
- Java doesn't check compound parameters which are used deep in packed arrays HOT 1
- Update documentation of bitmask types that they does not have to be always prefixed
- Exception when deserialising enums with newer Python versions HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from zserio.