Prosjektet pgrust er publisert med implementering av PostgreSQL DBMS, omskrevet i Rust ved hjelp av c2rust-kompilator og AI-assistent. Det er rapportert at prosjektet fortsatt ikke er klart for bruk i produksjonsprosjekter, men gjennomgår allerede alle regresjonstester for PostgreSQL vellykket, er kompatibelt med datastrukturer fra PostgreSQL 18.3 og kan bruke datakatalog fra PostgreSQL 18.3. Koden til prosjektet distribueres under AGPLv3-lisensen, i motsetning til original PostgreSQL, som leveres under den permissive PostgreSQL-lisensen, som er nær BSD- og MIT-lisensene. En online-demonstrasjon av funksjonaliteten er tilgjengelig, basert på en WebAssembly-compile, samt et docker-image for rask oppstart.
Målet med utviklingen nevnes å oppnå full kompatibilitet med PostgreSQL 18.3, samt å utføre eksperimenter med endringer i den interne strukturen og skape en versjon av PostgreSQL fri for arkitektoniske begrensninger som ikke kan unngås av historiske grunner. Prosjektet består av en vellykket kjøring av mer enn 46 000 regresjonstester for PostgreSQL, men er fortsatt inkompatibelt med tillegg til PostgreSQL, gir ikke ønskede ytelsesforbedringer og implementerer ikke fullt ut de prosedyremessige språkene PL/Python, PL/Perl og PL/Tcl.
Fremtidsplaner:
- Overgang til en flertrådt intern arkitektur.
- Implementering av tilkoblingspools.
- Optimalisering for arbeidsprosesser som aktivt benytter JSON.
- Mulighet for å lage kopier og avgresninger av DB-elementer i Copy-on-Write-modus uten datakopiering.
- Eksperimenter med arkitektur som ikke krever kjøring av VACUUM-operasjonen.
- System for restriksjoner på SQL-spørringer som tillater blokkering av overdreven ressursbruk ved usaklige spørringer.
- Beskyttelse mot optimalisatorbytter til mindre effektive forespørselplaner.
Ifølge prosjektforfatteren jobbes det for tiden med neste versjon av pgrust, som implementerer en flertrådet tilnærming til tilkoblingsprosessering i stedet for en prosesspool, samt ekstra optimaliseringer som batchbehandling av rader i tabeller og forutseende datainnhenting. Under testing med percona-tpcc-verktøyet viste den nye versjonen av pgrust seg å være 50 % raskere enn standard PostgreSQL ved behandling av transaksjoner, og 300 ganger raskere ved behandling av analytiske forespørsel.
Ved oversettelsen til Rust ble en hybrid tilnærming brukt, hvor PostgreSQL-koden først ble behandlet ved hjelp av oversetteren c2rust, som genererte en unsafe-representasjon av Rust som lignet på den opprinnelige C-koden i strukturen. Etter behandlingen i c2rust ble det laget omtrent 1000 crate-pakker som parallelt ble oversatt til idiomatisk Rust ved hjelp av AI-modellen Claude og verktøysettet Conductor for å fordele oppgavene mellom samtidig kjørende subagenter.
Kilde: opennet.ru
