更改 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 实现
我们可以讨论并投票决定将更多实现添加到列表中。我们可以使用 实现状态来确定哪些实现已完成。
版本控制#
格式版本(独立于库版本)在进行新更改时也必须递增。请参阅 格式版本控制和稳定性。