介绍 pgzx:由 Steffen Siering 和 Tudor Golubenco 使用 Zig 创建 PostgreSQL 扩展

主要观点:Xata 推出开源框架 pgzx 用于用 Zig 编写 PostgreSQL 扩展,介绍了 Zig 语言特点、pgzx 的示例扩展、运行时内存安全、内存管理、错误处理、开发环境、单元测试等方面,阐述创建 pgzx 的原因及现状、后续步骤等。
关键信息

  • Zig 是通用编程语言,可与 C 代码互操作,提供更安全内存管理等。
  • pgzx 简化 PostgreSQL 扩展开发,有示例扩展如 char_count_zig 和 pg_audit_zig。
  • 代码中存在 bug 可通过运行时检查发现,如空字符串访问错误。
  • Postgres 用分配器区域管理内存,pgzx 定义自定义分配器。
  • pgzx 提供处理 Postgres 错误的函数。
  • 有基于 Nix flakes 的开发环境和项目模板。
  • 可通过 pg_regress 测试扩展,pgzx 注册自定义 run_tests 函数进行单元测试。
  • 创建 pgzx 是为 Xata 的分布式 Postgres 项目,考虑过多种实现方向后选择作为 Postgres 扩展并用 Zig 编写。
  • pgzx 处于“alpha”阶段,可在 Xata Discord 寻求帮助或贡献。
    重要细节
  • Zig 的 comptime 可生成必要的模板代码,如在处理 Postgres 函数参数序列化时。
  • Postgres 的内存上下文可简化内存管理,名称便于内存监控。
  • pgzx 的 run_tests 函数通过迭代结构体字段生成测试调用。
  • Xata 的分布式 Postgres 项目处于早期阶段,将开源并在公共平台构建。
阅读 37
0 条评论