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

Представен е проектът 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 моделите имаха склонност да заобикалят тестовете, да усложняват кода и да пропускат очевидни проблеми, които влияят на удобството на работа. Според оценката на автора, в проект от такъв мащаб тестовете, документацията и коментарите се превърнаха не само в инструменти за проверка, но и в начин за насочване на генерирането на код в необходимата посока.

Успя да се ускори разработката след появата в 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.

Източник: opennet.ru

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster