Представлен проект rars — свободная реализация архиватора RAR на языке Rust с поддержкой распаковки и создания архивов
Состоялся выпуск проекта под названием rars. Это свободная реализация архиватора RAR на языке Rust с поддержкой не только распаковки, но и создания RAR-архивов. Проект поддерживает как ранние форматы RAR 1.3/1.4 с сигнатурой "RE~^", так и последнюю версию RAR 7. Исходный код решения опубликован под лицензиями MIT и Apache-2.0.
В рамках rars доступны такие расширенные операции: разбиение на тома, защита паролем, шифрование заголовков, прикрепление комментариев, RARVM-фильтры, индексы для быстрого открытия и механизмы восстановления повреждённых данных.
По информации OpenNET, на базе библиотеки PyO3 подготовлены обвязки для языка Python, которые реализуют API в стиле rarfile для просмотра, тестирования и извлечения архивов, а также API в стиле RarBuilder для создания или перепаковки архивов.
Особенность проекта в том, что он реализует работу с форматом RAR без использования кода утилиты unrar, распространяемой под несвободной лицензией, которая запрещает использовать код unrar для воссоздания алгоритма сжатия RAR или разработки RAR‑совместимого архиватора. Из‑за данного ограничения большинство свободных архиваторов ограничивались лишь функциями распаковки RAR‑файлов, а для создания RAR‑архивов приходилось использовать проприетарный инструментарий от RARLAB.
Отдельно создан репозиторий rar‑research, в котором опубликованы спецификации для форматов RAR 1.3/1.4, RAR 1.5–4.x и RAR 5.0/7.0, а также заметки по используемым алгоритмам, фильтрам, методам проверки и восстановления целостности, шифрованию, разбиению на тома и механизмам защиты. Так как на момент создания проекта rars официальной полноценной спецификации не существовало, документация была воссоздана по коду распаковщиков, старым реализациям, тестовым архивам и
Читать на habr.com