Projektet pgrust er blevet offentliggjort, med implementering af PostgreSQL-databasen omskrevet i Rust ved hjælp af c2rust-translatøren og AI-assistenten. Det er angivet, at projektet endnu ikke er klar til brug i arbejdsmiljøer, men det bestået allerede alle regressions tests for PostgreSQL, er kompatibelt med dataopbevaringsformatet i PostgreSQL 18.3 og kan bruge datakatalogen fra PostgreSQL 18.3. Projektets kode distribueres under AGPLv3-licensen, i modsætning til den originale PostgreSQL, som leveres under en permissiv PostgreSQL-licens, der ligner BSD- og MIT-licenserne. Der er tilgængelig en online demonstration af funktionaliteterne, baseret på en opbygning i WebAssembly, samt et docker-image for hurtig opstart.
Målet med udviklingen nævnes at være at opnå fuld kompatibilitet med PostgreSQL 18.3, samt at udføre eksperimenter med at ændre den interne struktur og skabe en version af PostgreSQL, der er fri for de arkitektoniske begrænsninger, som ikke kan overvindes af historiske årsager. Projektet bestået en række på mere end 46.000 regressions tests for PostgreSQL, men er endnu ikke kompatibelt med PostgreSQL-udvidelser, giver ikke de ønskede ydeevneoptimeringer og implementerer ikke fuldt ud de procedurale sprog PL/Python, PL/Perl og PL/Tcl.
Fremtidsplaner:
- Overgang til en multitrådet intern arkitektur.
- Implementering af forbindelsespooling.
- Optimering til arbejdsprocesser, der aktivt bruger JSON.
- Mulighed for at skabe kopier og grene af databaseelementer i Copy-on-Write-tilstand uden at kopiere data.
- Eksperimenter med en arkitektur, der ikke kræver udførelse af VACUUM-operationen.
- Et system til SQL-forespørgselsbegrænsninger, der gør det muligt at blokere overforbrug af ressourcer ved udførelse af dårligt udførte forespørgsler.
- Beskyttelse mod skift af optimeringsstrategi til mindre effektive udførelsesplaner.
Ifølge projektets forfatter er der i øjeblikket arbejde i gang med den næste version af pgrust, hvor der i stedet for en pool af arbejdsprocesser er implementeret en multitrådet model til behandling af forbindelser, samt udført yderligere optimeringer, såsom batchbehandling af rækker i tabeller og forudindlæsning af data. Ved test med percona-tpcc-værktøjer under behandlingen af transaktioner viste den nye version af pgrust sig at være 50% hurtigere end standard PostgreSQL, mens den ved behandling af analytiske forespørgsler var 300 gange hurtigere.
Ved oversættelse til Rust blev der anvendt en hybrid tilgang, hvor PostgreSQL-koden først blev behandlet ved hjælp af oversætteren c2rust, som genererer en unsafe-repræsentation af Rust, tæt på strukturen af den oprindelige C-kode. Efter behandlingen i c2rust blev der oprettet omkring 1000 crate-pakker, som blev oversat til idiomatisk Rust ved hjælp af AI-modellen Claude og værktøjet Conductor til fordeling af opgaver blandt samtidig kørende subagenter.
Kilde: opennet.ru
