FlatBuffers
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
-
Build the compiler for flatbuffers (
flatc)Use
cmaketo create the build files for your platform and then perform the compilation (Linux example).cmake -G \"Unix Makefiles\" make -j -
Define your flatbuffer schema (
.fbs)Write the schema to define the data you want to serialize. See monster.fbs for an example.
-
Generate code for your language(s)
Use the
flatccompiler to take your schema and generate language-specific code:./flatc --cpp --rust monster.fbsWhich generates
monster_generated.handmonster_generated.rsfiles. -
Serialize data
Use the generated code, as well as the
FlatBufferBuilderto construct your serialized buffer. (C++example) -
Transmit/store/save Buffer
Use your serialized buffer however you want. Send it to someone, save it for later, etc…
-
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
Rustexample reading the data written byC++.
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.
- C
- C++ – snapcraft.io
- C# – nuget.org
- Dart – pub.dev
- Go – go.dev
- Java – Maven
- JavaScript – NPM
- Kotlin
- Lobster
- Lua
- PHP
- Python – PyPI
- Rust – crates.io
- Swift – swiftpackageindex
- TypeScript – NPM
- Nim
Versioning
FlatBuffers does not follow traditional SemVer versioning (see rationale) but rather uses a format of the date of the release.
Contribution
- FlatBuffers Issues Tracker to submit an issue.
- stackoverflow.com with
flatbufferstag for any questions regarding FlatBuffers.
To contribute to this project, see CONTRIBUTING.
Community
- Discord Server
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.
