El proyecto rars ha preparado una implementación libre de RAR con soporte para la creación de archivos comprimidos.

Se presenta el proyecto rars, que desarrolla una implementación libre de herramientas para el formato RAR, escrita en Rust y que soporta no solo la extracción, sino también la creación de archivos RAR. La herramienta es compatible con los formatos RAR 1.3/1.4 con la firma «RE~^», así como con la última versión RAR 7. Se ofrecen operaciones ampliadas como la división en volúmenes, protección por contraseña, cifrado de encabezados, inclusión de comentarios, filtros RARVM, índices para una apertura rápida y mecanismos de recuperación de datos dañados. El código se distribuye bajo las licencias MIT y Apache-2.0. Basado en la biblioteca PyO3, se han preparado enlaces para el lenguaje Python, que implementan una API al estilo de rarfile para la visualización, prueba y extracción de archivos, así como una API al estilo de RarBuilder para la creación o recompresión de archivos.

Una característica del proyecto es que implementa el manejo del formato RAR sin utilizar el código de la utilidad unrar, que se distribuye bajo una licencia no libre, la cual prohíbe el uso del código unrar para recrear el algoritmo de compresión RAR o desarrollar un compresor compatible con RAR. Debido a esta restricción, la mayoría de los compresores libres se limitaron a las funciones de extracción de archivos RAR, y para crear archivos RAR era necesario utilizar herramientas propietarias de RARLAB.

Se ha creado un repositorio separado llamado rar-research, en el cual se publican especificaciones para los formatos RAR 1.3/1.4, RAR 1.5-4.x y RAR 5.0/7.0, así como notas sobre los algoritmos utilizados, filtros, métodos de verificación y recuperación de integridad, cifrado, división en volúmenes y mecanismos de protección. Dado que en el momento de la creación del proyecto rars no existía una especificación oficial completa, la documentación se recreó a partir del código de los extractores, implementaciones antiguas, archivos de prueba y análisis de versiones binarias de RAR para DOS y Windows.

La implementación fue creada utilizando herramientas de IA OpenAI Codex 5.5 y Claude Opus 4.7 en tiempo libre aproximadamente en cinco semanas. En la primera etapa, se aplicaron los modelos para sistematizar la información sobre el formato y llenar los vacíos en la descripción, después de lo cual se generó código en Rust según la especificación restaurada. Para aclarar la especificación y perfeccionar la implementación, se utilizó la verificación sobre archivos reales y la comparación con implementaciones de referencia.

Se señala que las herramientas de IA lograron bien traducir la descripción formal en código y llevar a cabo una implementación rutinaria de un gran volumen de funcionalidad, pero no pudieron proporcionar control arquitectónico. Sin una supervisión estricta, los modelos de IA tendían a eludir pruebas, complicar el código y pasar por alto problemas evidentes que afectaban la usabilidad. Según la evaluación del autor, en un proyecto de tal magnitud, las pruebas, documentación y comentarios se convirtieron no solo en herramientas de verificación, sino también en una forma de guiar la generación de código en la dirección correcta.

Se logró acelerar el desarrollo tras la aparición del modo «/goal» en OpenAI Codex, que permite al agente de IA trabajar durante un tiempo prolongado en una sola tarea, comprimiendo el contexto y continuando la ejecución después de su desbordamiento. En este modo, Codex trabajó varias veces más de 6 horas y una vez cerca de 16 horas, implementando una parte significativa de la funcionalidad restante, como recuperación de datos, cifrado y archivos de varios volúmenes. Con una considerable subvención para tokens, se gastaron 40 libras esterlinas.

En términos de compresión, RAR en promedio es un 5-10% inferior a WinRAR. En velocidad de compresión y descompresión, RAR es significativamente más lento que WinRAR debido a la falta de optimizaciones completas. Sin embargo, el proyecto ya cuenta con el modo «—features fast», que aplica optimizaciones basadas en instrucciones SIMD para acelerar la compresión y descompresión, pero está vinculado a la API experimental std::simd, disponible solo en versiones de prueba del conjunto de herramientas de Rust. También se ha implementado el modo «—features parallel», que utiliza la biblioteca Rayon para paralelizar la compresión de archivos individuales.

Evgeny Roshal, creador de RAR, comentó sobre el uso de ingeniería inversa de antiguos archivos binarios de RAR en el desarrollo de rars, lo que está prohibido por el acuerdo de licencia. Según Evgeny, aún no ha decidido qué hacer al respecto y espera la opinión de la empresa win.rar GmbH.

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster