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.
-
Build the compiler for flatbuffers (
flatc
)Use
cmake
to create the build files for your platform and then perform the compliation (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
flatc
compiler to take your schema and generate language-specific code:./flatc --cpp --rust monster.fbs
Which generates
monster_generated.h
andmonster_generated.rs
files. -
Serialize data
Use the generated code, as well as the
FlatBufferBuilder
to 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
Rust
example reading the data written byC++
.
Go to our landing page to browse our documentation.
- Windows
- macOS
- Linux
- Android
- And any others with a recent C++ compiler (C++ 11 and newer)
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
FlatBuffers does not follow traditional SemVer versioning (see rationale) but rather uses a format of the date of the release.
- FlatBuffers Issues Tracker to submit an issue.
- stackoverflow.com with
flatbuffers
tag for any questions regarding FlatBuffers.
To contribute to this project, see CONTRIBUTING.
- FlatBuffers Google Group to discuss FlatBuffers with other developers and users.
- Discord Server
- Gitter
Please see our Security Policy for reporting vulnerabilities.
Flatbuffers is licensed under the Apache License, Version 2.0. See LICENSE for the full license text.