- BrainTools - https://www.braintools.ru -

Состоялся [1] выпуск проекта под названием rars [2]. Это свободная реализация архиватора RAR на языке Rust с поддержкой не только распаковку, но и создания RAR-архивов. Проект поддерживает как ранние форматы RAR 1.3/1.4 с сигнатурой “RE~^”, так и последнюю версию RAR 7 [3]. Исходный код решения опубликован [4] под лицензиями MIT и Apache-2.0.

В рамках rars доступны такие расширенные операции: разбиение на тома, защита паролем, шифрование заголовков, прикрепление комментариев, RARVM-фильтры, индексы для быстрого открытия и механизмы восстановления повреждённых данных.
По информации [5] OpenNET, на базе библиотеки PyO3 [6] подготовлены обвязки для языка Python, которые реализуют API в стиле rarfile для просмотра, тестирования и извлечения архивов, а также API в стиле RarBuilder для создания или перепаковки архивов.
Особенность проекта в том, что он реализует работу с форматом RAR без использования кода утилиты unrar [7], распространяемой под несвободной лицензией, которая запрещает использовать код unrar для воссоздания алгоритма сжатия RAR или разработки RAR‑совместимого архиватора. Из‑за данного ограничения большинство свободных архиваторов ограничивались лишь функциями распаковки RAR‑файлов, а для создания RAR‑архивов приходилось использовать проприетарный инструментарий [8] от RARLAB.

Отдельно создан репозиторий rar‑research [9] в котором опубликованы спецификации для форматов RAR 1.3/1.4, RAR 1.5–4.x и RAR 5.0/7.0, а также заметки по используемым алгоритмам, фильтрам, методам проверки и восстановления целостности, шифрованию, разбиению на тома и механизмам защиты. Так как на момент создания проекта rars официальной полноценной спецификации не существовало, документация была воссоздана по коду распаковщиков, старым реализациям, тестовым архивам и анализу бинарных версий RAR для DOS и Windows.
Реализация rars была создана с использованием ИИ‑инструментов OpenAI Codex 5.5 и Claude Opus 4.7 в свободное от работы время примерно за пять недель. На первом этапе модели применялись для систематизации информации о формате и восполнения пробелов в описании, после чего по восстановленной спецификации был сгенерирован код на языке Rust. Для уточнения спецификации и оттачивания реализации использовалась проверка работы на реальных архивах и сравнение с эталонными реализациями.
Отмечается, что ИИ‑инструменты хорошо справились с переносом формального описания в код и с рутинной реализацией большого объёма функциональности, но не смогли обеспечить архитектурный контроль. Без жёсткого надзора ИИ‑модели были склонны обходить тесты, усложнять код и пропускать очевидные проблемы, влияющие на удобство работы. По оценке автора, в проекте такого масштаба тесты, документация и комментарии стали не только инструментами проверки, но и способом направлять генерацию кода в нужное русло.
Форсировать разработку rars удалось после появления в OpenAI Codex режима «/goal», позволяющего ИИ‑агенту длительное время работать над одной задачей, сжимая контекст и продолжая выполнение после его переполнения. В таком режиме Codex несколько раз работал больше чем 6 часов и один раз около 16 часов, реализуя значительную часть оставшейся функциональности, такой как восстановление данных, шифрование и многотомные архивы. С учётом значительной субсидии на токены было потрачено 40 фунтов стерлингов.
По уровню сжатия rars в среднем на 5–10% отстаёт от WinRAR. По скорости сжатия и распаковки rars существенно медленнее WinRAR из‑за отсутствия полноценных оптимизаций. При этом в проекте уже имеется режим «‑features fast», применяющий оптимизации на основе SIMD‑инструкций для ускорения сжатия и распаковки, но завязанный на экспериментальный API std::simd, доступных только в тестовых сборках инструментария Rust. Также в rars реализован режим «‑features parallel», использующий библиотеку Rayon [10] для распараллеливания сжатия отдельных файлов.

Создатель RAR Евгений Рошаль прокомментировал [11] использование обратного инжинирига старых бинарных файлов RAR при разработке rars, что запрещено лицензионным соглашением. По словам Рошаля, он пока не определился, что с этим делать и намерен дождаться мнения компании win.rar GmbH.

Автор: denis-19
Источник [12]
Сайт-источник BrainTools: https://www.braintools.ru
Путь до страницы источника: https://www.braintools.ru/article/32274
URLs in this post:
[1] Состоялся: https://bitplane.net/log/2026/05/rars/
[2] rars: https://bitplane.net/dev/rust/rars/
[3] RAR 7: https://habr.com/ru/news/1029878/
[4] опубликован: https://github.com/bitplane/rars
[5] информации: https://www.opennet.ru/opennews/art.shtml?num=65765
[6] PyO3: https://github.com/pyo3/pyo3
[7] unrar: https://github.com/debian-calibre/unrar-nonfree
[8] проприетарный инструментарий: https://www.rarlab.com/download.htm
[9] rar‑research: https://github.com/bitplane/rar-research
[10] Rayon: https://github.com/rayon-rs/rayon
[11] прокомментировал: https://forum.ru-board.com/topic.cgi?forum=5&topic=51775&start=80#11
[12] Источник: https://habr.com/ru/news/1052026/?utm_source=habrahabr&utm_medium=rss&utm_campaign=1052026
Нажмите здесь для печати.