格式版本控制与稳定性#
从 1.0.0 版本开始,Apache Arrow 使用两个版本号来描述项目的每次发布:格式版本 (Format Version) 和 库版本 (Library Version)。每个库版本都有一个对应的格式版本,且多个库版本可能对应同一个格式版本。例如,库版本 2.0.0 和 3.0.0 可能都跟踪格式版本 1.0.0。有关每个库所支持功能的详细信息,请参阅 实现状态 (Implementation Status)。
对于 1.0.0 之前的库版本,主要发布(major releases)可能包含 API 变更。从 1.0.0 开始,我们在沟通 API 变更时遵循 语义化版本规范 (Semantic Versioning)。我们预期大多数发布都将作为主要库版本发布。
向后兼容性#
较新版本的客户端库将能够读取由旧版本客户端库产生的任何数据和元数据。
只要主 (major) 格式版本没有改变,较新的库就与旧版本的库保持向后兼容。
向前兼容性#
较旧的客户端库必须能够读取由新客户端库生成的数据,或者能够检测到其无法正确读取这些数据。
格式版本的次 (minor) 版本号增加(例如从 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#
添加了 变长二进制视图布局 (Variable-size Binary View Layout) 以及相关的 BinaryView 和 Utf8View 类型。
添加了 列表视图布局 (ListView Layout) 以及相关的 ListView 和 LargeListView 类型。
版本 1.5#
扩展了 Decimal 类型的位宽,以支持 32 位和 64 位类型。