Postgres rewritten in Rust, now passing 100% of the Postgres regression tests
Summary
pgrust is a Rust rewrite of PostgreSQL 18.3 that passes all 46k+ regression tests, aiming to make Postgres easier to modify with Rust and AI assistance. It is disk-compatible and can boot from existing Postgres data directories.
View Cached Full Text
Cached at: 07/09/26, 07:35 AM
malisper/pgrust
Source: https://github.com/malisper/pgrust
pgrust
A Postgres rewrite in Rust.
pgrust targets compatibility with Postgres 18.3 and matches Postgres’s expected output across more than 46,000 regression queries.
pgrust is disk compatible with Postgres and can boot from an existing Postgres 18.3 data directory.
The goal is to make Postgres easier to change from the inside: keep the behavior Postgres-shaped, keep the real Postgres tests as the oracle, and use Rust plus AI-assisted programming to explore deeper server changes.
Status
pgrust is not production-ready yet. It is not performance optimized yet.
Existing Postgres extensions and procedural language extensions such as PL/Python, PL/Perl, and PL/Tcl are not generally compatible yet. Some bundled contrib modules are already ported, and more compatibility may be possible over time.
Roadmap
- multithreaded Postgres internals
- built-in connection pooling
- better JSON-heavy workload support
- fast forking and branching workflows
- storage experiments, including no-vacuum designs
- runtime guardrails for bad queries and AI-generated SQL
- fewer sudden bad plan switches
Try It
Try the WebAssembly demo at https://pgrust.com.
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
This uses the psql client inside the Docker image.
malisper/pgrust:latest currently points at the same release, but v0.1 is the
pinned launch image.
Build From Source
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
Build:
PGRUST_PGSHAREDIR="$PWD/vendor/postgres-18.3/share" \
cargo build --release --locked --bin postgres
Create a data directory:
target/release/postgres --initdb \
-D /tmp/pgrust-data \
-L "$PWD/vendor/postgres-18.3/share" \
--no-locale \
--encoding UTF8 \
-U postgres
Run 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
Connect:
psql -h /tmp -p 5432 -U postgres -d postgres \
-c "select version(), 1 + 1 as two"
Regression Tests
Run the Postgres regression tests against pgrust:
PGRUST_BIN="$PWD/target/release/postgres" \
scripts/run-regression
The runner uses pgrust’s own --initdb plus the vendored Postgres 18.3 test
files in this repository. It needs a Postgres 18 psql client on PATH; if
psql is somewhere else, set PGRUST_PSQL=/path/to/psql.
Verified launch result: pgrust matched Postgres’s expected output across more than 46,000 regression queries.
History
This repository now contains the newer pgrust implementation that reached the regression-test milestone.
The older public implementation is archived on
archive/pre-fabled-2026-06-23.
Background:
- Original pgrust launch: https://malisper.me/pgrust-rebuilding-postgres-in-rust-with-ai/
- 67% regression update: https://malisper.me/pgrust-update-at-67-postgres-compatibility-and-accelerating/
- Four Horsemen roadmap: https://malisper.me/the-four-horsemen-behind-thousands-of-postgres-outages/
Feedback
Please open an issue if something breaks, if setup is confusing, or if there is a Postgres improvement you want to see first.
Contact
- Email: [email protected]
- Discord: https://discord.gg/FZZ4dbdvwU
- Mailing list: https://malisper.me/subscribe/
License
pgrust is licensed under AGPL-3.0. See LICENSE.
Similar Articles
@ErickSky: They rewrote PostgreSQL completely in Rust... and it already passes 100% of the official Postgres tests! Heads up, it's…
A ground-up reimplementation of PostgreSQL in Rust passes 100% of official tests, is disk-compatible, and claims significant performance improvements (50% faster transactional, ~300x faster analytical) in a WIP version.
We're building Postgres in Rust. Using the LLVM of databases
Turso announces a project to build a modern, Rust-based version of Postgres using its core database engine, positioning itself as the LLVM of databases with features like self-updating materialized views.
WAL-RUS: a Rust Rewrite of WAL-G for PostgreSQL Backups
ClickHouse Cloud announces WAL-RUS, an open-source Rust rewrite of WAL-G for PostgreSQL backups, focusing on predictable memory usage and WAL-G compatibility.
@trq212: Jarred tried rewriting Bun in Rust and it passes 99.8% of the existing test suite we're not being ambitious enough
A developer named Jarred successfully rewrote parts of the Bun runtime in Rust, achieving a 99.8% pass rate on the existing test suite, highlighting a discussion on engineering ambition.
PostgresBench: A Reproducible Benchmark for Postgres Services
ClickHouse has released PostgresBench, a public and reproducible benchmark for comparing managed Postgres services, using the standard pgbench tool with TPC-B-like workloads at multiple scale factors.