编写新驱动程序

目前,新驱动程序可以用 C#、C/C++、Go 和 Java 编写。用 C/C++ 或 Go 编写的驱动程序可以用于这些语言,以及 C#、Python、R 和 Ruby。(C# 也可以实验性地将驱动程序导出到相同的语言集。)ADBC 的 Rust API 定义仍在开发中,但我们计划让它们在这方面与 C#、C/C++ 和 Go 相当。

到目前为止,我们更倾向于用 Go 编写新驱动程序。C/C++ 在依赖项方面存在问题,尤其是在该生态系统中一些不常见的依赖项在加载到 Python 进程和其他地方时往往会引起冲突。(例如,ADBC Flight SQL 驱动程序最初是用 C++ 编写的,但会与 grpcio 和 pyarrow Python 包冲突。)此外,对我们来说,打包和分发额外的 Go 库通常比 C/C++ 更容易。

在 Go 中,有一些框架可供驱动程序作者使用。go/adbc/driver/internal/driverbase 管理着驱动程序的大部分样板代码和基本状态管理。go/adbc/pkg 可以围绕 Go 驱动程序生成 C ABI 包装器模板。特别是如果计划将驱动程序上游化,我们建议驱动程序作者考虑使用这些框架。