Objavljen je projekt pgrust koji implementira PostgreSQL DBMS, ponovno napisan na jeziku Rust uz pomoć prevoditelja c2rust i AI asistenta. Izvješćeno je da projekt još nije spreman za korištenje u radnim projektima, ali već uspješno prolazi sve regresijske testove PostgreSQL, kompatibilan je s formatom pohrane podataka PostgreSQL 18.3 i može koristiti data-katalog iz PostgreSQL 18.3. Kod projekta se distribuira pod AGPLv3 licencom, za razliku od originalnog PostgreSQL-a koji dolazi pod permisivnom PostgreSQL licencom, sličnom BSD i MIT licencama. Dostupna je online demonstracija mogućnosti, temeljena na gradnji u WebAssembly, kao i docker slika za brzo pokretanje.
Kao cilj razvoja spominje se postizanje potpune kompatibilnosti s PostgreSQL 18.3, kao i provođenje eksperimenata na promjeni unutarnje arhitekture te stvaranju verzije PostgreSQL-a oslobođene arhitektonskih ograničenja koja se ne mogu ukloniti iz povijesnih razloga. Projekt uspješno prolazi više od 46 tisuća regresijskih testova PostgreSQL, ali zasad nije kompatibilan s dodacima za PostgreSQL, ne pruža željene optimizacije performansi i ne implementira potpuno proceduralne jezike PL/Python, PL/Perl i PL/Tcl.
Planovi za budućnost:
- Prevod na više staznu unutarnju arhitekturu.
- Implementacija pooling konekcija.
- Optimizacija za radne procese koji aktivno koriste JSON.
- Mogućnost stvaranja kopija i grana elemenata baze podataka u režimu Copy-on-Write bez kopiranja podataka.
- Eksperimenti s arhitekturom koja ne zahtijeva izvršavanje operacije VACUUM.
- Sustav ograničenja SQL upita koji omogućuje blokiranje prekomjernog korištenja resursa prilikom izvršavanja nekvalitetnih upita.
- Zaštita od prebacivanja optimizatora na manje učinkovite planove izvršavanja upita.
Prema riječima autora projekta, trenutno se radi na sljedećoj verziji pgrust, u kojoj je umjesto pooling radnih procesa implementiran više stazni model obrade konekcija, kao i dodatne optimizacije poput paketnog obrade redaka u tablicama i proaktivnog učitavanja podataka. Tijekom testiranja s alatima percona-tpcc u obradi transakcija nova verzija pgrust bila je brža od standardnog PostgreSQL-a za 50%, a u obradi analitičkih upita – 300 puta.
Pri prevodu na Rust je uporabljen hibridni pristop, pri katerem je bil koda PostgreSQL najprej obdelana s pomočjo prevajalnika c2rust, ki generira unsafe-predstavitev Rust, blizu po svoji strukturi prvotni kodi v C-ju. Po obdelavi v c2rust je bilo ustvarjenih okoli 1000 crate-paketov, ki so bili hkrati prevajani na idiomatski Rust s pomočjo AI-modela Claude in orodja Conductor za razporeditev nalog med hkrati zagnanimi podagenti.
Izvor: opennet.ru
