路线图#
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).
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 源(例如,来自Table
或ChunkedArray
)无法通过任何 ALTREP 机制进行转换,并且可以添加支持 (#219).