LINUX.ORG.RU

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

 , , , ,


1

3

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)
Ответ на: комментарий от a1ba

Ну, bat же покупают. IMHO удобно - на небольшую фирму купить winrar, bat - и работать.

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

при обороте денег даже в небольшой фирме, разовая трата в десяток-другой тыщ - фигня.

pfg ★★★★★
()

Интересно как правовой прецедент.

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

Необходимо помнить, что лицензионное соглашение ничтожно в части, противоречащей закону.

В России сейчас статьей 1280 ГК РФ предусмотрен ограниченный перечень случаев, в которых разрешается использование информации, полученной в результате декомпилирования. А использование такой информации для разработки программы, по своему виду существенно схожей с декомпилируемой программой, прямо запрещено.

Вместе с тем, той же статьей предусмотрено право лица, законно владеющего экземпляром программы, без согласия правообладателя изучать, исследовать или испытывать функционирование такой программы в целях определения идей и принципов, лежащих в основе любого элемента программы для ЭВМ, но только путем осуществления действий, необходимых для функционирования программы, включая запись и хранение в памяти ЭВМ (одной ЭВМ или одного пользователя сети).

Насколько я понимаю, сейчас на территории России действия автора rars были бы незаконными, т.к. он исследовал не процесс исполнения программы на компьютере, а сам объектный код.

В России есть законопроект по регулированию ИИ, в котором уже прямо закреплено право на изготовление наборов данных для ИИ путем извлечения информации из объектов, защищенных авторскими или патентными (ч. 5 статьи 13):

Не является нарушением авторских и (или) патентных прав их правообладателей извлечение информации из объектов, защищенных авторскими или патентными правами, включающее в том числе в рамках компьютерной обработки извлечение, сравнение, классификацию и анализ закономерностей, тенденций и корреляций, содержащихся в этих объектах, для изготовления набора данных и (или) обучения искусственного интеллекта при условии, что изготовителем набора данных или разработчиком был получен правомерный экземпляр такого произведения, либо этот объект был доведен до всеобщего сведения и (или) доступен для анализа.

Про декомпиляцию отдельно в законопроекте ничего не сказано. Поэтому если его примут в неизменном виде, то действия автора rarr будут легализованы (при условии что он не декомпилировал объектный код до его скармливания ИИ).

Если брать США, то там в законодательстве (Section 107 of the Copyright Act of 1976) есть понятие справедливого использования (fair use). Судебная практика в общем складывается так, что под него попадает, в частности, data mining, в том числе с целью изготовления наборов данных и (или) обучения ИИ. Но в случае с rars есть нюанс: одним из предусмотренных законом критериев справедливого использования является «эффект от такого использования на потенциальный рынок или ценность охраняемого авторским правом произведения». В случае с RAR речь идет о полном функциональном клоне конкретной коммерческой программы, и о подобных судебных делах я пока не слышал.

Тут еще подумалось, что переписывание программы на другом языке программирования при помощи ИИ – это самый надежный способ избежать обвинений в плагиате, т.к. тут уж точно ИИ не нагенерирует больших кусков кода, неотличимых от оригинала.

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

Кому нужен rar

А кому и зачем он вообще нужен? Ну кроме как для распаковки старых архивов. Место на дисках нынче дешевое, воевать за какие-то единицы процентов сжатия нет особого смысла. А так и у zip сжатие достаточное. И самое главное - он есть везде и под всё.

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

Может у него все фотографии в BMP хранятся. А так я уже давно архиватором пользуюсь по функционалу tar'а: передать один файл вместо 100000.

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

А вы уверены что архиватор поможет вам сэкономить денег на покупке hdd? Это ведь во-первых надо чтобы диск был забит именно хорошо сжимаемыми данными, а во-вторых данных должно быть настолько много чтобы разница в десяток процентов сжатия между разными употребительными сейчас архиваторами превратилась в десятки гигабайтов сэкономленного места. Вы же наверно не pkzip.exe образца начала 90х годов свои файлы пакуете - вот он да, сжимал плохо (зато быстро на 8086)

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

7z тот же

В отличие от обычного zip - далеко не везде есть.

watchcat382 ★★
()

Очередной пример того, как ИИ помогает быстро и успешно реализовать какую-то возмутительно ненужную херню.

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

Всего лишь HDD на 5 терабайтов

А чем их можно вообще забить? Причем таким чтобы к нему имело смысл применение сжатия архиватором? Обычно-то мультимедией всякой захламляют, а она и так уже сжатая, архиватор не поможет сэкономить.

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

Если «херня» не нужна лично вам или мне - это не значит что она не нужна тем кто ее реализовал. В конце концов люди нередко делают всякие штуки просто потому что могут и just for fun.

watchcat382 ★★
()

Архиватор использую для

  • Помещения в архивы редко используемых файлов (сканы книг (в основном по программированию) которые я, может быть, когда–нибудь потом прочитаю, инсталяшки программы). Здесь архивация скорее не экономии места ради а больше как признак а ешё так удобнее перемещать и копировать файлы.
  • Есть копии парочки сайтов в виде огромной кучи HTML–фйлов помещённых в RAR. Экономия места и удобство.
  • Сохранённые мной HTML–страницы которые я когда–нибудь потом разберу. Экономия места и удобство.
  • Исходники программ. Экономия места и удобство.

RAR и WinRAR потому что много всяких функций (в частности восстановление повреждённых архивов), GUI нормальный. На платность и лицензии плевать с высокой колокольни. Ещё пользуюсь давно заброшенным ACE. Может кому понрааится.

wenxuan
()

А к этому rars отношусь строго отрицательно. Удолить!

wenxuan
()

запрещает использовать код unrar для воссоздания алгоритма сжатия RAR или разработки RAR-совместимого архиватора

документация была воссоздана по коду распаковщиков

переносом формального описания в код и с рутинной реализацией большого объёма функциональности

Сделайте один шаг логического вывода из трёх предпосылок

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

Я часть файлов жать не хочу, а часть хочу. Как быть то? То что в линуксах с архиваторами беда (7zip - лучший, но он не умеет в сохранение прав, групп и владельцев, его автор классный дедушка из МГУ, который занимается математикой и интересуется теорией сжатия данных, т.е. его волнует алгоритм lzma2 и его тюнинг, а не удобство архиваторов для промышленного применения) это беда linix-ов. tar - костыль, т.к. связка tar+compressor не могут в NON-SOLID архивы. Про то что есть ещё и par2 (меньший костыль кстати, чем tar, но тоже костыль) вообще никто не знает без гугла. Другое дело что и RAR нам не шибко поможет - RAR всё это учитывает, но заточен под оффтопик. А под онтопик просто никто ничего приличного не сделал, но поскольку жить без этого всего можно, то мы и живём. Денег на архиваторе для Linux-а не заработать, хотя он и нужен.

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

Дай денег и всё.

Не очень понимаю логику - какое отношение архиватор имеет к деньгам в условиях когда наиболее толстые файлы (мультимедиа всякая) сжатию почти не подаются.

Есть ещё сжатие в самой файловой системе.

Оно в некоторых случаях бывает полезно, но не с точки зрения экономии на размере диска, а с точки зрения увеличения скорости доступа если дисковый интерфейс является бутылочным горлышком, а данные опять же хорошо сжимаются. Случай не частый, но возможный.

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

Я часть файлов жать не хочу, а часть хочу. Как быть то?

Вроде в каких-то из файловых систем с поддержкой сжатия можно расставлять атрибуты что сжимать, а что нет. Я не пробовал так как вероятность повреждения данных в таких системах намного выше чем в тех что без сжатия.

не умеет в сохранение прав, групп и владельцев,

В разных ОС и даже в разных файловых системах в пределах линукса набор атрибутов файлов будет разным и поэтому сделать архиватор универсальным не получится.

связка tar+compressor не могут в NON-SOLID архивы

Пакуйте файлы в tar по одному, получите много маленьких tar`ов, потом сожмите их всех вместе обычным zip. Получите и сохранение атрибутов и non-solid архив. Для удобства такой упаковки, если вдруг она действительно нужна, можно написать не сложный скрипт.

А под онтопик просто никто ничего приличного не сделал, но поскольку жить без этого всего можно, то мы и живём.

Согласен что есть еще куда совершенствоваться, причем именно в сторону сервисных удобств, а не повышения сжатия (дальше-то особо некуда).

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

это не значит что она не нужна тем кто ее реализовал

Вот пусть они и называют ее нужной, херню эту.

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

у меня наиболее толстые файлы это csv и они сжимаются на раз два

Да, они хорошо сжимаются, но думаю вы согласитесь что ваш случай с обилием больших csv-файлов далеко не самый массовый. И возможно как раз в вашем случае будет полезна файловая система с поддержкой сжатия - чтобы уменишить объем данных,прокачиваемый через дисковый интерфейс и тем самым поднять скорость доступа.

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

для линухи лучший вариант сериализатор+сжиматель это squashfs :) как ни странно. неидеально, но однакожъ полная поддержка всех линуховых метаданных файла.
костыль тар лучше не вспоминать…..

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

squashfs

А как по сети гонять? Ну и мне, например, надо через самбу файлы с оффтопика в линукс и обратно пересылать. Понятно что можно в самой самбе сжатие на диске организовать. Можно и на канальном уровне сжатие устроить, как веб сервера странички жмут перед отправкой, но это всё тоже костыли и частные решения, к тому же не очень гибкие (что-то я хочу жать, а что-то не хочу, т.к. оно должно быстро читаться).

peregrine ★★★★★
()
Последнее исправление: peregrine (всего исправлений: 2)
Ответ на: комментарий от peregrine

а зачем тебе на оффтопике полная поддержка всех видов фалов и метаданных линукс ??
длятого чтобы «тупые» файлики жать и простого севензипа за глаза хватит…

ну а гонять файлики по сети прощее всего через спец.демон типа resilio/syncthing там и защита и сжатие и всё подобное.

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

А потому что я туда бекапы лью и с оффтопика и с онтопика и с мобилок.

Вообще с бекапами беда если честно. Корпоративные решения внутри однородной среды как-то работают, но ничего универсального толком как не было, так и нет, особенно для домашнего юзера. Потому и живёт tar.gz. И именно по этой причине всякие облака расцвели. А я не верю в облака. Сегодня оно есть, а завтра у меня инет улетел. А даже в рамках одной квартиры файлы дублировать есть смысл.

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