O projeto pgrust foi publicado, implementando o SGBD PostgreSQL reescrito na linguagem Rust, utilizando o tradutor c2rust e um assistente de IA. É declarado que o projeto ainda não está pronto para uso em projetos de produção, mas já passa com sucesso em todos os testes de regressão do PostgreSQL, é compatível com o formato de armazenamento de dados do PostgreSQL 18.3 e pode usar o catálogo de dados do PostgreSQL 18.3. O código do projeto é distribuído sob a licença AGPLv3, ao contrário do original PostgreSQL, que é fornecido sob uma licença permissiva semelhante às licenças BSD e MIT. Uma demonstração online das funcionalidades, baseada em uma compilação em WebAssembly, bem como uma imagem docker para um rápido início, estão disponíveis.
O objetivo do desenvolvimento mencionado é alcançar total compatibilidade com o PostgreSQL 18.3, além de realizar experimentos para alterar a arquitetura interna e criar uma versão do PostgreSQL que se livre de limitações arquitetônicas impossíveis de evitar por razões históricas. O projeto passa com sucesso em um conjunto de mais de 46 mil testes de regressão do PostgreSQL, mas ainda é incompatível com extensões do PostgreSQL, não fornece as otimizações de desempenho desejadas e não implementa completamente os idiomas de programação PL/Python, PL/Perl e PL/Tcl.
Planos para o futuro:
- Migração para uma arquitetura interna multithread.
- Implementação de pooling de conexões.
- Otimização para processos de trabalho que utilizam intensivamente JSON.
- Capacidade de criar cópias e ramificações de elementos do banco de dados no modo Copy-on-Write sem cópia de dados.
- Experimentos com uma arquitetura que não requer a execução da operação VACUUM.
- Sistema de restrições de consultas SQL que permite bloquear o consumo excessivo de recursos ao executar consultas de baixa qualidade.
- Proteção contra a mudança do otimizador para planos de execução de consultas menos eficientes.
De acordo com o autor do projeto, atualmente está em desenvolvimento a próxima versão do pgrust, na qual, em vez do pool de processos de trabalho, será implementado um modelo multithread de processamento de conexões e serão implementadas otimizações adicionais, como o processamento em lote de linhas em tabelas e o pré-carregamento de dados. Nos testes com a ferramenta percona-tpcc para processamento de transações, a nova versão do pgrust se mostrou 50% mais rápida que o PostgreSQL padrão, e em processamento de consultas analíticas — 300 vezes mais rápida.
Na tradução para Rust, foi utilizado um approach híbrido, onde o código do PostgreSQL foi inicialmente processado com a ajuda do tradutor c2rust, que gera uma representação unsafe em Rust, semelhante em estrutura ao código original em C. Após o processamento com o c2rust, cerca de 1000 pacotes crate foram criados, que foram simultaneamente traduzidos para um Rust idiomático com a ajuda do modelo de IA Claude e da ferramenta Conductor para distribuir tarefas entre subagentes executados ao mesmo tempo.
Fonte: opennet.ru
