* Don't generate types unless --python-typing specified Fixes https://github.com/google/flatbuffers/issues/7944 * Fix incorrect import statements Fixes https://github.com/google/flatbuffers/issues/7951 * Fix $PYTHONPATH in PythonTest.sh Regressed from https://github.com/google/flatbuffers/pull/7529 * PythonTest: fail if something goes wrong GitHub Actions runs `bash PythonTest.sh`, and thus failures were not visible. * Build flatc for Python tests * Regenerate codes --------- Co-authored-by: Derek Bailey <derekbailey@google.com> |
||
|---|---|---|
| .bazelci | ||
| .github | ||
| android | ||
| bazel | ||
| benchmarks | ||
| CMake | ||
| conan | ||
| dart | ||
| docs | ||
| examples/go-echo | ||
| go | ||
| goldens | ||
| grpc | ||
| include/flatbuffers | ||
| java | ||
| js | ||
| kotlin | ||
| lobster | ||
| lua | ||
| mjs | ||
| net/FlatBuffers | ||
| nim | ||
| php | ||
| python | ||
| reflection | ||
| rust | ||
| samples | ||
| scripts | ||
| snap | ||
| src | ||
| swift | ||
| tests | ||
| ts | ||
| .bazelignore | ||
| .bazelrc | ||
| .clang-format | ||
| .clang-tidy | ||
| .editorconfig | ||
| .eslintrc.js | ||
| .gitattributes | ||
| .gitignore | ||
| .npmrc | ||
| BUILD.bazel | ||
| build_defs.bzl | ||
| CHANGELOG.md | ||
| CMakeLists.txt | ||
| composer.json | ||
| conanfile.py | ||
| CONTRIBUTING.md | ||
| FlatBuffers.podspec | ||
| Formatters.md | ||
| LICENSE | ||
| package.json | ||
| Package.swift | ||
| Package@swift-5.5.swift | ||
| pnpm-lock.yaml | ||
| README.md | ||
| SECURITY.md | ||
| swift.swiftformat | ||
| tsconfig.json | ||
| tsconfig.mjs.json | ||
| typescript.bzl | ||
| WORKSPACE | ||
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 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
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
- FlatBuffers Google Group to discuss FlatBuffers with other developers and users.
- Discord Server
- Gitter
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.