路线图#

Apache Arrow nanoarrow 是一个相对较新的库,并且正在积极开发中。在实用性和最小化之间保持平衡是困难的;然而,有一些功能非常适合 nanoarrow 的范围,但尚未安排实施。

C 库#

  • 类型覆盖: C 库目前支持 Arrow C 数据接口中可用的所有类型,除了字符串视图/列表视图类型。也应该在 nanoarrow 中添加对这些类型的支持 (#583, #616, #510).

  • 移除 Arrow C++ 测试依赖: C 库和 IPC 扩展依赖于 Arrow C++ 进行一些测试代码,这些代码是在库开发初期编写的。这些测试对于确保 nanoarrow 和 Arrow C++ 之间的兼容性非常宝贵;然而,将它们包含在默认测试套件中会使某些用户的发布验证变得复杂,并阻止在 Arrow C++ 目前无法构建的环境(例如,WASM、没有 C++17 支持的编译器)中进行测试 (#619).

  • 测试详细程度: C 库的测试是在 nanoarrow_testing 库中的测试实用程序可用之前(以及在没有 nanoarrow_testing 库来放置新测试的地方)编写的。因此,其中一些测试非常冗长,难以阅读,这可以并且应该改进 (#577, #566).

  • C++ 集成: 现有的 C++ 集成是刻意保持最少的;然而,可能存在一些改进,可以更好地将 nanoarrow 集成到现有的 C++ 项目中 (#599).

  • 文档: 随着 C 库及其用户群的不断发展,需要改进和扩展文档以支持当前的用例集 (#187, #497).

  • IPC 字典支持: IPC 扩展目前不支持读取 IPC 流中的字典消息 (#622).

  • IPC 压缩支持: IPC 扩展目前不支持使用每缓冲区压缩的压缩流,尽管可以在 nanoarrow 库之外压缩流(例如,对整个流进行 gzip 压缩) (#621)

R 绑定#

  • 转换内部: 从 Arrow 数据到 R 向量的初始转换实现是在 C 中实现的,其冗长性使得难以添加对新类型的支持。应该重构内部结构,使转换代码更容易被新开发人员理解 (#392).

  • 类型支持: R 绑定目前依赖于 Arrow R 包来转换一些 R 类型(例如,list_of),而一些类型在 nanoarrow 或 arrow R 包中不受支持(例如,运行结束编码、列表视图和字符串/二进制视图) (#617).

  • ALTREP 支持: 最近的 R 版本添加了增强的 ALTREP 支持,以便可以将转换为 list() 的类型推迟其物化成本/分配。目前,以块形式到达的 Arrow 源(例如,来自 TableChunkedArray)无法通过任何 ALTREP 机制进行转换,并且可以添加支持 (#219).

Python 绑定#

  • 类型支持: Python 绑定目前不支持联合、字符串/二进制视图或列表视图,或运行结束编码类型。从 Python 对象的可迭代对象创建 Arrow 数组时,一些类型尚不支持(例如,结构、列表、日期时间对象) (#618, #620).