FlatBuffers: Memory Efficient Serialization Library
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)
cmake to 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)
- Generate code for your language(s)
flatc compiler to take your schema and generate language-specific code:
./flatc --cpp --rust monster.fbs
Which generates monstergenerated.h and monstergenerated.rs files.
- Serialize data
FlatBufferBuilder to construct your serialized buffer. (C++ example)
- Transmit/store/save Buffer
- Read the data
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.
- 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.
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.[CONTRIBUTING]: http://github.com/google/flatbuffers/blob/master/CONTRIBUTING.md [flatbuffers tag]: https://stackoverflow.com/questions/tagged/flatbuffers [FlatBuffers Google Group]: https://groups.google.com/forum/#!forum/flatbuffers [FlatBuffers Issues Tracker]: http://github.com/google/flatbuffers/issues [stackoverflow.com]: http://stackoverflow.com/search?q=flatbuffers [landing page]: https://google.github.io/flatbuffers [LICENSE]: https://github.com/google/flatbuffers/blob/master/LICENSE