Skip to content

FlatBuffers: Memory Efficient Serialization Library

License

Notifications You must be signed in to change notification settings

rametta/flatbuffers

This branch is 5 commits ahead of google/flatbuffers:master.

Folders and files

NameName
Last commit message
Last commit date
Feb 4, 2025
Feb 4, 2025
Feb 11, 2025
Feb 11, 2025
Mar 25, 2021
Feb 4, 2025
Sep 10, 2022
Feb 11, 2025
Feb 11, 2025
Apr 26, 2023
Apr 26, 2023
Feb 11, 2025
Feb 11, 2025
Feb 11, 2025
Feb 11, 2025
Oct 19, 2020
Sep 6, 2024
Mar 8, 2022
May 8, 2021
Sep 17, 2020
Feb 11, 2025
Oct 21, 2022
Nov 29, 2022
Feb 11, 2025
Jan 23, 2025
Feb 11, 2025
Feb 11, 2025
Feb 11, 2025
Jun 11, 2021
Feb 14, 2025
Feb 11, 2025
Feb 14, 2025
Feb 4, 2025
Jan 23, 2025
Jan 24, 2025
Dec 21, 2017
Dec 15, 2022
Feb 28, 2023
Sep 17, 2020
Mar 18, 2019
Jan 22, 2025
May 3, 2023
Jan 24, 2025
Feb 11, 2025
Jun 18, 2024
Feb 9, 2017
Feb 11, 2025
May 15, 2021
Jan 31, 2023
Feb 11, 2025
Feb 4, 2025
Jan 14, 2025
May 19, 2021
Jan 24, 2025
Nov 17, 2015
Mar 3, 2023
Jan 22, 2025
Feb 11, 2025
Dec 14, 2023
May 29, 2024
Feb 6, 2023
Dec 14, 2023
Jan 23, 2025

Repository files navigation

logo FlatBuffers

Build status BuildKite status Fuzzing Status Discord Chat Twitter Follow 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.

Quick Start

  1. Build the compiler for flatbuffers (flatc)

    Use cmake to create the build files for your platform and then perform the compilation (Linux example).

    cmake -G "Unix Makefiles"
    make -j
    
  2. Define your flatbuffer schema (.fbs)

    Write the schema to define the data you want to serialize. See monster.fbs for an example.

  3. Generate code for your language(s)

    Use the flatc compiler to take your schema and generate language-specific code:

    ./flatc --cpp --rust monster.fbs
    

    Which generates monster_generated.h and monster_generated.rs files.

  4. Serialize data

    Use the generated code, as well as the FlatBufferBuilder to construct your serialized buffer. (C++ example)

  5. Transmit/store/save Buffer

    Use your serialized buffer however you want. Send it to someone, save it for later, etc...

  6. Read the data

    Use the generated accessors to read the data from the serialized buffer.

    It doesn't need to be the same language/schema version, FlatBuffers ensures the data is readable across languages and schema versions. See the Rust example reading the data written by C++.

Documentation

Go to our landing page to browse our documentation.

Supported operating systems

  • Windows
  • macOS
  • Linux
  • Android
  • And any others with a recent C++ compiler (C++ 11 and newer)

Supported programming languages

Code generation and runtime libraries for many popular languages.

  1. C
  2. C++ - snapcraft.io
  3. C# - nuget.org
  4. Dart - pub.dev
  5. Go - go.dev
  6. Java - Maven
  7. JavaScript - NPM
  8. Kotlin
  9. Lobster
  10. Lua
  11. PHP
  12. Python - PyPI
  13. Rust - crates.io
  14. Swift - swiftpackageindex
  15. TypeScript - NPM
  16. Nim

Versioning

FlatBuffers does not follow traditional SemVer versioning (see rationale) but rather uses a format of the date of the release.

Contribution

To contribute to this project, see CONTRIBUTING.

Community

Security

Please see our Security Policy for reporting vulnerabilities.

Licensing

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


About

FlatBuffers: Memory Efficient Serialization Library

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 39.2%
  • Rust 10.5%
  • Python 7.1%
  • Swift 6.5%
  • Java 6.2%
  • C# 5.9%
  • Other 24.6%