更改 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 实现

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

版本控制#

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