È stato pubblicato il progetto pgrust, con l'implementazione del database PostgreSQL riscritto nel linguaggio Rust utilizzando il traduttore c2rust e un assistente AI. Si afferma che il progetto non sia ancora pronto per l'uso in progetti di lavoro, ma sta già superando con successo tutti i test di regressione di PostgreSQL, è compatibile con il formato di archiviazione dei dati di PostgreSQL 18.3 e può utilizzare il catalogo dei dati di PostgreSQL 18.3. Il codice del progetto è distribuito sotto la licenza AGPLv3, a differenza dell'originale PostgreSQL, fornito sotto licenza permissiva PostgreSQL, simile alle licenze BSD e MIT. È disponibile una dimostrazione online delle funzionalità, basata su una build in WebAssembly, così come un'immagine Docker per un avvio rapido.
Come obiettivo dello sviluppo si menziona il raggiungimento della compatibilità totale con PostgreSQL 18.3, nonché la conduzione di esperimenti per modificare la struttura interna e creare una versione di PostgreSQL scevra delle limitazioni architettoniche che non si possono eliminare per ragioni storiche. Il progetto supera con successo un insieme di oltre 46.000 test di regressione di PostgreSQL, ma al momento è incompatibile con le estensioni di PostgreSQL, non fornisce le ottimizzazioni di prestazione desiderate e non implementa completamente i linguaggi procedurali PL/Python, PL/Perl e PL/Tcl.
Piani futuri:
- Traduzione verso un'architettura interna multithreading.
- Implementazione del pooling delle connessioni.
- Ottimizzazione per processi di lavoro che utilizzano attivamente JSON.
- Possibilità di creare copie e ramificazioni degli elementi del database in modalità Copy-on-Write senza copiare dati.
- Esperimenti con un'architettura che non richiede l'esecuzione dell'operazione VACUUM.
- Sistema di restrizioni delle query SQL, che consente di bloccare un consumo eccessivo delle risorse durante l'esecuzione di query di bassa qualità.
- Protezione contro il cambio dell'ottimizzatore verso piani di esecuzione meno efficienti.
Secondo l'autore del progetto, al momento è in fase di sviluppo la prossima versione di pgrust, in cui invece di un pool di processi di lavoro è stata implementata un modello di elaborazione delle connessioni multithreading, con ulteriori ottimizzazioni in atto, come l'elaborazione batch delle righe nelle tabelle e il caricamento anticipato dei dati. Durante il collaudo con lo strumento percona-tpcc, per la gestione delle transazioni la nuova versione di pgrust si è rivelata più veloce del normale PostgreSQL del 50%, mentre nella gestione delle query analitiche, ha superato di 300 volte.
Nella traduzione in Rust è stato utilizzato un approccio ibrido, in cui il codice PostgreSQL è stato inizialmente elaborato con l'aiuto del traduttore c2rust, che genera una rappresentazione unsafe in Rust, simile nella sua struttura al codice originale in C. Dopo l'elaborazione in c2rust, sono stati creati circa 1000 pacchetti crate, che sono stati contemporaneamente tradotti in Rust idiomatico con l'aiuto del modello AI Claude e dello strumento Conductor per la distribuzione dei compiti tra i subagenti eseguiti in parallelo.
Fonte: opennet.ru
