更改 Apache Arrow 格式规范#
在 Apache Arrow 中,跨语言兼容性非常重要。为了维护兼容性,当处理格式更改(位于 apache/arrow 中的文件)时,我们遵循以下流程:
我们必须在公共邮件列表中讨论并投票决定更改
我们必须至少有两个参考实现和相关的集成测试
这些步骤不一定按顺序进行。在大多数情况下,至少有一个参考实现草案有助于设计讨论。
注意
我们还必须更新相应的文档(位于 apache/arrow 中的文件)。
讨论和投票流程#
格式更改应在公共邮件列表中进行讨论。任何人都可以加入讨论。讨论应通过向 dev@arrow.apache.org 发送主题前缀为 [DISCUSS]
的邮件来发起。
注意
我们有时会使用 [Discuss]
、DISCUSS:
或类似前缀,但推荐使用 [DISCUSS]
。
以下是一些示例
投票流程用于验证我们是否已达成共识。在前期的讨论邮件列表主题中达成共识后,我们可以就格式更改发起投票。与讨论主题类似,投票主题必须带有前缀 [VOTE]
。
另请参阅:Apache 投票流程
至少两个参考实现#
我们必须至少有两个参考实现和相关的集成测试,以确认格式更改在不同语言之间兼容且一致。
参考实现必须位于完整的 Arrow 实现中。例如,C++ 库是可以接受的,但 Python 库不行,因为它只是 C++ 库的包装。以下是候选实现:
C++ 实现
Java 实现
Rust (arrow-rs) 实现
Go 实现
我们可以讨论并投票决定向列表中添加更多实现。我们可以使用实现状态来确定哪些实现是完整的。
版本控制#
格式版本(与库版本是分开的)也必须随着新更改的进行而增加。参阅格式版本控制与稳定性。