FlatBuffers: Memory Efficient Serialization Library

Overview

logo FlatBuffers

Build Status Build status Join the chat at https://gitter.im/google/flatbuffers Discord Chat Twitter Follow

FlatBuffers is a cross platform serialization library architected for maximum memory efficiency. It allows you to directly access serialized data without parsing/unpacking it first, while still having great forwards/backwards compatibility.

Go to our landing page to browse our documentation.

Supported operating systems

  • Windows
  • MacOS X
  • Linux
  • Android
  • And any others with a recent C++ compiler.

Supported programming languages

  • C++
  • C#
  • C
  • Dart
  • Go
  • Java
  • JavaScript
  • Lobster
  • Lua
  • PHP
  • Python
  • Rust
  • TypeScript

and more in progress...

Contribution

To contribute to this project, see CONTRIBUTING.

Licensing

Flatbuffers is licensed under the Apache License, Version 2.0. See LICENSE for the full license text.


Comments
  • Feature RFC: Flatbuffers support for Optional types.

    Feature RFC: Flatbuffers support for Optional types.

    Note: This top comment is heavily edited. It was kept up with the current state until this issue closed.

    Motivation

    Flatbuffers should allow users to choose to use optional types. There has been some interest in distinguishing between default values (which are not stored in the binary) and some notion of None which the user controls.

    Here are some links to previous interest in this idea:

    • #333
    • #3777
    • https://groups.google.com/forum/#!topic/flatbuffers/1hrNtBI0BQI
    • https://github.com/google/flatbuffers/issues/5875#issuecomment-619737916

    Currently, a user can control a field's presence in the binary by specifying "force_defaults" and checking "IsFieldPresent" which is a bit of a hack. This proposal should define proper Flatbuffers optional types, which should be a better way of doing this. Use of this feature is only advisable for new fields, since changing default values is in general backwards-incompatible.

    How do we represent this in the schema file?

    We will specify it like so

    table Monster { mana: int = null; }
    

    This visually implies that optional types are at odds with default values and is "consistent" since the value to the right of the equals sign is what we interpret non-presence to mean.

    Change to Schema Grammar:

    field_decl = ident : type [ = (scalar | null) ] metadata ;

    ~We can add a field tag, e.g. "optional" or "no_default", that triggers this behavior. Hopefully no one is using those tags. Maybe we can make it specifiable to flatc, an "--optional-field-keyword-tag" flag, just in case people are using it and can't stop.~

    How do we represent this in the binary?

    We are going with option (A).

    (A) Non-Presence means None

    Instead of omitting zero-like values, the generated code must store them. Non-presence for optional fields no longer means "whatever the default is," now it means None. You can interpret it as "the default value is None". This also means we cannot specify both specify a non-null default and mark the field as optional.

    Pros:

    • This seems more intuitive.
    • It aligns with the "force_defaults" + "IsFieldPresent" hacky manual approximation of this feature.
    • If Nones are more common than zero-likes then this will have smaller binaries.

    Cons:

    • @aardappel thinks this is harder to implement

      "making presence an indicator would require we pass this special field status down to the field construction code to override the current val == default check, which means slowdown, codegen and runtime changes in all languages.. whereas my "least likely to be used default" trick requires no changes"

    ~(B) Some Sentinel value means None~

    In this scenario, zero-like values are still not stored. Instead we choose some "sentinel" value which we interpret to be None (e.g. int can use int_min and float can use some kind of Nan).

    Pros:

    • @aardappel thinks this is easier to implement

      "it requires the schema parser to set default values for you, and no changes anywhere else"

    • If zero-likes are more common than None then this will have smaller binaries

    Cons:

    • Someone might want to use the sentinel value (Hyrum's law).
      • This can be mitigated by publishing the sentinels and letting users decide whether they need the sentinels.
    • This probably won't work for fields representing raw bits.

    How do we represent this in every language API?

    We'll need to change the type signature of all generated code (building/reading/mutating/object/etc) around the optional type to signal its optional-ness. I think we should use the language's local standard for optional types. Suggestions:

    • Python: Optional[T].
    • Rust: Option<T>.
    • C++17 has std::optional<T> but its not obvious what to use for earlier versions. T* would work.
    • Java: Optional shows up in Java 1.8 and triggers autoboxing, so idk :/

    The exact generated-API for a language should be discussed in the PR implementing this feature in that language.

    Out of scope

    (I'll add links if you make issues for these feature requests)

    • Syntactic types
    • Default values for strings and tables

    TODO

    | task | owner | done |---|---|---| | Change flatc to support schemas with optional types and cause an error if they're used in unsupported languages | @CasperN | #6026 ✅ | Implement optional type API in C++ | @vglavnyy | #6155 ✅ | Implement optional type API in Java | @paulovap | #6212 ✅ | Implement optional type API in Rust | @CasperN | #6034 ✅ | Implement optional type API in Swift | @mustiikhalil | #6038 ✅ | Implement optional type API in lobster | @aardappel | ✅ | Implement optional type API in Kotlin | @paulovap | #6115 ✅ | Implement optional type API in Python | @rw? | Implement optional type API in Go | @rw? | Implement optional type API in C | @mikkelfj | ✅ | Implement optional type API in C# | @dbaileychess | #6217 ✅ | Implement optional type API in Typescript/javacscript | @krojew | #6215 ✅ | Php, Dart, etc ... | ? | Update documentation to advertise this feature | @cneo | #6270 ✅

    [edits]

    • added todo list
    • added points from the discussion to each section.
    • added out of scope section
    • Decision: go with (A) and use = null syntax in schema file (cross out alternatives)
    • Updated TODO list, finished parser, Rust in progress
    • Change to schema grammar, link to swift PR, Note at top
    • Added more languages to the TODO
    • Lobster support 🦞
    • Kotlin and C support
    • Java, C#, TS/JS support and docs, issue closed, no longer editing.
    opened by CasperN 136
  • Fixed array length

    Fixed array length

    This change ports the pull request #3987 by daksenik and idoroshev to the most recent commit and adds support for generation of JSON schema, Java, C# and Python.

    opened by svenk177 101
  • Support for Rust programming language

    Support for Rust programming language

    This pull request include an implementation of the Flatbuffers runtime for the Rust programming language and Rust code generation via the flatc binary.

    Code is well documented and currently passes a full suite of tests. I do however still need to add a sample and do more benchmark testing. In the meantime I want to get this on the projects radar to discuss.

    Thanks!

    opened by josephDunne 76
  • [Swift] Swift implementation 🎉🎉

    [Swift] Swift implementation 🎉🎉

    Good afternoon,

    @mzaks and I hope with this PR we would be able to add an official implementation for swift, it's heavily inspired by the C++ and C# implementations. There are some elements that are still missing such as the code generator and also documentation for the code base, however I found that we can implement those after getting an initial review for the swift code base, and if it lives up to the standards.

    The FlatBuffer class uses apples underlaying UnsafeMutableRawPointer which allows is to write directly to the memory, and lefts a lot of heavy weight from our shoulders, since this implementation comes which the following function storeBytes with takes a value and it's Bytes representation and just adds it to the buffer. UnsafeMutableRawPointer the name is a bit misleading since it's actually safe to use if everything writing the bytes is well structured. and since we don't really allow the user to get to the underlying adding and pushing to the buffer and only allowing them to do so through the builder it would be completely safe to use it.

    The FlatBuffersBuilder class uses the same underlying logic as C++ and C#, but unlike C# it relies on generics to actually add bytes and elements into the buffer. we took a different approach regarding adding the structs into the buffer, since swift uses the storeBytes to actually store the struct into the buffer, and since FlatBuffers do not allow string in Structs we took that into our advantage.

    struct Vec2: Writeable {
        var _x: Float32
        var _y: Float32
        var _z: Float32
        var _c: Color2
    
         init(x: Float32, y: Float32, z: Float32, color: Color2) { _c = color; _x = x; _y = y; _z = z }
    
         static func createVec2(_ bb: FlatBuffersBuilder, v: Vec2) -> Offset<UOffset> {
            return bb.create(struct: v)
        }
    }
    

    the following struct will be able to be directly inserted into the buffer, and we will be implementing a reader struct that will read the Writable struct as shown below. This will have the same concept as the builder Objects in c++. The readers were implemented to follow the C# way of fetching elements from the buffer.

    struct Vec2_Read: Readable {
        private var __p: Struct
        init(_ fb: FlatBuffer, o: Int32) { __p = Struct(bb: fb, position: o) }
        var c: Color2 { return Color2(rawValue: __p.readBuffer(of: Int32.self, at: 12)) ?? .red }
        var x: Float32 { return __p.readBuffer(of: Float32.self, at: 0)}
        var y: Float32 { return __p.readBuffer(of: Float32.self, at: 4)}
        var z: Float32 { return __p.readBuffer(of: Float32.self, at: 8)}
    }
    

    All the test case are passing, and they were created by the flatc code generator for both C++ and C#, and the basic implementation of swift was verified against those two since the code generator isn't implemented yet.

    what's missing: 1- Code Generator 2- Documentation 3- Benchmarking

    when merging this PR we would be closing the following issues, Closes #5504. and I will be rebasing the commit before merging for sure

    opened by mustiikhalil 75
  • Tracking issue: Rust buffer verification

    Tracking issue: Rust buffer verification

    This is a tracking issue to document design and implementation of a verifier system for Rust Flatbuffers. I'm thinking that we can clone the logic from the C++ codebase.

    The benefit is twofold:

    1. Verifiers let users check if data is valid, thereby providing a security check for unknown data.
    2. If a buffer is verified, we can justify using more unsafe pointer access in Rust, thereby removing bounds checking.

    Anyone have thoughts on this? @aardappel

    enhancement rust 
    opened by rw 69
  • Non smart pointers --gen-object-api version

    Non smart pointers --gen-object-api version

    It is needed to allow the users to assign one struct to another.

    I also added implementation for operator= for unions, now you can do: union1 = union2; or union1 = supportedStruct;

    It is also needed for the upcoming (in the (near) future) Qt support.

    opened by bog-dan-ro 68
  • [TS/JS] New gen TS code gen

    [TS/JS] New gen TS code gen

    Modernize TS/JS code gen by doing a reworked TS only code gen.

    TODO

    • [x] Split output into modules (files)
    • [x] Devise a sensible alias/prefix for flatbuffers imports to not collide with user symbols
    • [x] Track needed imports
    • [x] Alias imported symbols if same name from different namespaces
    • [x] Do not generate extra ;
    • [x] Fix wrong static method generation
    • [x] Drop flatbuffers namespace completely
    • [x] var to let or const
    • [x] Remove ns wrapping/prefixing
    • [x] Fix object API
    • [x] Remove obsolete generator options
    • [x] Fix and verify JavaScriptFlexBuffersTest.js
    • [x] Remove jsdoc type annotations

    Documentation

    • [ ] Decide what to do about Compiler.md, JavaScriptUsage.md, Tutorial.md and javascript_sample.sh

    TODO (undecided)

    • [ ] Resolve closer relative paths in imports
    • [ ] Avoid unused imports
    • [ ] Proper indentation
    • [ ] Const correctness
    • [ ] noImplicitAny compliant generated source
    c++ javascript typescript codegen documentation json CI 
    opened by bjornharrtell 66
  • FlatBuffers 2.0 tracking issue

    FlatBuffers 2.0 tracking issue

    This issue is to keep track of the FlatBuffers 2.0 release, which is intended to be "soon", but also "when its done".

    2.0 you ask? Wasn't the last one 1.12 ? Yes, because:

    • We're going to attempt to adhere as best we can to "Semantic Versioning" from now on. Past releases were simply 1.0 thru 1.12 with no regard for how many breaking changes were in a release. Generally, every release so far has been breaking for at least 1 language, but we have not expressed that. If we continue our habit of occasionally breaking APIs, the release after this one may thus have to be 3.0 instead of 2.1, but we'll see. Our version architect is @krojew
    • We actually do seem to have more breaking changes than usual, with especially Rust getting a big overhaul, but also Swift, Python and others. So 2.0 seems appropriate.

    What are we waiting for? We are waiting for some of these larger breaking changes to "settle down". This thread will link those issues, once all are merged we'll get the release going.

    Also worth mentioning: we are attempting to work towards a structure where FlatBuffers development is more "distributed", with clear individual maintainers for each language, that may at some point may make language package releases and such independently of the main FlatBuffers releases. But this will take time.

    opened by aardappel 60
  • [Python] (scalar) vector reading speedup via numpy

    [Python] (scalar) vector reading speedup via numpy

    Reading vectors with generated Python code is slow. There have been other efforts to speed this up but they appear to have stagnated.

    This PR attempts to make a minimal change that covers a use case I personally hit a lot (copying over large vectors that represent nested flatbuffers). There may be other small changes that could drastically speed up other use cases that are not included here since I am unaware of them :)

    What's the change?

    This PR adds support for accessing a scalar vector as a numpy array of the corresponding type. This is much faster than copying large vectors element-by-element.

    • Update the Table class in Python to have a GetVectorAsNumpy method which returns a zero-copy view (in numpy terminology) into a scalar vector cast as the correct type.
    • Update the python-code-generation code (idl_gen_python.cpp) to generate a method which wraps GetVectorAsNumpy in generated code. This method is named <field name>AsNumpy, which can be compared to the generated name of the method to get the length of a vector, <field name>Length. Attempting to use this method if numpy is not installed will result in an error, but otherwise numpy is optional.
    • Update appveyor CI to run Python tests.
    • Update python docs appropriately.

    See also

    • #4090 Byte data from flatbuffer vector into a Python NumPy array
      • This PR can probably close that issue?
    • #4144 Reading and Writing Binary blobs is incredibly slow with the default API!
      • This PR can probably close that issue?
    • #4152 Python: Add numpy array accessors for vectors [WIP]
      • The PR here and that PR seem to accomplish similar things, but I haven't read enough details to say whether or not the PR here completely supersedes that one.
    • #284 Python: Support Cython build
    • #304 Python: Speedup with cython extension (closed by author due to lack of time)
    opened by kbrose 53
  • Port FlatBuffers to Python.

    Port FlatBuffers to Python.

    Implement code generation and runtime library for Python 2 and 3, derived from the Go implementation. Additionally, the test suite verifies:

    the exact bytes in the Builder buffer during many scenarios, vtable deduplication, and table construction, via a fuzzer derived from the Go implementation.

    opened by rw 50
  • TypeScript support

    TypeScript support

    Thank you for submitting a PR!

    Please make sure you include the names of the affected language(s) in your PR title. This helps us get the correct maintainers to look at your issue.

    If you make changes to any of the code generators, be sure to run cd tests && sh generate_code.sh (or equivalent .bat) and include the generated code changes in the PR. This allows us to better see the effect of the PR.

    If your PR includes C++ code, please adhere to the Google C++ Style Guide, and don't forget we try to support older compilers (e.g. VS2010, GCC 4.6.3), so only some C++11 support is available.

    Include other details as appropriate.

    Thanks!

    opened by krojew 48
  • [C#] Object API - Invalid Property Name used in UnPackTo for union field

    [C#] Object API - Invalid Property Name used in UnPackTo for union field

    flatc 22.12.06 generates invalid Code for the following schema:

    namespace TestNs;
    
    union U_Test {
    	TestValueInt,
    	TestValueDouble
    }
    
    table Test {
    	value : U_Test;
    }
    
    table TestValueInt {
    	value : int;
    }
    
    table TestValueDouble {
    	value : double;
    }
    

    The code generated with flatc.exe --csharp --gen-onefile --gen-object-api csobjectapi.fbs tries to access a property named Value_ while the name of the property is Value.

      public void UnPackTo(TestT _o) {
        _o.Value = new TestNs.U_TestUnion();
        _o.Value.Type = this.ValueType;
        switch (this.ValueType) {
          default: break;
          case TestNs.U_Test.TestValueInt:
            _o.Value.Value_ = this.Value<TestNs.TestValueInt>().HasValue ? this.Value<TestNs.TestValueInt>().Value.UnPack() : null;
            break;
          case TestNs.U_Test.TestValueDouble:
            _o.Value.Value_ = this.Value<TestNs.TestValueDouble>().HasValue ? this.Value<TestNs.TestValueDouble>().Value.UnPack() : null;
            break;
        }
      }
    

    The code fails to compile: csobjectapi_generated.cs(85,18): error CS1061: 'U_TestUnion' does not contain a definition for 'Value_' and no accessible extension method 'Value_' accepting a first argument of type 'U_TestUnion' could be found (are you missing a using directive or an assembly reference?) csobjectapi_generated.cs(88,18): error CS1061: 'U_TestUnion' does not contain a definition for 'Value_' and no accessible extension method 'Value_' accepting a first argument of type 'U_TestUnion' could be found (are you missing a using directive or an assembly reference?)

    opened by stefan301 0
  • [TS] Add option for typescript import file extension

    [TS] Add option for typescript import file extension

    Add an flag import-ext to flatc to specify import extension for typescript

    • If the flag is not specified, no extension is used when importing.
    • If --import-ext js is specified it should work the same as before.

    Fixes this issue which I also encountered in my NextJS project: https://github.com/google/flatbuffers/issues/7661

    Maybe the default should be .js, but not specify an extension to -import-ext to remove it?

    python c++ javascript typescript codegen 
    opened by ink-su 0
  • [C++] Incorrect operator==() generated for field of fixed sized array

    [C++] Incorrect operator==() generated for field of fixed sized array

    Given a struct with a fixed sized array of scalar type

    struct Somestruct {
        items: [float:3];
        tag: uint8;
    }
    

    flatc (with the --gen-compare flag) will generate c++ code that includes something like this:

    FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(4) Somestruct FLATBUFFERS_FINAL_CLASS {
    private:
      float items_[3];
      uint8_t tag_;
      int8_t padding0__;  int16_t padding1__;
    public:
      const flatbuffers::Array<float, 3> *items() const {
        return &flatbuffers::CastToArray(items_);
      }
      inline bool operator==(const Somestruct &lhs, const Somestruct &rhs) {
        return
            (lhs.items() == rhs.items()) &&
            (lhs.tag() == rhs.tag());
      }
    }
    

    Since items() returns the pointer of Array, this is only comparing the address but not the dereferenced value.

    opened by sunwen18 0
  • [Swift] Clean up

    [Swift] Clean up

    The following PR includes the following:

    • Removes Dead code & regenerate code
    • Formats the swift project
    • Update Sample files
    • Update docc documentation
    • Updates swift docs in the website

    It was made after the comments in the following issues #7737 & closes #7738

    python c++ grpc codegen swift documentation 
    opened by mustiikhalil 0
Releases(v22.12.06)
  • v22.12.06(Dec 7, 2022)

    What's Changed

    • Rurel by @CasperN in https://github.com/google/flatbuffers/pull/7663
    • build.yml Update dependencies by @dbaileychess in https://github.com/google/flatbuffers/pull/7674
    • build.yml: MacOs Build Inplace by @dbaileychess in https://github.com/google/flatbuffers/pull/7677
    • Fix java import wild card by @enum-class in https://github.com/google/flatbuffers/pull/7672
    • Use FinshedBytes() in go-echo example instead of manually encoding offset by @le-michael in https://github.com/google/flatbuffers/pull/7660
    • chore: emit more reasonable error message when using incomplete type … by @sssooonnnggg in https://github.com/google/flatbuffers/pull/7678
    • Fix PHP byte validation and reenable builds by @lsl in https://github.com/google/flatbuffers/pull/7670
    • tests/reflection_test.h: add missing <stdint.h> include by @trofi in https://github.com/google/flatbuffers/pull/7680
    • Remove --gen-name-strings flag from cmake command for generating union_vector_generated.h by @le-michael in https://github.com/google/flatbuffers/pull/7684
    • Fix confrom failure for nullptr dereference. by @dbaileychess in https://github.com/google/flatbuffers/pull/7688
    • Add LICENSE.txt to python by @rishabhdeepsingh in https://github.com/google/flatbuffers/pull/7692
    • Refactor src/idl_gen_cpp.cpp by @rishabhdeepsingh in https://github.com/google/flatbuffers/pull/7693
    • Upgrade rules_go for Bazel 7.0 support by @jkuszmaul in https://github.com/google/flatbuffers/pull/7691
    • Fix "Download Doxygen" URL by @mickelsonmichael in https://github.com/google/flatbuffers/pull/7699
    • [C++] Update to address comparator failure in big endian by @sunwen18 in https://github.com/google/flatbuffers/pull/7681
    • fix: byte_width_ = 1U << static_cast(packed_type & 3) implicit-int-conversion fix. by @runhwguo in https://github.com/google/flatbuffers/pull/7697
    • FlatBuffers Version 22.12.06 by @dbaileychess in https://github.com/google/flatbuffers/pull/7702

    New Contributors

    • @lsl made their first contribution in https://github.com/google/flatbuffers/pull/7670
    • @mickelsonmichael made their first contribution in https://github.com/google/flatbuffers/pull/7699
    • @runhwguo made their first contribution in https://github.com/google/flatbuffers/pull/7697

    Full Changelog: https://github.com/google/flatbuffers/compare/v22.11.23...v22.12.06

    Source code(tar.gz)
    Source code(zip)
    Linux.flatc.binary.clang++-12.zip(1.41 MB)
    Linux.flatc.binary.g++-10.zip(1.35 MB)
    Mac.flatc.binary.zip(2.29 MB)
    MacIntel.flatc.binary.zip(1.18 MB)
    multiple.intoto.jsonl(14.74 KB)
    Windows.flatc.binary.zip(1.23 MB)
  • v22.11.23(Nov 23, 2022)

    We had transitory CI breakage in the v22.11.22 release that was marking that build as broken. This release is the same as that one with a new version.

    What's Changed

    • FlatBuffers Version 22.11.23 by @dbaileychess in https://github.com/google/flatbuffers/pull/7662

    Full Changelog: https://github.com/google/flatbuffers/compare/v22.11.22...v22.11.23

    Source code(tar.gz)
    Source code(zip)
    Linux.flatc.binary.clang++-12.zip(1.32 MB)
    Linux.flatc.binary.g++-10.zip(1.35 MB)
    Mac.flatc.binary.zip(2.29 MB)
    MacIntel.flatc.binary.zip(1.18 MB)
    multiple.intoto.jsonl(14.74 KB)
    Windows.flatc.binary.zip(1.23 MB)
  • v22.11.22(Nov 22, 2022)

    What's Changed

    • [TS] Add support for fixed length arrays on Typescript (#5864) (#7021) by @bulentv in https://github.com/google/flatbuffers/pull/7581
    • Update dart golden files by @le-michael in https://github.com/google/flatbuffers/pull/7606
    • Add check for presence of realpath to CMakeLists.txt to support more platforms by @AlexRamallo in https://github.com/google/flatbuffers/pull/7603
    • Add CreateSharedString to python builder by @le-michael in https://github.com/google/flatbuffers/pull/7608
    • python: object generation prefix and suffix by @inaryart in https://github.com/google/flatbuffers/pull/7565
    • Added option to not requires an EoF token when parsing JSON by @alexames in https://github.com/google/flatbuffers/pull/7620
    • Bump Rust version to 22.10.26 before publication by @CasperN in https://github.com/google/flatbuffers/pull/7622
    • Add missing #include for std::min/std::max uses, … by @rouault in https://github.com/google/flatbuffers/pull/7624
    • Fix current official name of macOS by @valeriyvan in https://github.com/google/flatbuffers/pull/7627
    • Fix: arduino platform build by @shuai132 in https://github.com/google/flatbuffers/pull/7625
    • Fix missing spaces in flatc help text by @musicinmybrain in https://github.com/google/flatbuffers/pull/7612
    • Fix help output for --gen-includes by @musicinmybrain in https://github.com/google/flatbuffers/pull/7611
    • Add support for parsing proto map fields by @le-michael in https://github.com/google/flatbuffers/pull/7613
    • [TS/Rust/Go/Dart] Fix handling of +/-inf defaults in codegen by @jkuszmaul in https://github.com/google/flatbuffers/pull/7588
    • Uses swift build command directly in the CI by @mustiikhalil in https://github.com/google/flatbuffers/pull/7635
    • Temporary fix for SLSA generators by @laurentsimon in https://github.com/google/flatbuffers/pull/7636
    • [CMake]: only warn when the working directory in a git worktree by @heitbaum in https://github.com/google/flatbuffers/pull/7562
    • Add comparison operator to python objects under --gen-compare option by @Alex-Ratcliffe in https://github.com/google/flatbuffers/pull/7610
    • [C++] Minireflect: Add option to indent when converting table to string by @shamilatesoglu in https://github.com/google/flatbuffers/pull/7602
    • Fixes #7345 to add the option to minify enums by @rishabhdeepsingh in https://github.com/google/flatbuffers/pull/7566
    • [swift] fix broken swift test build (#7633) by @mr-swifter in https://github.com/google/flatbuffers/pull/7634
    • Fix import problem in dart generated files. (fixes #7609). by @enum-class in https://github.com/google/flatbuffers/pull/7621
    • [Go] Fix GenNativeUnionUnPack for imported union type. by @Gh0u1L5 in https://github.com/google/flatbuffers/pull/7579
    • Put documentation to bfbs if it is not empty by @tira-misu in https://github.com/google/flatbuffers/pull/7649
    • Fix schema to binary test failure by @enum-class in https://github.com/google/flatbuffers/pull/7650
    • Add support for using array of scalar as key field in Cpp by @sunwen18 in https://github.com/google/flatbuffers/pull/7623
    • [C#] Fix collision of member if union name is "Value" by @tira-misu in https://github.com/google/flatbuffers/pull/7648
    • Fixed the BytesConsumed function, which was pointing slightly ahead. by @alexames in https://github.com/google/flatbuffers/pull/7657
    • updated method generation to be independent of renaming code by @TJKoury in https://github.com/google/flatbuffers/pull/7642
    • Fix go generator undefined Package name, also throwing exception by @enum-class in https://github.com/google/flatbuffers/pull/7632
    • Add key lookup support for tables in Go by @le-michael in https://github.com/google/flatbuffers/pull/7644
    • Add --go-module-name flag to support generating Go module compatible code by @le-michael in https://github.com/google/flatbuffers/pull/7651

    New Contributors

    • @bulentv made their first contribution in https://github.com/google/flatbuffers/pull/7581
    • @le-michael made their first contribution in https://github.com/google/flatbuffers/pull/7606
    • @AlexRamallo made their first contribution in https://github.com/google/flatbuffers/pull/7603
    • @inaryart made their first contribution in https://github.com/google/flatbuffers/pull/7565
    • @valeriyvan made their first contribution in https://github.com/google/flatbuffers/pull/7627
    • @shuai132 made their first contribution in https://github.com/google/flatbuffers/pull/7625
    • @musicinmybrain made their first contribution in https://github.com/google/flatbuffers/pull/7612
    • @heitbaum made their first contribution in https://github.com/google/flatbuffers/pull/7562
    • @Alex-Ratcliffe made their first contribution in https://github.com/google/flatbuffers/pull/7610
    • @shamilatesoglu made their first contribution in https://github.com/google/flatbuffers/pull/7602
    • @rishabhdeepsingh made their first contribution in https://github.com/google/flatbuffers/pull/7566
    • @enum-class made their first contribution in https://github.com/google/flatbuffers/pull/7621
    • @Gh0u1L5 made their first contribution in https://github.com/google/flatbuffers/pull/7579
    • @sunwen18 made their first contribution in https://github.com/google/flatbuffers/pull/7623
    • @TJKoury made their first contribution in https://github.com/google/flatbuffers/pull/7642

    Full Changelog: https://github.com/google/flatbuffers/compare/v22.10.26...v22.11.22

    Source code(tar.gz)
    Source code(zip)
    Linux.flatc.binary.clang++-12.zip(1.32 MB)
    Linux.flatc.binary.g++-10.zip(1.35 MB)
    Mac.flatc.binary.zip(2.29 MB)
    MacIntel.flatc.binary.zip(1.18 MB)
    multiple.intoto.jsonl(14.75 KB)
    Windows.flatc.binary.zip(1.23 MB)
  • v22.10.26(Oct 26, 2022)

    Fix for python #7576

    What's Changed

    • Create release.yml by @dbaileychess in https://github.com/google/flatbuffers/pull/7605
    • [Python] Fixed the issue with nested unions relying on InitFromBuf. by @joshua-smith8 in https://github.com/google/flatbuffers/pull/7576
    • FlatBuffers Version 22.10.26 by @dbaileychess in https://github.com/google/flatbuffers/pull/7607

    Full Changelog: https://github.com/google/flatbuffers/compare/v22.10.25...v22.10.26

    Source code(tar.gz)
    Source code(zip)
    Linux.flatc.binary.clang++-12.zip(1.30 MB)
    Linux.flatc.binary.g++-10.zip(1.33 MB)
    Mac.flatc.binary.zip(2.26 MB)
    MacIntel.flatc.binary.zip(1.16 MB)
    Windows.flatc.binary.zip(1.21 MB)
  • v22.10.25(Oct 26, 2022)

    Change Log

    What's Changed

    • Add support for metadata attributes for enum values (#7567) by @piotrdz in https://github.com/google/flatbuffers/pull/7568
    • Update documentation to mention enum value attributes by @piotrdz in https://github.com/google/flatbuffers/pull/7570
    • Turn on clippy for Rust and fix lints for non-generated code by @CasperN in https://github.com/google/flatbuffers/pull/7575
    • Fix #7580 by documenting union schema evolution rules by @CasperN in https://github.com/google/flatbuffers/pull/7585
    • #ifndef FLATBUFFERS_NO_FILE_TEST guard some test definitions by @battre in https://github.com/google/flatbuffers/pull/7571
    • Update Rust version by @CasperN in https://github.com/google/flatbuffers/pull/7574
    • Rust fix compilation for no_std targets #2 by @danlapid in https://github.com/google/flatbuffers/pull/7553
    • Fix LongEnum definitions by @battre in https://github.com/google/flatbuffers/pull/7596
    • Make type conversions explicit. by @battre in https://github.com/google/flatbuffers/pull/7595
    • [Nim] Bfbs Nim Generator by @danlapid in https://github.com/google/flatbuffers/pull/7534
    • [vector] Allow to iterate with mutables by @ArnaudD-FR in https://github.com/google/flatbuffers/pull/7586
    • FlatBuffers Version 22.10.25 by @dbaileychess in https://github.com/google/flatbuffers/pull/7604

    New Contributors

    • @battre made their first contribution in https://github.com/google/flatbuffers/pull/7571
    • @danlapid made their first contribution in https://github.com/google/flatbuffers/pull/7553
    • @ArnaudD-FR made their first contribution in https://github.com/google/flatbuffers/pull/7586

    Full Changelog: https://github.com/google/flatbuffers/compare/v22.9.29...v22.10.25

    Source code(tar.gz)
    Source code(zip)
    Linux.flatc.binary.clang++-12.zip(1.30 MB)
    Linux.flatc.binary.g++-10.zip(1.33 MB)
    Mac.flatc.binary.zip(2.26 MB)
    MacIntel.flatc.binary.zip(1.16 MB)
    Windows.flatc.binary.zip(1.21 MB)
  • v22.9.29(Sep 30, 2022)

    Changelog

    What's Changed

    • Moves swift package to root of repository so it can be used directly … by @mustiikhalil in https://github.com/google/flatbuffers/pull/7548
    • Rust soundness fixes by @tustvold in https://github.com/google/flatbuffers/pull/7518
    • [TS] Make strict compliant and improve typings by @bjornharrtell in https://github.com/google/flatbuffers/pull/7549
    • FlatBuffers Version 22.9.29 by @dbaileychess in https://github.com/google/flatbuffers/pull/7557

    New Contributors

    • @tustvold made their first contribution in https://github.com/google/flatbuffers/pull/7518

    Full Changelog: https://github.com/google/flatbuffers/compare/v22.9.24...v22.9.29

    Source code(tar.gz)
    Source code(zip)
    Linux.flatc.binary.clang++-12.zip(1.27 MB)
    Linux.flatc.binary.g++-10.zip(1.30 MB)
    Mac.flatc.binary.zip(2.20 MB)
    MacIntel.flatc.binary.zip(1.13 MB)
    Windows.flatc.binary.zip(1.18 MB)
  • v22.9.24(Sep 27, 2022)

    Change Log

    What's Changed

    • Disable Android Build by @dbaileychess in https://github.com/google/flatbuffers/pull/7494
    • update android multidex setting by @dbaileychess in https://github.com/google/flatbuffers/pull/7495
    • Updates cocoapods version by @mustiikhalil in https://github.com/google/flatbuffers/pull/7497
    • [ISSUE-6268] returns NaN insteadof nan by @3axap4eHko in https://github.com/google/flatbuffers/pull/7498
    • [C#] Prepares for official Nuget release by @dbaileychess in https://github.com/google/flatbuffers/pull/7496
    • [CMake]: fix breaking find_package change (#7499) by @clanghans in https://github.com/google/flatbuffers/pull/7502
    • Fixes issue with cocoapods failing to be published because of docc by @mustiikhalil in https://github.com/google/flatbuffers/pull/7505
    • [Android] Remove maven dependency of flatbuffers and use source folder by @paulovap in https://github.com/google/flatbuffers/pull/7503
    • [Java][FlexBuffers] throwing exception for untyped fixed vectors by @paulovap in https://github.com/google/flatbuffers/pull/7507
    • Moves all of the swift test code into tests/swift by @mustiikhalil in https://github.com/google/flatbuffers/pull/7509
    • Install BuildFlatBuffers.cmake by @dbaileychess in https://github.com/google/flatbuffers/pull/7519
    • [Java][Flexbuffers] Add API to add nullables into the buffer. by @paulovap in https://github.com/google/flatbuffers/pull/7521
    • remove travis config by @dbaileychess in https://github.com/google/flatbuffers/pull/7522
    • prevent force_align attribute on enums by @dbaileychess in https://github.com/google/flatbuffers/pull/7523
    • enabled cpp17 tests in CI by @dbaileychess in https://github.com/google/flatbuffers/pull/7524
    • Replace bash JavaTest.sh with mvn test by @nick-someone in https://github.com/google/flatbuffers/pull/7500
    • Bump junit from 4.13 to 4.13.1 in /java by @dependabot in https://github.com/google/flatbuffers/pull/7526
    • [TS/JS] Move TS tests to dedicated folder and deps upgrade by @bjornharrtell in https://github.com/google/flatbuffers/pull/7508
    • UnPackTo disable merge by default by @dbaileychess in https://github.com/google/flatbuffers/pull/7527
    • Fix conform by @hs3366677 in https://github.com/google/flatbuffers/pull/7532
    • [C++] Rare bad buffer content alignment if sizeof(T) != alignof(T) by @Naios in https://github.com/google/flatbuffers/pull/7520
    • Upgrade grpc to 1.49.0 and make sure it builds by @meteorcloudy in https://github.com/google/flatbuffers/pull/7538
    • [Python] Python fixed size array by @joshua-smith8 in https://github.com/google/flatbuffers/pull/7529
    • Emit internal enums when swift_implementation_only by @pauley-unsaturated in https://github.com/google/flatbuffers/pull/7545
    • FlatBuffers Version 22.9.24 by @dbaileychess in https://github.com/google/flatbuffers/pull/7547

    New Contributors

    • @3axap4eHko made their first contribution in https://github.com/google/flatbuffers/pull/7498
    • @nick-someone made their first contribution in https://github.com/google/flatbuffers/pull/7500
    • @hs3366677 made their first contribution in https://github.com/google/flatbuffers/pull/7532
    • @Naios made their first contribution in https://github.com/google/flatbuffers/pull/7520
    • @meteorcloudy made their first contribution in https://github.com/google/flatbuffers/pull/7538
    • @joshua-smith8 made their first contribution in https://github.com/google/flatbuffers/pull/7529
    • @pauley-unsaturated made their first contribution in https://github.com/google/flatbuffers/pull/7545

    Full Changelog: https://github.com/google/flatbuffers/compare/v2.0.8...v22.9.24

    Source code(tar.gz)
    Source code(zip)
    attestation.intoto.jsonl(14.69 KB)
    Linux.flatc.binary.clang++-12.zip(1.27 MB)
    Linux.flatc.binary.g++-10.zip(1.30 MB)
    Mac.flatc.binary.zip(2.20 MB)
    MacIntel.flatc.binary.zip(1.13 MB)
    Windows.flatc.binary.zip(1.18 MB)
  • v2.0.8(Aug 30, 2022)

    Bug fixing release for issues that arose in 2.0.7.

    Change Log

    What's Changed

    • Use schema include name for keep-prefix by @dbaileychess in https://github.com/google/flatbuffers/pull/7469
    • [Java] Shallow unused return value in Pack method by @dbaileychess in https://github.com/google/flatbuffers/pull/7470
    • Moved compiler warnings around by @dbaileychess in https://github.com/google/flatbuffers/pull/7471
    • CMake project version detection made more robust by @axelsommerfeldt in https://github.com/google/flatbuffers/pull/7473
    • Disable RTTI and rework use in idl_gen_ts.cpp by @dbaileychess in https://github.com/google/flatbuffers/pull/7474
    • Use type traits for specialization by @dbaileychess in https://github.com/google/flatbuffers/pull/7475
    • [C++] Fixed crash when copying table with empty shared strings by @sssooonnnggg in https://github.com/google/flatbuffers/pull/7477
    • Version number in file package.json updated to 2.0.7 by @axelsommerfeldt in https://github.com/google/flatbuffers/pull/7476
    • Include head in stl_emulation.h by @dbaileychess in https://github.com/google/flatbuffers/pull/7480
    • Fix typos by @dbaileychess in https://github.com/google/flatbuffers/pull/7483
    • Refactor test.cpp by @dbaileychess in https://github.com/google/flatbuffers/pull/7487
    • [C++] support native_inline attribute for vector of tables by @sssooonnnggg in https://github.com/google/flatbuffers/pull/7479
    • C++: Add option to skip verifying nested flatbuffers by @CasperN in https://github.com/google/flatbuffers/pull/7489
    • [TS/JS] Add rollup and config to generate iife flatbuffers bundle by @bjornharrtell in https://github.com/google/flatbuffers/pull/7449
    • Namer applied to Typescript generator by @CasperN in https://github.com/google/flatbuffers/pull/7488
    • Verifier Refinements by @dbaileychess in https://github.com/google/flatbuffers/pull/7490
    • FlatBuffers Version 2.0.8 by @dbaileychess in https://github.com/google/flatbuffers/pull/7492

    New Contributors

    • @axelsommerfeldt made their first contribution in https://github.com/google/flatbuffers/pull/7473

    Full Changelog: https://github.com/google/flatbuffers/compare/v2.0.7...v2.0.8

    Source code(tar.gz)
    Source code(zip)
    attestation.intoto.jsonl(14.67 KB)
    Linux.flatc.binary.clang++-12.zip(1.26 MB)
    Linux.flatc.binary.g++-10.zip(1.29 MB)
    Mac.flatc.binary.zip(2.19 MB)
    MacIntel.flatc.binary.zip(1.13 MB)
    Windows.flatc.binary.zip(1.18 MB)
  • v2.0.7(Aug 23, 2022)

    This is a minor release with lots of changes :)

    I would like to get in the habit of releasing more often (at least for the flatc and C++ libraries) and the first step is to reduce the amount of diffs between releases (especially patch/revision only updates).

    See a high level change log notes in our new CHANGELOG.md document, with the following list auto generated by github release workflow:

    What's Changed

    • explicitly use windows-2019 to unblock ci by @dbaileychess in https://github.com/google/flatbuffers/pull/7105
    • Go optional scalars by @chriscraws in https://github.com/google/flatbuffers/pull/7104
    • Fix minor typo in WhitePaper.md by @meersuri in https://github.com/google/flatbuffers/pull/7108
    • [TS] Fix generation of reserved words in object api (#7106) by @tira-misu in https://github.com/google/flatbuffers/pull/7115
    • Add deps attribute to flatbuffer_cc_library by @jkuszmaul in https://github.com/google/flatbuffers/pull/7107
    • add the missing checkNullConditionnal code in the "GenObjApi" function by @anov21 in https://github.com/google/flatbuffers/pull/7114
    • remove auto generate code from cmakelists by @dbaileychess in https://github.com/google/flatbuffers/pull/7119
    • Trigger fuzzing CI only on relevant changes by @dbaileychess in https://github.com/google/flatbuffers/pull/7120
    • update proto tests with alaised enum by @dbaileychess in https://github.com/google/flatbuffers/pull/7121
    • Use target_compile_features to target C++11 by @dbaileychess in https://github.com/google/flatbuffers/pull/7122
    • Use ConvertCase instead of Make{Upper,Lower,Snake} implementations by @dbaileychess in https://github.com/google/flatbuffers/pull/7127
    • Replaced ToDasherCase with ConvertCase by @dbaileychess in https://github.com/google/flatbuffers/pull/7131
    • [Rust] Add length checks to arrays and vectors. by @CasperN in https://github.com/google/flatbuffers/pull/7130
    • Prevent name clash by @dbaileychess in https://github.com/google/flatbuffers/pull/7133
    • Fix 64-bit numeric enum values in typescript by @jkuszmaul in https://github.com/google/flatbuffers/pull/7135
    • [TS] Escape keywords in typescript object names by @jkuszmaul in https://github.com/google/flatbuffers/pull/7137
    • Implement a config based name manager and use it in Rust codegen by @CasperN in https://github.com/google/flatbuffers/pull/7144
    • Fix missing 'break' by @CasperN in https://github.com/google/flatbuffers/pull/7151
    • Apply Namer to Python code gen by @CasperN in https://github.com/google/flatbuffers/pull/7146
    • Apply Namer to Go code gen by @CasperN in https://github.com/google/flatbuffers/pull/7150
    • [TS] Add single-file ts codegen & bazel rule for typescript by @jkuszmaul in https://github.com/google/flatbuffers/pull/7161
    • Use DESCRIPTION only if CMake version >= 3.9 by @Paulchen-Panther in https://github.com/google/flatbuffers/pull/7166
    • Nameroverloads by @CasperN in https://github.com/google/flatbuffers/pull/7164
    • Namersw by @CasperN in https://github.com/google/flatbuffers/pull/7167
    • Make inclusion of header opt-out via macro by @davschne in https://github.com/google/flatbuffers/pull/7168
    • [Lua] Apply Namer to Lua by @dbaileychess in https://github.com/google/flatbuffers/pull/7171
    • Annotated Flatbuffer Binary by @dbaileychess in https://github.com/google/flatbuffers/pull/7174
    • Typo in flatc options (warning-as-errors instead of warnings-as-errors) by @stefan301 in https://github.com/google/flatbuffers/pull/7180
    • Move flatbuffer_ts_library to typescript.bzl by @jkuszmaul in https://github.com/google/flatbuffers/pull/7183
    • Adds no-includes flags to the swift code generator by @mustiikhalil in https://github.com/google/flatbuffers/pull/7182
    • Correctly parse lists of enums in Dart generated code by @insertjokehere in https://github.com/google/flatbuffers/pull/7157
    • VerifySizePrefixed (reflection::Schema) and GetAnySizePrefixedRoot added by @stefan301 in https://github.com/google/flatbuffers/pull/7181
    • [TS] Fix generation of struct members in object api by @tira-misu in https://github.com/google/flatbuffers/pull/7148
    • Handle root offset and root table vtable invalidation by @dbaileychess in https://github.com/google/flatbuffers/pull/7177
    • Fuzzed binary annotator by @dbaileychess in https://github.com/google/flatbuffers/pull/7188
    • Namerdart by @CasperN in https://github.com/google/flatbuffers/pull/7187
    • Annotated Binary Structured Comments by @dbaileychess in https://github.com/google/flatbuffers/pull/7192
    • [swift] Add bazel configuration for Swift by @keith in https://github.com/google/flatbuffers/pull/7195
    • [C#] Fix collision of field name and type name by @tira-misu in https://github.com/google/flatbuffers/pull/7149
    • Apply Namer to Java. by @CasperN in https://github.com/google/flatbuffers/pull/7194
    • Apply Namer prefix/suffix to other generators by @CasperN in https://github.com/google/flatbuffers/pull/7197
    • fixed padding in struct for annotated binary by @dbaileychess in https://github.com/google/flatbuffers/pull/7199
    • [C++] Static assert on Flatbuffers Version by @dbaileychess in https://github.com/google/flatbuffers/pull/7203
    • maximize parallel builds in CI by @dbaileychess in https://github.com/google/flatbuffers/pull/7206
    • Add overloads for C# ByteBuffer/FlatBufferBuilder to allow adding vector blocks from ArraySegments or IntPtr by @Jamie-Jameson in https://github.com/google/flatbuffers/pull/7193
    • Fix for [C++] flatc generates invalid Code in the default constructor for structs, when --cpp-field-case-style is used #7209 by @stefan301 in https://github.com/google/flatbuffers/pull/7211
    • [C++] generate sorted #include directives by @stefan301 in https://github.com/google/flatbuffers/pull/7213
    • code gen flexbuffer verifier by @dbaileychess in https://github.com/google/flatbuffers/pull/7207
    • [C++] stl_emulation span::count_ is not const anymore (#7226) by @avaliente-bc in https://github.com/google/flatbuffers/pull/7227
    • Started to migrate to target_compile_options by @dbaileychess in https://github.com/google/flatbuffers/pull/7222
    • Adds implementation flag for swift by @mustiikhalil in https://github.com/google/flatbuffers/pull/7202
    • Adds a way to verify/exposes Entities ids by @mustiikhalil in https://github.com/google/flatbuffers/pull/7221
    • Create cpp-linter.yml by @dbaileychess in https://github.com/google/flatbuffers/pull/7208
    • disable cpp-linter by @dbaileychess in https://github.com/google/flatbuffers/pull/7229
    • Remove call toascii by @dbaileychess in https://github.com/google/flatbuffers/pull/7234
    • [Kotlin] Update gradle to 7.4.1 and simplify config files. by @paulovap in https://github.com/google/flatbuffers/pull/7231
    • [Swift] Fixes a bug for create function by @mustiikhalil in https://github.com/google/flatbuffers/pull/7228
    • Allow CreateVectorOfStrings() to work with any string-type. by @hzeller in https://github.com/google/flatbuffers/pull/7238
    • [Java] Fix key lookup returning null clashing with default value by @paulovap in https://github.com/google/flatbuffers/pull/7236
    • [Kotlin] Fix key lookup returning null clashing with default value by @paulovap in https://github.com/google/flatbuffers/pull/7237
    • set workflows permissions to read-only by @dbaileychess in https://github.com/google/flatbuffers/pull/7239
    • Expand test to make sure {}-initializers are properly understood by template by @hzeller in https://github.com/google/flatbuffers/pull/7242
    • Make Java namespaces keep case by default by @CasperN in https://github.com/google/flatbuffers/pull/7243
    • Add parameter back to EndVector by @dbaileychess in https://github.com/google/flatbuffers/pull/7246
    • Java namer typo by @dbaileychess in https://github.com/google/flatbuffers/pull/7249
    • [optimization] Keep the underlying storage capacity when clearing the FlatBufferBuilder by @hassila in https://github.com/google/flatbuffers/pull/7250
    • Turn off Go modules temporary by @mustiikhalil in https://github.com/google/flatbuffers/pull/7251
    • Add test for nested buffer verifier by @dbaileychess in https://github.com/google/flatbuffers/pull/7252
    • Swift update performance benchmark infrastructure by @hassila in https://github.com/google/flatbuffers/pull/7255
    • Specialize CreateVector with std::initializer_list by @dbaileychess in https://github.com/google/flatbuffers/pull/7254
    • Handle +/-inf in protos by @dbaileychess in https://github.com/google/flatbuffers/pull/7256
    • [performance] [swift] Add systematic inlining by @hassila in https://github.com/google/flatbuffers/pull/7253
    • Added Swift to supported languages by @hassila in https://github.com/google/flatbuffers/pull/7257
    • fix include order by @dbaileychess in https://github.com/google/flatbuffers/pull/7266
    • Rust: fix a name conflict when building with "no_std" feature by @fjarri in https://github.com/google/flatbuffers/pull/7268
    • [swift] Make swift module public by @keith in https://github.com/google/flatbuffers/pull/7274
    • Make flatc generate Rust files not requiring std by @fjarri in https://github.com/google/flatbuffers/pull/7273
    • Namerkot by @CasperN in https://github.com/google/flatbuffers/pull/7245
    • Remove span ConstIterator/cbegin()/cend(). by @pkasting in https://github.com/google/flatbuffers/pull/7295
    • [swift] add 'has' property to check optional array presence in mes… by @mr-swifter in https://github.com/google/flatbuffers/pull/7280
    • Update Rust docs page by @bsilver8192 in https://github.com/google/flatbuffers/pull/7296
    • Add size check to fix out of bounds read risk by @bjornharrtell in https://github.com/google/flatbuffers/pull/7304
    • Add explicit return types to lobster generated code by @bartwe in https://github.com/google/flatbuffers/pull/7312
    • Use keep case for Rust union discriminant type. by @CasperN in https://github.com/google/flatbuffers/pull/7321
    • [Swift] Wasm support by @mustiikhalil in https://github.com/google/flatbuffers/pull/7328
    • Started implementation for private flags in rust by @mustiikhalil in https://github.com/google/flatbuffers/pull/7269
    • Implement optional scalars for Python by @calebzulawski in https://github.com/google/flatbuffers/pull/7318
    • Move reflection_ts_fbs into a separate directory by @liuliu in https://github.com/google/flatbuffers/pull/7342
    • Implement optional scalars for JSON by @calebzulawski in https://github.com/google/flatbuffers/pull/7322
    • [Go] Replace deprecated package io/ioutil by @cia-rana in https://github.com/google/flatbuffers/pull/7281
    • [TS] fix ts import path issue by @sssooonnnggg in https://github.com/google/flatbuffers/pull/7298
    • [Kotlin] Remove download benchmark files dependency by @paulovap in https://github.com/google/flatbuffers/pull/7314
    • [golang] Create missing namespace directory structure (#7324) by @tsturm in https://github.com/google/flatbuffers/pull/7325
    • [TS] Don't generate self-imports with --ts-flat-file by @jkuszmaul in https://github.com/google/flatbuffers/pull/7340
    • Revert "Move reflection_ts_fbs into a separate directory" by @dbaileychess in https://github.com/google/flatbuffers/pull/7349
    • Revert "Implement optional scalars for JSON" by @dbaileychess in https://github.com/google/flatbuffers/pull/7351
    • Only include direct included files by @dbaileychess in https://github.com/google/flatbuffers/pull/7348
    • Reenable optional json by @calebzulawski in https://github.com/google/flatbuffers/pull/7352
    • Bump Newtonsoft.Json from 12.0.3 to 13.0.1 in /tests/FlatBuffers.Test by @dependabot in https://github.com/google/flatbuffers/pull/7363
    • [Dart] Implement putBool to fix errors when serializing structs with bools by @insertjokehere in https://github.com/google/flatbuffers/pull/7359
    • Fix references to LICENSE file by @Hixie in https://github.com/google/flatbuffers/pull/7377
    • Updated Newtonsoft.Json to 13.0.1 by @dbaileychess in https://github.com/google/flatbuffers/pull/7393
    • cpp_generator: comment out unused parameter to avoid warnings by @yshalabi in https://github.com/google/flatbuffers/pull/7381
    • fix(#7360): grpc used deprecated functions by @godcong in https://github.com/google/flatbuffers/pull/7361
    • keep-prefix keeps relative pathing by @dbaileychess in https://github.com/google/flatbuffers/pull/7394
    • Compilation issue msys2 by @chronoxor in https://github.com/google/flatbuffers/pull/7403
    • Add missing const by @atkurtul in https://github.com/google/flatbuffers/pull/7401
    • [TS] fix incorrect reverse order when writting array of structs by @sssooonnnggg in https://github.com/google/flatbuffers/pull/7271
    • [TS/Bazel] Minor improvements to typescript.bzl by @jkuszmaul in https://github.com/google/flatbuffers/pull/7300
    • Fix Clang-Cl compile on Windows by @06393993 in https://github.com/google/flatbuffers/pull/7308
    • grpc/compiler: Respect filename suffix and extension during code generation by @amaneureka in https://github.com/google/flatbuffers/pull/7343
    • Fix error msg format when generate GRPC failed by @SF-Zhou in https://github.com/google/flatbuffers/pull/7350
    • (#7323) Rename CMake files according to project name by @clanghans in https://github.com/google/flatbuffers/pull/7378
    • Revert "grpc/compiler: Respect filename suffix and extension during code generation" by @dbaileychess in https://github.com/google/flatbuffers/pull/7406
    • Revert "Compilation issue msys2" by @dbaileychess in https://github.com/google/flatbuffers/pull/7407
    • Compilation issue msys2 #7399 by @chronoxor in https://github.com/google/flatbuffers/pull/7409
    • [TS] Use TextEncoder and TextDecoder by @bjornharrtell in https://github.com/google/flatbuffers/pull/7400
    • Add FLATBUFFERS_STRICT_MODE by @dbaileychess in https://github.com/google/flatbuffers/pull/7408
    • Add tests for flatc by @dbaileychess in https://github.com/google/flatbuffers/pull/7405
    • Rebased: grpc/compiler: Respect filename suffix and extension during code generation by @amaneureka in https://github.com/google/flatbuffers/pull/7414
    • Moved TypeScriptTests to python script by @dbaileychess in https://github.com/google/flatbuffers/pull/7411
    • [golang] Add support for text parsing with json struct tags by @aburdulescu in https://github.com/google/flatbuffers/pull/7353
    • Remove stringop-overflow from error by @dbaileychess in https://github.com/google/flatbuffers/pull/7422
    • [golang] Perform keyword escaping after case conversion by @aburdulescu in https://github.com/google/flatbuffers/pull/7421
    • [C++] Vector of Tables equality by @dbaileychess in https://github.com/google/flatbuffers/pull/7415
    • [C++] avoid zero-as-null-pointer warning by @sssooonnnggg in https://github.com/google/flatbuffers/pull/7423
    • Issue#6959 :Updated Automatically generated rust files. by @YashasviChaurasia in https://github.com/google/flatbuffers/pull/7425
    • [C++] Make template parameter in stl_emulation.h more explicit to avoid conflicts with cpprestsdk U macro by @marcelkrueger in https://github.com/google/flatbuffers/pull/7424
    • [C++] Set StructDef::has_key property when deserializing from binary … by @sssooonnnggg in https://github.com/google/flatbuffers/pull/7428
    • Remove auto including locale functions by @dbaileychess in https://github.com/google/flatbuffers/pull/7430
    • Update gitingore to reflect name change by @dbaileychess in https://github.com/google/flatbuffers/pull/7431
    • Update TypeScriptTest.py to work better cross platform by @dbaileychess in https://github.com/google/flatbuffers/pull/7436
    • Add flatc python tests to CI by @dbaileychess in https://github.com/google/flatbuffers/pull/7437
    • Fix FlexBuffers JS/TS bug by @mzaks in https://github.com/google/flatbuffers/pull/7434
    • Add checks to verifier by @dbaileychess in https://github.com/google/flatbuffers/pull/7438
    • [TypeScript] Fix namespaceless schema generation by @dbaileychess in https://github.com/google/flatbuffers/pull/7432
    • make_span overloads for pointer to vector (#7374) by @stefan301 in https://github.com/google/flatbuffers/pull/7435
    • Define minimum buffer size by @dbaileychess in https://github.com/google/flatbuffers/pull/7440
    • [C#] Rework how sorted vectors are looked up by @dbaileychess in https://github.com/google/flatbuffers/pull/7441
    • Stop using __has_trivial_copy on recent clang versions. by @MirkoBonadei in https://github.com/google/flatbuffers/pull/7443
    • [Kotlin] Make sure namespace path exist for code generation by @paulovap in https://github.com/google/flatbuffers/pull/7357
    • Partial support for --ts-flat-files and --gen-all by @dbaileychess in https://github.com/google/flatbuffers/pull/7446
    • Add some extra warnings, tested on GCC 9.4.0 by @paulharris in https://github.com/google/flatbuffers/pull/7212
    • Wrap types in namespace for --ts-flat-files and --gen-all by @dbaileychess in https://github.com/google/flatbuffers/pull/7451
    • [WIP] speedup by @paulovap in https://github.com/google/flatbuffers/pull/7452
    • Generate SLSA signatures for Released zip files by @laurentsimon in https://github.com/google/flatbuffers/pull/7450
    • Change to GetTypeName by @dbaileychess in https://github.com/google/flatbuffers/pull/7453
    • Group anonymous namespaces by @paulharris in https://github.com/google/flatbuffers/pull/7455
    • Remove old GRPC bash script and convert to python3 by @dbaileychess in https://github.com/google/flatbuffers/pull/7454
    • [C++] Disabling unpackto optimization by @dbaileychess in https://github.com/google/flatbuffers/pull/7459
    • update grpc version by @Wyverald in https://github.com/google/flatbuffers/pull/7457
    • Reworked keep prefix by @dbaileychess in https://github.com/google/flatbuffers/pull/7456

    New Contributors

    • @chriscraws made their first contribution in https://github.com/google/flatbuffers/pull/7104
    • @meersuri made their first contribution in https://github.com/google/flatbuffers/pull/7108
    • @anov21 made their first contribution in https://github.com/google/flatbuffers/pull/7114
    • @Paulchen-Panther made their first contribution in https://github.com/google/flatbuffers/pull/7166
    • @davschne made their first contribution in https://github.com/google/flatbuffers/pull/7168
    • @insertjokehere made their first contribution in https://github.com/google/flatbuffers/pull/7157
    • @keith made their first contribution in https://github.com/google/flatbuffers/pull/7195
    • @Jamie-Jameson made their first contribution in https://github.com/google/flatbuffers/pull/7193
    • @avaliente-bc made their first contribution in https://github.com/google/flatbuffers/pull/7227
    • @hzeller made their first contribution in https://github.com/google/flatbuffers/pull/7238
    • @hassila made their first contribution in https://github.com/google/flatbuffers/pull/7250
    • @fjarri made their first contribution in https://github.com/google/flatbuffers/pull/7268
    • @mr-swifter made their first contribution in https://github.com/google/flatbuffers/pull/7280
    • @bsilver8192 made their first contribution in https://github.com/google/flatbuffers/pull/7296
    • @bartwe made their first contribution in https://github.com/google/flatbuffers/pull/7312
    • @calebzulawski made their first contribution in https://github.com/google/flatbuffers/pull/7318
    • @cia-rana made their first contribution in https://github.com/google/flatbuffers/pull/7281
    • @sssooonnnggg made their first contribution in https://github.com/google/flatbuffers/pull/7298
    • @Hixie made their first contribution in https://github.com/google/flatbuffers/pull/7377
    • @yshalabi made their first contribution in https://github.com/google/flatbuffers/pull/7381
    • @atkurtul made their first contribution in https://github.com/google/flatbuffers/pull/7401
    • @06393993 made their first contribution in https://github.com/google/flatbuffers/pull/7308
    • @amaneureka made their first contribution in https://github.com/google/flatbuffers/pull/7343
    • @SF-Zhou made their first contribution in https://github.com/google/flatbuffers/pull/7350
    • @clanghans made their first contribution in https://github.com/google/flatbuffers/pull/7378
    • @aburdulescu made their first contribution in https://github.com/google/flatbuffers/pull/7353
    • @YashasviChaurasia made their first contribution in https://github.com/google/flatbuffers/pull/7425
    • @marcelkrueger made their first contribution in https://github.com/google/flatbuffers/pull/7424
    • @MirkoBonadei made their first contribution in https://github.com/google/flatbuffers/pull/7443
    • @laurentsimon made their first contribution in https://github.com/google/flatbuffers/pull/7450
    • @Wyverald made their first contribution in https://github.com/google/flatbuffers/pull/7457

    Full Changelog: https://github.com/google/flatbuffers/compare/v2.0.6...v2.0.7

    Source code(tar.gz)
    Source code(zip)
    Linux.flatc.binary.clang++-12.zip(1.27 MB)
    Linux.flatc.binary.g++-10.zip(1.30 MB)
    Mac.flatc.binary.zip(2.22 MB)
    MacIntel.flatc.binary.zip(1.15 MB)
    Windows.flatc.binary.zip(1.18 MB)
  • v2.0.0(May 10, 2021)

    A summary of what is in this release since 1.12.0:

    • Support for optional scalars in most languages.
    • Rust Verifier, Object API and FlexBuffers support, and many API improvements.
    • Overhaul of TypeScript support.
    • gRPC for many languages brought up to date.
    • C++ compile time field reflection.
    • JS FlexBuffers support.
    • Kotlin FlexBuffers and platform support.
    • Swift Object API and many Swift performance improvements.
    • Lua supports LuaJIT and many more fixes.
    • Python FlexBuffers support.
    • Many other fixes and smaller improvements, 371 commits since 1.12.0

    Note, "2.0" doesn't signify any kind of major overhaul of FlatBuffers, it is merely trying to be more semver compatible, and this release does have breaking changes for some languages much like all releases before it.

    Source code(tar.gz)
    Source code(zip)
    Linux.flatc.binary.clang++-9.zip(1.04 MB)
    Mac.flatc.binary.zip(968.25 KB)
    Windows.flatc.binary.zip(1006.77 KB)
  • v1.12.0(Mar 12, 2020)

    A summary of what is in this release since 1.11.0:

    • An official Swift port! (including gRPC support).
    • A Kotlin port!
    • Object API and native JSON support for C#.
    • Object API and gRPC support for Python.
    • Object API for Go.
    • FlexBuffers for Java.
    • Many other fixes and smaller improvements, 247 commits since 1.11.0
    Source code(tar.gz)
    Source code(zip)
    flatc_windows.zip(902.07 KB)
  • v1.11.0(Apr 24, 2019)

    A summary of what is in this release since 1.10.0:

    • More accurate C++ float handling, NaN handling, limit checking.
    • Java optimization: faster object accessors, faster UTF8 conversion.
    • A lot of Rust port improvements.
    • Vector of union JSON parsing.
    • Parser can now work from binary schemas.
    • Python: numpy vector support.
    • Packaging: Snap & RPM support.
    • Many improvements to our CI, added Bazel CI, dockerized language tests.
    • Many other fixes and smaller improvements, 169 commits since 1.10.0
    Source code(tar.gz)
    Source code(zip)
    flatc_windows_exe.zip(596.76 KB)
  • v1.10.0(Oct 3, 2018)

    A summary of what is in this release since 1.9.0:

    • Rust support!
    • Dart support!
    • Lua support!
    • Lobster support!
    • C++: Improved / more correct verifier, compare operator in generated code, new/improved move operators for many data types, string_view support.
    • Java & C# support vectors of unions.
    • Many other fixes and smaller improvements, 145 commits since 1.9.0
    Source code(tar.gz)
    Source code(zip)
    flatc_windows_exe.zip(539.51 KB)
  • v1.9.0(Apr 5, 2018)

    A summary of what is in this release since 1.8.0:

    • Further optimized C++ memory usage for FlatBufferBuilder: from 3 to 1 dynamic allocations (!)
    • GRPC support in Java & Maven.
    • Build files for Bazel and Conan.
    • Prefixed size support for Java/C#/Python.
    • Typescript docs.
    • Many other fixes and improvements, 80 commits since 1.8.0
    Source code(tar.gz)
    Source code(zip)
    flatc_windows_exe.zip(421.96 KB)
  • v1.8.0(Nov 20, 2017)

    A summary of what is in this release since 1.7.0:

    • Vtable trimming in all language implementations: can reduce binary size 10-20%!
    • Mini-reflection tables (in C++) for debug-print, etc.
    • Improved .proto conversion.
    • Vectors of unions now also supported in JS/TS/PHP/C.
    • Improved namespace handling.
    • Boolean types in FlexBuffers.
    • Python Numpy vector support.
    • Nested FlatBuffer JSON parsing.
    • C++98 (stlport) support for core FlatBuffers and FlexBuffers.
    • JSON Schema output support.
    • Many other fixes and improvements, 90 commits since 1.7.0
    Source code(tar.gz)
    Source code(zip)
    flatc_windows_exe.zip(391.39 KB)
  • v1.7.1(Jun 20, 2017)

    This is a bug fix release.

    • Calling CreateVector in C++ on a vector of Offset types with an explicit template parameter (of that Offset type) of could cause the wrong specialization to be selected in 1.7.0. This should affect very few people, but safer to use 1.7.1 just in-case. flatc from 1.7.0 is compatible with 1.7.1.
    Source code(tar.gz)
    Source code(zip)
  • v1.7.0(Jun 17, 2017)

    A summary of what is in this release since 1.6.0:

    • Typescript support!
    • Improved GRPC API with proper zero-copy path. BREAKS API
    • Fixed many issues with ReleaseBufferPointer functionality BREAKS API
    • FlexBuffers: nested in FlatBuffer accessors, (nested) parsing from JSON, JSON output.
    • Vectors of unions and unions of structs/strings (C++ only so far).
    • Several speed optimizations for larger data types in C++ FlatBufferBuilder.
    • Schema registry functionality.
    • Improvements to the object API.
    • Improved docs: C# API, vector of structs.
    • Many other fixes and improvements, 116 commits since 1.6.0
    Source code(tar.gz)
    Source code(zip)
    flatc_windows_exe.zip(374.72 KB)
  • v1.6.0(Feb 15, 2017)

  • v1.5.0(Jan 3, 2017)

    A summary of what is in this release since 1.4.0:

    • GRPC support for Go.
    • C# accessors now based on structs (generates less garbage).
    • Improved object API (e.g. choice of pointer types, external references).
    • Flatc can test for conformity against older schema.
    • In-place binary search lookups for C# and Java.
    • Documentation improvements.
    • Many other fixes and improvements, 133 commits since 1.4.0
    Source code(tar.gz)
    Source code(zip)
    flatc_windows_exe.zip(239.70 KB)
  • v1.4.0(Aug 16, 2016)

    A summary of what is in this release since 1.3.0:

    • Support for GRPC!
    • C++ now has an object API: read & write to generated C++ objects.
    • Mutation support in Go & JS.
    • Many improvements in name space handling and general code generation.
    • Libfuzzer based tests.
    • Documentation for C in the main project.
    • Many other fixes and improvements, 300 commits since 1.3
    Source code(tar.gz)
    Source code(zip)
    flatc_windows_exe.zip(206.77 KB)
  • v1.3.0(Feb 3, 2016)

    A summary of what is in this release since 1.2.0:

    • Support for PHP!
    • Much improved documentation: a tutorial shared by all languages.
    • API improvements for Python, C#, and others.
    • C++ code can now be built with GCC as low as 4.4, and doesn't rely on exceptions anymore.
    • JSON parser can now skip unknown fields.
    • Benchmark code available in benchmark branch.
    • Many other fixes and improvements, 140+ commits since 1.2
    Source code(tar.gz)
    Source code(zip)
    flatc_windows_exe.zip(179.12 KB)
  • v1.2.0(Oct 28, 2015)

    A summary of what is in this release since 1.1.0:

    • Support for JavaScript and Python!
    • A much improved C# and Go API and implementation.
    • Simple mutable FlatBuffers functionality (C++/Java/C#).
    • New reflection functionality: binary schemas, and more dynamic read/mutate (C++, relflection.h).
    • Much improved .proto parsing.
    • Many other fixes and improvements, 200+ commits since 1.1
    Source code(tar.gz)
    Source code(zip)
    flatc_windows_exe.zip(158.76 KB)
  • v1.1.0(Apr 1, 2015)

    A summary of what is in this release since 1.0.0:

    • An extensive overhaul to the Java API.
    • Out-of-the-box support for C# and Go.
    • An optional verifier to make FlatBuffers practical in untrusted scenarios.
    • .proto parsing for easier migration from Protocol Buffers.
    • Optional manual assignment of field IDs.
    • Dictionary functionality through binary search on a key field.
    • Bug fixes and other improvements thanks to 200+ commits from 28 contributors.
    Source code(tar.gz)
    Source code(zip)
    flatc_windows_exe.zip(107.33 KB)
  • v1.0.3(Oct 22, 2014)

    This is an interim release before 1.1.0, with important bug fixes and a few new features:

    • C# is now supported.
    • flatc is able to convert .proto files to FlatBuffer schemas for easier migration from Protocol Buffers.
    • Java FlatBuffers functionality is now more friendly, with better generated code for tables and vectors in particular.
    • Support for required fields.
    • C++ enums are now strongly typed.
    • Option to generate dependent includes in C++ ... and many smaller fixes.
    Source code(tar.gz)
    Source code(zip)
    flatc_windows_exe.zip(91.12 KB)
  • v1.0.2(Sep 3, 2014)

    This is an interim release before 1.1.0, with important bug fixes and a few new features:

    • Schemas can now include other schemas directly.
    • Schemas can refer to types from unrelated namespaces.
    • JSON parsing & writing supports unicode escape codes (\u).
    • Enum value prefixing in C++ is now an option.
    Source code(tar.gz)
    Source code(zip)
    flatc_windows_exe.zip(79.31 KB)
  • v1.0.1(Aug 18, 2014)

    This is an interim release before 1.1.0, with important bug fixes and a few new features:

    • Initial support for the Go programming language.
    • Verification functionality allows safe access of buffers from untrusted sources.
    • File identification allows convenient magic-number sanity checks when a FlatBuffer is used as a file format.
    • Ability to manually assign field id's in the schema.
    • Improved enum parsing functionality in JSON.
    • bit_flags for enums.
    • Nested FlatBuffer support.
    • Vector iterators.
    Source code(tar.gz)
    Source code(zip)
  • v1.0.0(Jun 17, 2014)

Owner
Google
Google ❤️ Open Source
Google
Protocol Buffers - Google's data interchange format

Protocol Buffers - Google's data interchange format Copyright 2008 Google Inc. https://developers.google.com/protocol-buffers/ Overview Protocol Buffe

Protocol Buffers 57.6k Jan 03, 2023
A lightweight library for converting complex objects to and from simple Python datatypes.

marshmallow: simplified object serialization marshmallow is an ORM/ODM/framework-agnostic library for converting complex datatypes, such as objects, t

marshmallow-code 6.4k Jan 02, 2023
🦉 Modern high-performance serialization utilities for Python (JSON, MessagePack, Pickle)

srsly: Modern high-performance serialization utilities for Python This package bundles some of the best Python serialization libraries into one standa

Explosion 329 Dec 28, 2022
Python bindings for the simdjson project.

pysimdjson Python bindings for the simdjson project, a SIMD-accelerated JSON parser. If SIMD instructions are unavailable a fallback parser is used, m

Tyler Kennedy 562 Jan 08, 2023
Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy

orjson orjson is a fast, correct JSON library for Python. It benchmarks as the fastest Python library for JSON and is more correct than the standard j

4.1k Dec 30, 2022
Extended pickling support for Python objects

cloudpickle cloudpickle makes it possible to serialize Python constructs not supported by the default pickle module from the Python standard library.

1.3k Jan 05, 2023
serialize all of python

dill serialize all of python About Dill dill extends python's pickle module for serializing and de-serializing python objects to the majority of the b

The UQ Foundation 1.8k Jan 07, 2023
simplejson is a simple, fast, extensible JSON encoder/decoder for Python

simplejson simplejson is a simple, fast, complete, correct and extensible JSON http://json.org encoder and decoder for Python 3.3+ with legacy suppo

1.5k Dec 31, 2022
Python wrapper around rapidjson

python-rapidjson Python wrapper around RapidJSON Authors: Ken Robbins [email prot

469 Jan 04, 2023
Corset is a web-based data selection portal that helps you getting relevant data from massive amounts of parallel data.

Corset is a web-based data selection portal that helps you getting relevant data from massive amounts of parallel data. So, if you don't need the whole corpus, but just a suitable subset (indeed, a c

13 Nov 10, 2022
MessagePack serializer implementation for Python msgpack.org[Python]

MessagePack for Python What's this MessagePack is an efficient binary serialization format. It lets you exchange data among multiple languages like JS

MessagePack 1.7k Dec 29, 2022
Python library for serializing any arbitrary object graph into JSON. It can take almost any Python object and turn the object into JSON. Additionally, it can reconstitute the object back into Python.

jsonpickle jsonpickle is a library for the two-way conversion of complex Python objects and JSON. jsonpickle builds upon the existing JSON encoders, s

1.1k Jan 02, 2023
FlatBuffers: Memory Efficient Serialization Library

FlatBuffers FlatBuffers is a cross platform serialization library architected for maximum memory efficiency. It allows you to directly access serializ

Google 19.6k Jan 01, 2023
Generic ASN.1 library for Python

ASN.1 library for Python This is a free and open source implementation of ASN.1 types and codecs as a Python package. It has been first written to sup

Ilya Etingof 223 Dec 11, 2022
Ultra fast JSON decoder and encoder written in C with Python bindings

UltraJSON UltraJSON is an ultra fast JSON encoder and decoder written in pure C with bindings for Python 3.6+. Install with pip: $ python -m pip insta

3.9k Jan 02, 2023
Crappy tool to convert .scw files to .json and and vice versa.

SCW-JSON-TOOL Crappy tool to convert .scw files to .json and vice versa. How to use Run main.py file with two arguments: python main.py scw2json or j

Fred31 5 May 14, 2021