路线图#
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)。