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

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

版本控制#

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