OpenZL 0.2.0 OpenZL 0.2.0

Жети айлык иштеп чыгуудан кийин, алкактын 0.2.0 версиясы чыгарылды. OpenZL, жоготуусуз маалымат компрессорлорун түзүү үчүн иштелип чыккан.

Алкак базалык китепканадан жана тилде сүрөттөлгөн адистештирилген компрессорлорду түзүү үчүн куралдардан турат SDDL.
Жакшы компрессорду түзүүнүн эки кадамы бар:

  1. Структураны алуу үчүн маалыматтарды талдоо.
  2. Жакшы кысууга жетишүү үчүн пайда болгон түзүлүштү пайдаланган жакшы арткы компрессорлорду колдонуу.

OpenZL эки этап үчүн тең куралдарды камсыз кылат.

Долбоор C жана C++ тилдеринде жазылган жана BSD лицензиясы боюнча таратылат.

Негизги өзгөрүүлөр

SDDL2

SDDL баштапкы дизайн максаттарына жетүү үчүн толугу менен нөлдөн баштап кайра жазылган. Баштапкы демо жөнөкөйлөтүлгөн иштөө чөйрөсү болсо, SDDL2 толук кандуу компилятор болуп саналат: талдоочу маалыматтарды семантикалык анализаторго өткөрүп берет, ал өз кезегинде типтелген абстракттуу синтаксис дарагын (AST) оптималдаштыргычка өткөрүп берет, ал эми оптималдаштыргыч виртуалдык машинанын байткодун түзгөн код генераторун башкарат.

Негизги натыйжа - заматта талдоо. Жазуунун жайгашкан жерин параметрлерди жана туруктууларды гана колдонуу менен толук аныктоого мүмкүн болгондо, кыймылдаткыч мурунку байттарды сканерлебестен каалаган талаага түз секирип, көчүрмөсүз кирүүгө жана бир нече ГБ/с өткөрүү жөндөмдүүлүгүнө мүмкүндүк берет.

Тилдин өзү өзүнүн куралдар топтому менен бирге өнүккөн. Азыр ал шарттуу операторлор, параметрленген жана анонимдүү жазуулар, жазуу талаасынын мүчөлөрүнө жетүү мүмкүнчүлүгү жана битралдык жана логикалык операторлор үчүн when сүйлөмдөрүн колдойт.

Иштеп чыгуучу тараптан, семантикалык талдоо кадамы эми аныкталбаган шилтемелерди, типтердин дал келбестигин жана arity каталарын компиляция учурунда — баштапкы коддун жайгашкан жери менен — аткаруу учурунда эмес, аныктайт жана .sddl файлдарынын синтаксисин белгилөө үчүн VS Code кеңейтүүсү чыгарылды.

Жаңы орнотулган LZ кодек

OpenZL эми ZL_GRAPH_LZ катары көрсөтүлгөн өзүнүн LZ кодегин, ошондой эле zli утилитасында ырааттуу кысуу профилин камтыйт. Кодектин үстүндө иштөө уланууда, анын функциялар топтомун кеңейтип, кичинекей киргизүү маалыматтарын иштетүүдө иштин натыйжалуулугун жакшыртат. Учурда ал 64 КБ кысуу терезеси менен zstd 1-деңгээлине барабар функцияны колдойт.

OpenZL LZ түтүгүнүн ар бир этабын ылдамдык үчүн кайра иштеп чыгууга мүмкүндүк берет. Анын графикалык архитектурасы бардык колдонуу учурларына бирдей ылайыктуу бир түтүктү колдонуунун ордуна, энтропияны коддоо этаптарын бириктирүүгө мүмкүндүк берет. Андан кийин иштетүү ылдамдыгын жакшыртуу үчүн бир нече этаптарды бир операцияга бириктирүүгө болот. Бул OpenZLге Silesia корпусундагы Zstandard 1 деңгээлине салыштырмалуу 10% тезирээк кысууга жана 70% тезирээк декомпрессияга жетүүгө мүмкүндүк берет. биздин тесттер:

КомпрессорКысуу катышыКысуу ылдамдыгыДекомпрессия ылдамдыгы
OpenZL LZ 1-деңгээл2.74466 MB / с2288 MB / с
64K терезе өлчөмү менен Zstd 1-деңгээл2.74419 MB / с1254 MB / с
Zstd 1-деңгээл2.89424 MB / с1345 MB / с

Абдан чоң киргизүү маалыматтарын колдоо

zli эми чоң көлөмдөгү киргизүү маалыматтарын (бир нече гигабайт өлчөмүндө) иштетүүнү колдойт. Кысууга чейин мындай маалыматтар азыр автоматтык түрдө башкарылуучу өлчөмдөгү бөлүктөргө бөлүнөт (демейки боюнча болжол менен 16 МБ), бул эстутумду колдонууну чектейт, маалыматтардын жайгашкан жерин жакшыртат жана параллелдүү иштетүүнү камсыз кылат. SDDL2 схема менен иштегенде ушул сыяктуу автоматтык түрдө бөлүү функциясын ишке ашырат. Процессте CSV, паркет жана стандарттуу сандык маалыматтар үчүн жаңы сегментаторлор түзүлдү же жаңыртылды жана бардык сегментаторлор эми сериялаштырылуучу жана конфигурациялануучу, андыктан тандалган макетти компрессордо сактап, кийинчерээк кайра колдонсо болот.

Бул кысуу учурунда ачык колдонулат. Окутуу түтүгү башкача экенин жана ага таасир этпестигин эске алыңыз, андыктан ал окуу материалы катары чоң киргизүү маалыматтарын кабыл алуу үчүн иштелип чыккан эмес.

Онлайн графикалык визуализатордогу жакшыртуулар (аракет кылуу)
Визуализатор эми кысуу жана декомпрессия издерин башынан аягына чейин тааныйт.

Агымды алдын ала көрүү панели ар бир чети боюнча байттардын чындыгында агып жатканын көрүүгө мүмкүндүк берет, ал эми кыркуу башкаруу элементтери чоң агымдарды да оңой иштетүүгө мүмкүндүк берет.

Орнотуулар панели бардык дисплей параметрлерин бир жерге бириктирет, ал эми ысык баскычтардын толук топтому — багыттоо навигациясы, иреттелген айлануу, кеңейтүү жана бүктөө жана түйүндөрдү тандоо — курал менен чычкансыз ыңгайлуу иштөөгө мүмкүндүк берет.

Трассалар эми версияланган, блок негизиндеги кысуу туура көрсөтүлгөн жана zli акыры жаңы --trace жана --trace-streams-dir желекчелерин колдонуп, өзүнүн трастарын түзө алат.

Разное

  • Каталогго бир нече кодектер кошулду. Бөлүм жана битпакет кодектери эми бирдиктүү декодерди колдонот. Калкыма чекиттүү битбөлүнгөн кодекке эми ​​атайын ылдамдануусу бар fp16, fp32, fp64 жана bf16 форматтары үчүн атайын коддоочулар жана декодерлер кирет. Диапазонго негизделген бөлүү (split_byrange), узундук мультиплексору, көзөмөлдөөчү кодек, lz4 графиги жана tryParseInt жана splitByParam сыяктуу кошумча жардамчы функциялар кошулду.
  • API жөнөкөйлөштүрүлдү.
  • Жакшыртылган фузз сыноосу.
  • Көбүрөөк платформалар үчүн куруу жана таңгактоо процесси жакшыртылды.

Source: linux.org.ru