google/flatbuffers
===========
Quick Start
- 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 ``
- 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 and monster_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 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.
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.
<br>
[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
Package Metadata
Repository: google/flatbuffers
Default branch: master
README: README.md