用 Rust 重写的 Postgres 现在通过 100% 的 Postgres 回归测试
用 Rust 重写的 Postgres。pgrust 的目标是与 Postgres 18.3 兼容,并在超过 46,000 个回归查询中匹配 Postgres 的预期输出。pgrust 与 Postgres 磁盘兼容,可以从现有的 Postgres 18.3 数据目录引导。目标是使 Postgres 更容易从内部进行更改:保持 Postgres 形状的行为,确保真实的 Postgres 测试作为标准,利用 Rust 加上 AI 辅助编程探索更深层次的服务器更改。状态 pgrust 目前尚未准备好用于生产。它尚未进行性能优化。现有的 Postgres 扩展和过程语言扩展,如 PL/Python、PL/Perl 和 PL/Tcl 目前通常不兼容。一些捆绑的贡献模块已经移植,随着时间的推移,可能会有更多的兼容性。路线图:多线程 Postgres 内部,内置连接池,更好的 JSON 重负载支持,快速的分叉和分支工作流程,存储实验,包括无清理设计,针对不良查询和 AI 生成的 SQL 的运行时保护,减少突然的糟糕计划切换。试试吧:在 https://pgrust.com 尝试 WebAssembly 演示。Docker:docker run -d --name pgrust -e POSTGRES_PASSWORD=secret malisper/pgrust:v0.1 && until docker exec -e PGPASSWORD=secret pgrust psql -h 127.0.0.1 -U postgres -c ' \\q ' > /dev/null 2>&1 ; do sleep 1 ; done && docker exec -it -e PGPASSWORD=secret pgrust psql -h 127.0.0.1 -U postgres ; docker rm -f pgrust。 这使用 Docker 镜像中的 psql 客户端。 malisper/pgrust:latest 当前指向相同的版本,但 v0.1 是固定的启动镜像。 从源代码构建:macOS:brew install icu4c openssl@3 libpq export LIBRARY_PATH= " $( brew --prefix openssl@3 ) /lib: ${LIBRARY_PATH :- } " export PKG_CONFIG_PATH= " $( brew --prefix openssl@3 ) /lib/pkgconfig: $( brew --prefix icu4c ) /lib/pkgconfig: ${PKG_CONFIG_PATH :- } " export PATH= " $( brew --prefix libpq ) /bin: $PATH " Debian/Ubuntu:sudo apt-get update sudo apt-get install -y build-essential pkg-config libicu-dev libssl-dev libldap2-dev libpam0g-dev postgresql-client-18 构建:PGRUST_PGSHAREDIR= " $PWD /vendor/postgres-18.3/share " cargo build --release --locked --bin postgres 创建数据目录:target/release/postgres --initdb -D /tmp/pgrust-data -L " $PWD /vendor/postgres-18.3/share " --no-locale --encoding UTF8 -U postgres 运行 pgrust:ulimit -s 65520 RUST_MIN_STACK=33554432 target/release/postgres -D /tmp/pgrust-data -F -c listen_addresses= -k /tmp -p 5432 -c io_method=sync -c max_stack_depth=60000 连接:psql -h /tmp -p 5432 -U postgres -d postgres -c " select version(), 1 + 1 as two " 回归测试:对 pgrust 运行 Postgres 回归测试:PGRUST_BIN= " $PWD /target/release/postgres " scripts/run-regression 运行器使用 pgrust 自己的 --initdb 加上这个仓库中的 vendored Postgres 18.3 测试文件。它需要在 PATH 中有一个 Postgres 18 的 psql 客户端;如果 psql 在其他地方,请设置 PGRUST_PSQL=/path/to/psql。 验证的启动结果:pgrust 在超过 46,000 个回归查询中匹配 Postgres 的预期输出。 历史:这个仓库现在包含达到了回归测试里程碑的较新 pgrust 实现。较旧的公共实现已存档在 archive/pre-fabled-2026-06-23。 背景:原始 pgrust 启动:https://malisper.me/pgrust-rebuilding-postgres-in-rust-with-ai/ 67% 回归更新:https://malisper.me/pgrust-update-at-67-postgres-compatibility-and-accelerating/ 四骑士路线图:https://malisper.me/the-four-horsemen-behind-thousands-of-postgres-outages/ 反馈:如果有任何问题,请打开一个 issue,如果设置令人困惑,或者如果您希望首先看到 Postgres 改进,请联系我们。 联系邮箱:maintainers@pgrust.com Discord: https://discord.gg/FZZ4dbdvwU 邮件列表:https://malisper.me/subscribe/ 许可证:pgrust 根据 AGPL-3.0 许可证发布。请参阅 LICENSE。
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡