2022年5月6日发布的变更
Protocol Buffers 于 2022 年 5 月 6 日发布了相关变更。
版本控制
我们更改了版本控制方案,以便对 Protocol Buffers 特定语言的部分进行更灵活的更新。在新方案中,每种语言都有自己的主版本,可以独立于其他语言进行递增,正如本主题后面在 Python 版本中介绍的。但是,次版本和补丁版本将保持耦合。这使我们能够在不要求未发生重大更改的语言主版本号增加的情况下,将重大更改引入某些语言。
此新版本控制方案的第一个实例是 Python API 的新版本 4.21.0,该版本紧随前一个版本 3.20.1 之后。其他语言 API 将发布为 3.21.0。
Python 更新
我们在 Protocol Buffers 的 Python 语言支持方面进行了一些更改。4.21.0 版本是一个新的主版本,紧随 3.20.1 之后。新版本基于 upb 库,与之前的版本相比,解析性能有了显著提升,尤其是在处理大型有效载荷时。它还包括 Apple Silicon 的预编译二进制模块,以在无需手动构建的情况下提高性能。
新版本包含一些重大更改。具体来说:
UnknownFields()方法,该方法依赖于一个隐式创建的类,已被显式创建的UnknownFieldSet类取代。- 某些非核心特性可能已发生更改,例如某些字符串或错误消息的具体格式。这些不被视为重大更改,但仍可能影响您现有的代码库。
- 依赖于在 Python 和 C++ 之间共享消息的应用程序在新版本中将无法正常工作。大多数开发者不会受到此影响,但 Nucleus 和其他可能库的用户可能会受到影响。作为一种变通方法,您可以设置一个环境变量来强制库保留兼容性。
- Python upb 需要使用 protoc 3.19.0 或更高版本生成的代码。
JavaScript 支持
为了使 Protocol Buffers 的 JavaScript 支持能够独立于主存储库进行演进和发布,我们移动了一些东西。具体来说,我们将语言支持与主项目分离,并将其移至自己的存储库。
如果您已创建与 Protocol Buffers 中的 JavaScript 支持相关的任何拉取请求,但仍希望将其合并,请随时在 JavaScript 存储库中复制这些请求。我们将自动转移 GitHub 问题。