编写新驱动程序

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