更改 Apache Arrow 格式规范#

Apache Arrow 中跨语言兼容性非常重要。为了维护它,我们在处理格式更改时(apache/arrow 中的文件)使用以下流程

  • 我们必须在公开邮件列表中讨论并投票表决这些更改

  • 我们必须至少有两个参考实现和相关的集成测试

这些不需要按顺序进行。在大多数情况下,拥有至少一个参考实现草案有助于设计讨论。

注意

我们还必须更新相应的文档(apache/arrow 中的文件)。

讨论和投票流程#

格式更改应在公开邮件列表中讨论。任何人都可以加入讨论。讨论应以 dev@arrow.apache.org 中的主题前缀为 [DISCUSS] 的线程开始。

注意

我们有时会使用 [Discuss]DISCUSS: 或类似的东西,但推荐使用 [DISCUSS]

以下是一些示例

投票流程用于验证我们是否已达成共识。在先前 DISCUSS 邮件列表线程中达成共识后,我们可以开始对格式更改进行投票。与讨论线程类似,投票线程的主题前缀必须为 [VOTE]

另请参见:Apache 投票流程

至少两个参考实现#

我们必须至少有两个参考实现和相关的集成测试,以确认格式更改是否跨语言兼容且一致。

参考实现必须位于完整的 Arrow 实现中。例如,C++ 库是可以接受的,但 Python 库不行,因为它只是 C++ 库的包装器。以下是候选实现

  • C++ 实现

  • Java 实现

  • Rust (arrow-rs) 实现

  • Go 实现

我们可以讨论并投票决定将更多实现添加到列表中。我们可以使用实现状态 来确定哪些实现已完成。

版本控制#

格式版本(与库版本分开)也必须在进行新的更改时递增。请参阅格式版本控制和稳定性