GitHub - xataio/pgzx: 使用 Zig 创建 PostgreSQL 扩展。

主要观点

  • pgzx是用 Zig 编写 PostgreSQL 扩展的库,提供实用工具和开发环境。
  • Zig 语言小而简单,能与 C 代码自然交互,使系统级代码更易维护。
  • pgzx提供的工具简化了在 Zig 中开发 Postgres 扩展的过程,通过示例展示其用法。
  • 项目使用 Nix flakes 管理依赖,提供开发 shell,包含多种测试方式。
  • 处于开发阶段,有功能扩展计划和 Roadmap,欢迎参与贡献。

关键信息

  • 提供的示例扩展:char_count_zigpghostname_zigpg_audit_zig
  • 日志和错误处理:提供包装函数,避免 C 中 long jump 导致的资源清理问题。
  • 内存上下文分配器:使用 Postgres 的内存上下文系统,提供自定义包装分配器。
  • 函数管理器:用于注册 Zig 编写的可在 SQL 中调用的函数。
  • 测试扩展:提供 pg_regress 测试和单元测试,通过特定函数调用运行。
  • 开发环境工具:下载和管理 Postgres 源代码,编译示例扩展等。

重要细节

  • 使用 nix flake init -t github:xataio/pgzx 初始化新的 Zig 基于 Postgres 扩展项目。
  • 环境变量 PRJ_ROOTPG_HOME 的作用及设置方法。
  • 在 Zig 中使用 pgzx.err.Context 处理错误。
  • 通过 pgzx.mem.createAllocSetContext 创建内存上下文分配器。
  • 在调试单元测试时,需附加调试器到现有会话,确保扩展库已加载。
  • 提供调试 Postgres 源的开发 shell 和相关脚本。
  • Zig 版本遵循 master 分支,Nix 开发 shell 固定工具链版本。
  • 扩展默认安装在本地 zig-out 文件夹,可通过 -p 传递 Postgres 安装路径前缀进行安装。
阅读 9
0 条评论