O projeto rars preparou uma implementação livre do RAR com suporte para a criação de arquivos compactados

O projeto rars foi apresentado, desenvolvendo uma implementação livre de ferramentas para o formato RAR, escrita na linguagem Rust e suportando não apenas a extração, mas também a criação de arquivos RAR. A ferramenta suporta formatos RAR 1.3/1.4 com a assinatura "RE~^" e a última versão RAR 7. Operações avançadas estão disponíveis, como divisão em volumes, proteção por senha, criptografia de cabeçalhos, anexação de comentários, filtros RARVM, índices para abertura rápida e mecanismos de recuperação de dados corrompidos. O código é distribuído sob as licenças MIT e Apache-2.0. Com base na biblioteca PyO3, foram preparadas wrappers para a linguagem Python, que implementam uma API estilo rarfile para visualização, teste e extração de arquivos, bem como uma API estilo RarBuilder para a criação ou reapacotamento de arquivos.

A característica do projeto é que ele implementa o trabalho com o formato RAR sem usar o código da ferramenta unrar, que é distribuída sob uma licença não livre que proíbe o uso do código unrar para recriar o algoritmo de compressão RAR ou desenvolver um arquivador compatível com RAR. Devido a essa restrição, a maioria dos arquivadores livres limitou-se apenas às funções de extração de arquivos RAR, e para criar arquivos RAR, foi necessário usar ferramentas proprietárias da RARLAB.

Um repositório separado chamado rar-research foi criado, onde estão publicadas especificações para os formatos RAR 1.3/1.4, RAR 1.5-4.x e RAR 5.0/7.0, além de notas sobre os algoritmos usados, filtros, métodos de verificação e recuperação de integridade, criptografia, divisão em volumes e mecanismos de proteção. Como, no momento da criação do projeto rars, não existia uma documentação técnica oficial completa, a documentação foi reconstruída com base no código dos descompactadores, implementações antigas, arquivos de teste e análise das versões binárias do RAR para DOS e Windows.

A implementação foi criada utilizando ferramentas de IA como OpenAI Codex 5.5 e Claude Opus 4.7 no tempo livre, levando cerca de cinco semanas. Na primeira fase, os modelos foram utilizados para sistematizar informações sobre o formato e preencher lacunas na descrição, após o que, com a especificação reconstruída, foi gerado o código na linguagem Rust. Para aprimorar a especificação e refinar a implementação, o funcionamento em arquivos reais foi testado e comparado com implementações padrão.

Observou-se que as ferramentas de IA lidaram bem com a transferência de descrições formais para código e com a implementação rotineira de uma grande quantidade de funcionalidades, mas não conseguiram garantir o controle arquitetônico. Sem supervisão rigorosa, os modelos de IA tendiam a contornar os testes, complicar o código e deixar passar problemas óbvios que afetavam a usabilidade. Na avaliação do autor, em um projeto dessa magnitude, os testes, a documentação e os comentários se tornaram não apenas ferramentas de verificação, mas também um meio de direcionar a geração de código na direção correta.

A aceleração do desenvolvimento foi possível após a introdução do modo "\/goal" no OpenAI Codex, permitindo que o agente de IA trabalhasse por longos períodos em uma única tarefa, compactando o contexto e continuando a execução após o esgotamento. Nesse modo, o Codex trabalhou várias vezes por mais de 6 horas e uma vez por cerca de 16 horas, implementando uma parte significativa das funcionalidades restantes, como recuperação de dados, criptografia e arquivos em múltiplos volumes. Com uma considerável subsídio para tokens, foram gastos 40 libras esterlinas.

Em termos de compressão, rars, em média, fica 5-10% atrás do WinRAR. Em velocidade de compressão e descompressão, rars é significativamente mais lento que o WinRAR devido à falta de otimizações completas. No entanto, o projeto já possui um modo "--features fast", que aplica otimizações baseadas em instruções SIMD para acelerar a compressão e descompressão, mas vinculado a uma API experimental std::simd, disponível apenas em compilações de teste da ferramenta Rust. Também foi implementado um modo "--features parallel", que utiliza a biblioteca Rayon para paralelização da compressão de arquivos individuais.

Evgeny Roshal, criador do RAR, comentou sobre o uso de engenharia reversa de arquivos binários antigos do RAR durante o desenvolvimento do rars, o que é proibido pelo acordo de licença. Segundo Evgeny, ele ainda não decidiu o que fazer a respeito e pretende esperar a opinião da empresa win.rar GmbH.

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster