Након седам месеци развоја, објављена је верзија 0.2.0 оквира. ОпенЗЛ, дизајниран за креирање компресора података без губитака.
Фрејмворк се састоји од основне библиотеке и алата за креирање специјализованих компресора описаних у језику СДДЛ.
Постоје два корака за стварање доброг наменског компресора:
- Анализа података за издвајање структуре.
- Коришћење добрих бекенд компресора који искоришћавају резултујућу структуру за постизање добре компресије.
OpenZL пружа алате за обе фазе.
Пројекат је написан у C и C++ програмским језицима и дистрибуиран је под BSD лиценцом.
Велике промене
СДДЛ2
SDDL је потпуно преписан од темеља како би се постигли његови оригинални циљеви дизајна. Док је оригинална демо верзија била поједностављено окружење за извршавање, SDDL2 је потпуни компајлер: парсер прослеђује податке семантичком анализатору, који заузврат прослеђује типизирано апстрактно синтаксно дрво (AST) оптимизатору, а оптимизатор контролише генератор кода, који генерише бајткод виртуелне машине.
Кључни резултат је тренутно парсирање. Када се локација записа може у потпуности одредити само помоћу параметара и константи, механизам директно прелази на било које поље без скенирања претходних бајтова, омогућавајући приступ без копирања и пропусност од неколико GB/s.
Сам језик се развијао заједно са својим алатима. Сада подржава when клаузуле за условне исказе, параметризоване и анонимне записе, приступ члановима поља записа и битне и логичке операторе.
На страни програмера, корак семантичке анализе сада идентификује недефинисане референце, неусклађености типова и грешке арности у време компајлирања — са локацијом изворног кода — уместо у време извршавања, а објављено је и VS Code проширење за истицање синтаксе .sddl датотека.
Нови уграђени LZ кодек
OpenZL сада укључује сопствени LZ кодек, представљен као ZL_GRAPH_LZ, као и секвенцијални профил компресије у zli услужном програму. Рад на кодеку је у току, проширујући његов скуп функција и побољшавајући перформансе при обради малих улазних података. Тренутно подржава функционалност еквивалентну zstd нивоу 1, са прозором компресије од 64 KB.
OpenZL омогућава редизајнирање сваке фазе LZ цевовода ради убрзања. Његова графичка архитектура такође омогућава комбиновање фаза ентропијског кодирања, уместо коришћења једног цевовода који је подједнако погодан за све случајеве употребе. Више фаза се затим може комбиновати у једну операцију ради побољшања брзине обраде. Ово омогућава OpenZL-у да постигне 10% бржу компресију и 70% бржу декомпресију у поређењу са Zstandard нивоом 1 на Silesia корпусу. наши тестови:
| Компресор | Однос компресије | Брзина компресије | Брзина декомпресије |
|---|---|---|---|
| OpenZL LZ ниво 1 | 2.74 | КСНУМКС МБ / с | КСНУМКС МБ / с |
| Zstd ниво 1 са величином прозора од 64K | 2.74 | КСНУМКС МБ / с | КСНУМКС МБ / с |
| Зстд ниво 1 | 2.89 | КСНУМКС МБ / с | КСНУМКС МБ / с |
Подршка за веома велике улазне податке
zli сада подржава обраду огромних улазних података (величине неколико гигабајта). Пре компресије, такви подаци се сада аутоматски деле на блокове управљиве величине (приближно 16 MB подразумевано), ограничавајући употребу меморије, побољшавајући локалност података и омогућавајући паралелну обраду. SDDL2 имплементира сличну функцију аутоматског сегментирања при раду са шемом. Нови сегментатори су креирани или ажурирани у процесу - за CSV, Parquet и стандардне нумеричке податке - и сви сегментатори су сада серијализабилни и конфигурабилни, тако да се изабрани распоред може сачувати у компресору и поново користити касније.
Ово се транспарентно примењује током компресије. Имајте на уму да је процес обуке другачији и остаје непромењен, тако да није дизајниран да прихвати огромне улазне податке као материјал за обуку.
Побољшања у онлајн визуализатору графикона (покушати)
Визуализатор сада препознаје трагове компресије и декомпресије од почетка до краја.
Панел за преглед тока вам омогућава да видите бајтове који заправо теку дуж сваке ивице, а контроле за скраћивање олакшавају рад чак и са великим токовима.
Панел са подешавањима обједињује све опције приказа на једном месту, а комплетан сет пречица – усмерена навигација, уређено прелажење, проширивање и савијање и избор чворова – омогућава вам да практично радите са алатом без миша.
Трагови су сада верзионисани, компресија заснована на блоковима се приказује исправно, а zli коначно може да генерише сопствене трагове користећи нове заставице --trace и --trace-streams-dir.
Мисцеланеа
- Неколико кодека је додато у каталог. Кодеци Partition и bitpack сада користе обједињени декодер. Кодек за покретни зарез bitsplit сада укључује наменске енкодере и декодере за формате fp16, fp32, fp64 и bf16 са специјализованим убрзањем. Додати су раздвајање према опсегу (split_byrange), мултиплексер дужине, sentinel кодек, lz4 графикон и мање помоћне функције као што су tryParseInt и splitByParam.
- API је поједностављен.
- Побољшано фуз тестирање.
- Побољшан процес израде и паковања за више платформи.
Извор: линук.орг.ру
