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