LINUX.ORG.RU

Избранные сообщения James_Holden

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

 , , , ,

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
()

ОС «Быть». Наши дни

 

Haiku OS, установлена на ноутбук, использую для работы (хотя пока это громко сказано) каждый день.

На скриншоте, в порядке следования:

  • ЛОР, виртуалка с FreeBSD 14, информация о системе https://0x0.st/HHVm.png

  • Сторонние приложения, результат недавних достижений по портированию. GIMP через wayland прослойку, FEMM и WinRAR через Wine. https://0x0.st/HHVB.png

  • Пустой рабочий стол https://0x0.st/HHVM.png

  • Системное меню, системный ФМ, терминал. https://0x0.st/HHVu.png

Бонус скриншоты:

Из интересных моментов.

На скриншоте рабочего стола - видны репликанты (как виджеты в плазме, но работает это несколько иначе).

Окно с виртуалкой QEMU - в его заголовок присоединены (stacked, не знаю, как по-русски сказать) другие окна QEMU и терминал, переключаются как вкладки. Это киллер фича Haiku, как вы знаете.

Аппаратной виртуализации нет, поэтому QEMU работает в TCG-режиме. Но работает.

В Wine работают только чистые 64 бит приложения, и это огромная проблема, потому что винду…дисты до сих пор на 2023 год плещут 32 битные бинари в перемешку с 64 битными. Во имя Ктулху видимо.

Система установки и обновления приложений тоже оставляет самые положительные впечатления. При обновлении, установке, удалении чего-либо - создается «снапшот» системы и в загрузчике можно выбрать его, если что-то пошло не так. Причем как он создается! Без всех этих ваших линукс/FreeBSD чудес с вундер файловыми системами. Это работает просто на папках.

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

Хотя баги, конечно, есть, например драйвер сети иногда валит ядро при загрузке системы. Но в целом, то, что называется в линуксе DE, - работает чётко. (Привет, плазма).

James_Holden
()

Помогите выбрать ноут

 ,

Не умею искать ноуты в инете. Интересуют маленькие тонкие ноуты чисто для кодинга и браузера в дороге или в кровати.

Главные требования:

  1. Чтобы работал Arch Linux
  2. Диагональ не более 13.3
  3. 16 гигов RAM
  4. 10 часов работы в режиме ютуба/vim
  5. Не из говна и палок
  6. Наличие Type-A и Type-C

Бюджет около 100к деревянных

hetake2
()