搜索你想找的开源项目

输入名称、用途或关键词,也可粘贴 GitHub 仓库链接

分享到微信

当前解读页的微信分享二维码

用微信扫一扫打开,点击右上角「···」分享给朋友或朋友圈。

手机上可截屏后,在微信扫一扫中从相册识别二维码。

google/flatbuffers

数据

跨平台、零拷贝的序列化库,通过 schema 生成多语言读写代码,适合对延迟和内存敏感的数据交换场景。

26,617
3,722
C++
Apache-2.0
创建于 12 年前

项目介绍

FlatBuffers 把结构化数据编码成紧凑缓冲区,读取时直接按偏移访问字段,不需要先解析或解包。这种零拷贝方式适合游戏资源、移动端应用、进程间通信或 RPC 载荷等对延迟和内存敏感的场景。数据格式由 .fbs schema 定义,flatc 编译器据此生成各语言的类型化代码,跨语言读取和 schema 版本兼容是设计目标之一。

快速使用

在仓库目录构建编译器,再用 schema 生成代码。README 给出的 Linux 示例:

cmake -G "Unix Makefiles"
make -j
./flatc --cpp --rust monster.fbs

执行后得到 monster_generated.h 和 monster_generated.rs。用生成的类型配合 FlatBufferBuilder 构造缓冲区,再传输或保存;读取时使用生成的访问器,不要求写入方使用相同语言或同一 schema 版本。编写 schema 指南和 monster.fbs 示例可作为起点,仓库里还有 C++ 与 Rust 的读写样例。

运行与平台支持

运行时覆盖 C、C++、C#、Dart、Go、Java、JavaScript、Kotlin、Lobster、Lua、PHP、Python、Rust、Swift、TypeScript 和 Nim,常见包管理器上都有发布,例如 PyPI、crates.io、npm、NuGet 和 Maven。支持 Windows、macOS、Linux、Android,以及任何具备 C++11 或更新编译器的平台。完整文档在项目官网。

版本与许可

版本号采用发布日期而非传统 SemVer,维护者在版本说明中解释了原因。代码使用 Apache-2.0 许可,漏洞上报遵循安全策略。

HotRepo 点评

这个库已有十余年历史:2014 年的一则 Hacker News 讨论把它视为 Cap'n Proto 的替代方案,获得 83 分和 31 条评论(讨论)。当时有评论者在两者间权衡,认为 FlatBuffers 代码库更简单易改,并指出竞品缺少 Windows/CMake 支持(评论)。另一处争议是库是否向 Google 回传使用情况;同帖后续回复澄清,实际只是二进制中包含版本字符串供 Play Store 扫描,并非主动上报(评论、回复)。HotRepo 最近一条快照为 2026-11-06,显示 26,613 星、3,722 fork,当日 C++ 日榜新增 1 星、排名第 7。选型时的核心权衡仍是:schema 驱动的代码生成,对比较自描述格式,牺牲了一部分灵活性。

本文由 AI 根据项目 README 生成,更新于 ,以项目官方文档为准。

Hacker News 讨论

Flatbuffers by Google – CapnProto alternative
▲ 83 · 31 条评论 · 2014年10月25日
Google/flatbuffers – efficient serialization library
▲ 2 · 0 条评论 · 2014年7月12日
Google FlatBuffers
▲ 1 · 0 条评论 · 2014年7月2日