格式版本控制与稳定性#
从 1.0.0 版本开始,Apache Arrow 使用两个版本来描述项目的每个发布版本:格式版本 (Format Version) 和库版本 (Library Version)。每个库版本都有对应的格式版本,并且同一个格式版本可以对应多个库版本。例如,库版本 2.0.0 和 3.0.0 可能都跟踪格式版本 1.0.0。有关每个库支持的功能的详细信息,请参阅实现状态。
对于 1.0.0 之前的库版本,主要发布版本可能包含 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#
添加了可变大小 Binary View 布局以及相关的 BinaryView 和 Utf8View 类型。
添加了ListView 布局以及相关的 ListView 和 LargeListView 类型。
添加了可变参数缓冲区。
版本 1.5#
扩展了 Decimal 类型的位宽,以允许 32 位和 64 位类型。