格式版本控制和稳定性#
从 1.0.0 版本开始,Apache Arrow 使用 **两个版本** 来描述项目的每个版本:**格式版本** 和 **库版本**。每个库版本都有一个对应的格式版本,多个版本的库可能具有相同的格式版本。例如,库版本 2.0.0 和 3.0.0 可能都跟踪格式版本 1.0.0。有关每个库中支持的功能的详细信息,请参阅 实施状态。
对于 1.0.0 之前的库版本,主要版本可能包含 API 更改。从 1.0.0 开始,我们遵循 语义版本控制 来传达 API 更改。我们预计大多数版本将是主要库版本。
向后兼容性#
更高版本的客户端库将能够读取由较低版本客户端库生成的所有数据和元数据。
只要 **主要** 格式版本没有更改,更高版本的库与较低版本的库向后兼容。
向前兼容性#
较低版本的客户端库必须能够读取从新客户端库生成的数据,或者检测到它无法正确读取数据。
格式版本的 **次要** 版本增加,例如从 1.0.0 到 1.1.0,表示 1.1.0 包含 1.0.0 中不可用的新功能。只要这些功能没有使用(例如新的数据类型),就会保持向前兼容性。
长期稳定性#
格式主要版本的变化(例如从 1.0.0 到 2.0.0)表明这些兼容性保证在某种程度上发生了中断。我们 **不期望** 这种情况经常发生。这将是一个特殊事件,如果发生这种情况,我们将谨慎行事,以确保生产应用程序不受损害。
1.0.0 之前的版本#
对于 1.0.0 之前的版本,我们没有做出任何向前或向后兼容性保证。但是,我们尽一切努力确保新客户端能够读取库版本 0.8.0 及更高版本生成的序列化数据。
1.0.0 之后的格式版本#
自 1.0.0 版本以来,Arrow 格式已发布了五个新的次要版本和零个新的主要版本。每个新的次要版本都添加了新功能。当这些新功能未被使用时,新的次要格式版本与格式版本 1.0.0 兼容。自 1.0.0 以来,每个次要格式版本中添加的新功能如下所示
版本 1.1#
添加了 256 位 Decimal 类型。
版本 1.2#
添加了 MonthDayNano 间隔类型。
版本 1.3#
添加了 运行结束编码布局。
版本 1.4#
添加了 可变大小二进制视图布局 以及关联的 BinaryView 和 Utf8View 类型。
添加了 ListView 布局 以及关联的 ListView 和 LargeListView 类型。
添加了 可变参数缓冲区。
版本 1.5#
扩展 Decimal 类型位宽以允许 32 位和 64 位类型。