编写新的驱动程序

目前,可以使用 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 包装器。 特别是如果计划将驱动程序上游化,我们建议驱动程序作者考虑使用这些框架。