logo FlatBuffers

Build status BuildKite status Fuzzing Status Discord Chat Twitter Follow Twitter Follow

FlatBuffers 是一个跨平台序列化库,专为最大化内存效率而设计。 它允许您直接访问序列化的数据,而无需先解析/解包,同时仍然具有出色的向前/向后兼容性。

快速开始

  1. 构建 flatbuffers 的编译器 (flatc)

    使用 cmake 为您的平台创建构建文件,然后执行编译(Linux 示例)。

    cmake -G "Unix Makefiles"
    make -j
    
  2. 定义您的 flatbuffer schema (.fbs)

    编写 schema 以定义您想要序列化的数据。 有关示例,请参见 monster.fbs

  3. 为您的语言生成代码

    使用 flatc 编译器获取您的 schema 并生成特定于语言的代码

    ./flatc --cpp --rust monster.fbs
    

    这将生成 monster_generated.hmonster_generated.rs 文件。

  4. 序列化数据

    使用生成的代码以及 FlatBufferBuilder 来构建您的序列化缓冲区。 (C++ 示例)

  5. 传输/存储/保存缓冲区

    随意使用您的序列化缓冲区。 发送给某人,保存以供以后使用,等等...

  6. 读取数据

    使用生成的访问器从序列化缓冲区读取数据。

    它不需要是相同的语言/schema 版本,FlatBuffers 确保数据在语言和 schema 版本之间是可读的。 请参阅 Rust 示例,读取由 C++ 写入的数据。

文档

访问我们的 landing page 以浏览我们的文档。

支持的操作系统

支持的编程语言

适用于许多流行语言的代码生成和运行时库。

  1. C
  2. C++ - snapcraft.io
  3. C# - nuget.org
  4. Dart - pub.dev
  5. Go - go.dev
  6. Java - Maven
  7. JavaScript - NPM
  8. Kotlin
  9. Lobster
  10. Lua
  11. PHP
  12. Python - PyPI
  13. Rust - crates.io
  14. Swift - swiftpackageindex
  15. TypeScript - NPM
  16. Nim

版本控制

FlatBuffers 不遵循传统的 SemVer 版本控制(参见理由),而是使用发布日期的格式。

贡献

要为此项目做出贡献,请参见 CONTRIBUTING

社区

安全

请查看我们的 安全策略 以报告漏洞。

许可

Flatbuffers 在 Apache License 2.0 版本下获得许可。 有关完整的许可文本,请参见 LICENSE