LINUX.ORG.RU

Проект rars подготовил свободную реализацию RAR с поддержкой создания архивов

 , , , ,


0

2

https://www.opennet.ru/opennews/art.shtml?num=65765:

Представлен проект rars, развивающий свободную реализацию инструментария для формата RAR, написанную на языке Rust и поддерживающую не только распаковку, но и создание RAR-архивов. Инструментарий поддерживает как ранние форматы RAR 1.3/1.4 с сигнатурой RE~^, так и последнюю версию RAR 7. Доступны такие расширенные операции, как разбиение на тома, защита паролем, шифрование заголовков, прикрепление комментариев, RARVM-фильтры, индексы для быстрого открытия и механизмы восстановления повреждённых данных. Код распространяется под лицензиями MIT и Apache-2.0. На базе библиотеки 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 официальной полноценной спецификации не существовало, документация была воссоздана по коду распаковщиков, старым реализациям, тестовым архивам и анализу бинарных версий RAR для DOS и Windows.

Реализация была создана с использованием AI-инструментов OpenAI Codex 5.5 и Claude Opus 4.7 в свободное от работы время примерно за пять недель. На первом этапе модели применялись для систематизации информации о формате и восполнения пробелов в описании, после чего по восстановленной спецификации был сгенерирован код на языке Rust. Для уточнения спецификации и оттачивания реализации использовалась проверка работы на реальных архивах и сравнение с эталонными реализациями.

Отмечается, что AI-инструменты хорошо справились с переносом формального описания в код и с рутинной реализацией большого объёма функциональности, но не смогли обеспечить архитектурный контроль. Без жёсткого надзора AI-модели были склонны обходить тесты, усложнять код и пропускать очевидные проблемы, влияющие на удобство работы. По оценке автора, в проекте такого масштаба тесты, документация и комментарии стали не только инструментами проверки, но и способом направлять генерацию кода в нужное русло.

Форсировать разработку удалось после появления в OpenAI Codex режима /goal, позволяющего AI-агенту длительное время работать над одной задачей, сжимая контекст и продолжая выполнение после его переполнения. В таком режиме Codex несколько раз работал больше чем 6 часов и один раз около 16 часов, реализуя значительную часть оставшейся функциональности, такой как восстановление данных, шифрование и многотомные архивы. С учётом значительной субсидии на токены было потрачено 40 фунтов стерлингов.

По уровню сжатия rars в среднем на 5-10% отстаёт от WinRAR. По скорости сжатия и распаковки rars существенно медленнее WinRAR из-за отсутствия полноценных оптимизаций. При этом в проекте уже имеется режим --features fast, применяющий оптимизации на основе SIMD-инструкций для ускорения сжатия и распаковки, но завязанный на экспериментальный API std::simd, доступных только в тестовых сборках инструментария Rust. Также реализован режим --features parallel, использующий библиотеку Rayon для распараллеливания сжатия отдельных файлов.


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

★★★★★

Последнее исправление: dataman (всего исправлений: 1)
Ответ на: комментарий от Return

Про zip с однойбайтной кодировкой символов в именах жги еще

cobold ★★★★★
()
Ответ на: комментарий от quickquest

Выложить исходники, пока не переписали на C/C++ и не встроили в 7z и libarchive!

dataman ★★★★★
() автор топика

Кстати публикация и коммент на ru-board были более месяца назад.
P.S. почему нет ссылки на оригинал с opennet?

MirandaUser2 ★★
()
Ответ на: комментарий от Return

zip и 7z тут ни при чём. Кому нужен rar пользуются официальным rar, и этот растонейрослоп им нафиг не сдался.

firkax ★★★★★
()

С учётом значительной субсидии на токены было потрачено 40 фунтов стерлингов.

Интересно как он за такие деньги заставил Codex столько пахать, что за субсидия такая.

maxcom ★★★★★
()
Ответ на: комментарий от maxcom

Интересно как он за такие деньги заставил Codex столько пахать

ПРОГРАМИРОВАЙ

mamina_radost
()
Ответ на: комментарий от Return

Из двоих только 7z конкурент rar

А вообще, «не рой другому могилу». Rar может и не захватит мир тарболлов, но и не позволит им войти в определённые ниши. Потому что тарболлы — не чистое элегантное решение, а неоптимальное легаси (фрагментация стандартов, кривое хранение сложных метаданных, нет индекса и произвольного доступа (привет фризам GUI), неустойчивость к повреждениям).

kaldeon ★★
()
Последнее исправление: kaldeon (всего исправлений: 7)

Реализация была создана с использованием AI-инструментов OpenAI Codex 5.5 и Claude Opus 4.7 в свободное от работы время примерно за пять недель. На первом этапе модели применялись для систематизации информации о формате и восполнения пробелов в описании, после чего по восстановленной спецификации был сгенерирован код на языке Rust. Для уточнения спецификации и оттачивания реализации использовалась проверка работы на реальных архивах и сравнение с эталонными реализациями.

Как скоро в этой реализации найдут кучу тупых уязвимостей, которые человек в здравом уме допустить не мог?

mskrasnov
()
Ответ на: комментарий от firkax

раст тут как тут, совсем ему репутацию портят

Неправда. Репутация Rust растёт от таких проектов. На любом другом языке вообще бы ничего у языковых моделей не получилось.

Saakx
()
Ответ на: комментарий от firkax

о_О Я тут подумал, а что если сишку переписать на раст?!

LightDiver ★★★★★
()
Ответ на: комментарий от Saakx

Да вот нихрена, с растом они работают очень хреново как раз. У них хорошо с питоном и js. А концепции раста они понимают очень частично и инфа устаревшая вечно.

Да даже с сишкой лучше. Потому что сишка это тонны кода, у которого отличная обратная совместимость.

LightDiver ★★★★★
()
Последнее исправление: LightDiver (всего исправлений: 1)
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.