2023年12月5日宣布的变更
Java 破坏性变更
在 v26 版本中,我们计划根据我们的破坏性变更政策和版本支持政策,对 Java 进行一个主版本升级。
以下章节概述了我们计划包含在 Protocol Buffers 26.0 版本发布中的一系列破坏性变更。请注意,计划可能会发生变化。这些是需要注意的潜在破坏性变更,但它们可能不会出现在此特定版本中,或者根本不会发生。
毒丸式生成代码/运行时不匹配检测
根据我们的跨版本运行时保证,Protobuf 不支持跨主版本边界混合生成代码和运行时,也不支持在同一主运行时版本中混合来自较新 protoc 版本的生成代码与旧运行时。我们计划引入“毒丸”机制来检测和强制执行这些不允许的混合情况。
这不被视为破坏性变更,因为它只是增加了对现有策略的强制执行,但可能需要用户更新其生成代码。
破坏与旧生成代码的兼容性
v26.x 版本将破坏与旧主要版本生成代码的兼容性。用户应重新生成旧代码,使其与当前版本一致。
例如,最初为与 v2.x.x 生成代码兼容 v3.x.x 运行时而引入的 GeneratedMessageV3
将被重命名为 GeneratedMessage
。运行时将更新以支持版本(Editions),这将与旧生成代码不兼容。
这符合我们现有的跨版本运行时保证,并且是一项破坏性变更。
移除废弃方法/变量
v26.x 版本将移除对废弃方法和变量的访问。这些通常在之前的版本中已被标记为 @Deprecated
。
这将移除对以下非详尽列表的访问
描述符语法 API,应替换为相应的特性访问器(例如
FieldDescriptor.hasPresence()
,EnumDescriptor.isClosed()
)TextFormat 打印方法,应替换为相应的
TextFormat.printer()
方法。PARSER 变量,应替换为
parser()
方法。用于旧 v2.x.x 生成代码兼容性的运行时方法。根据我们的跨版本运行时保证,这不再受支持。
更多详细信息将在相应的版本说明中提供。