Giter Club home page Giter Club logo

Comments (1)

mikir avatar mikir commented on May 24, 2024

We will try to make the first implementation applying the following requirements:

  1. Schema authors should not be forced to decide at the beginning which type is relevant for forward/backward compatibility.
  2. Overhead (data and runtime) for clients which are fully compatible should be avoided.
  3. Compatibility data should be the same for any older compatible version.

The following restrictions will be applied:

  1. Field removal or type change is forbidden.
  2. Only adding field/item at the end of structures, choices, unions, enumerations and bitmasks are allowed.
  3. Enumerations which use whole range of underlying type cannot be extended.
  4. 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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.