WAL-RUS: a Rust Rewrite of WAL-G for PostgreSQL Backups
clickhouse.com
clickhouse.com
Of course you can write a more optimal version in C / C++ / Zig / Rust, but at the same time Go is much easier to write and you don't pay for the convenience with an absurd performance loss like in Python or PHP
wal-g was a much larger improvement over wal-e. we're optimizing the margins here
https://github.com/wal-g/wal-g/pull/2262
but yes, this is young project, so fair take
The importance of optimizing (resource) margins and having predictable memory usage increases significantly in the DBaaS/Postgres world, where your process coexists and competes with other critical workloads.
Also, WAL-RUS isn’t rocket science. Postgres already exposes a bunch native constructs for WAL archival, making development fairly straightforward even in Rust.
TL;DR: when to choose Rust or Go really depends on the workload and what you are going after.
Granted Go could make it much more easier to understand when they escape the stack into the heap, as many of their design decisions, simple and easy aren't the same.
wal-g/wal-rus have higher throughput
This helps on both ends of the cost spectrum. Large 64 core instances are where our heuristics fall off the most as variance increases, & tiny instances with 8GB of memory can use every 100MB of RSS we can get