路线图#

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 绑定目前不支持联合(union)、字符串/二进制视图、列表视图或行程长度编码类型。当从 Python 对象的可迭代对象创建 Arrow 数组时,某些类型尚不支持(例如,结构体、列表、日期时间对象)(#618, #620)。