格式版本控制和稳定性#
从 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 和 LargeListView 类型。
添加了可变缓冲区。
版本 1.5#
扩展了 Decimal 类型的位宽以允许 32 位和 64 位类型。