Յոթ ամիս տևած մշակումից հետո թողարկվեց շրջանակի 0.2.0 տարբերակը։ OpenZL, որը նախատեսված է կորուստ չպարունակող տվյալների կոմպրեսորներ ստեղծելու համար։
Շրջանակը բաղկացած է բազային գրադարանից և լեզվով նկարագրված մասնագիտացված կոմպրեսորներ ստեղծելու գործիքներից։ SDDL.
Լավ մասնագիտացված կոմպրեսոր ստեղծելու համար կան երկու քայլ.
- Տվյալների վերլուծություն՝ կառուցվածքը որոշելու համար։
- Լավ հետին կոմպրեսորների օգտագործում, որոնք օգտագործում են արդյունքում ստացված կառուցվածքը՝ լավ սեղմում ապահովելու համար։
OpenZL-ը տրամադրում է գործիքներ երկու փուլերի համար էլ։
Նախագիծը գրված է C և C++ լեզուներով և տարածվում է BSD լիցենզիայով։
Հիմնական փոփոխություններ
SDDL2
SDDL-ը ամբողջությամբ վերաշարադրվեց զրոյից՝ իր սկզբնական դիզայնի նպատակներին հասնելու համար: Մինչդեռ սկզբնական դեմո տարբերակը պարզեցված աշխատանքային միջավայր էր, SDDL2-ը լիարժեք կոմպիլյատոր է. վերլուծիչը տվյալները փոխանցում է սեմանտիկ վերլուծիչին, որն էլ իր հերթին օպտիմիզատորին փոխանցում է տիպավորված աբստրակտ սինտաքսի ծառ (AST), իսկ օպտիմիզատորը կառավարում է կոդի գեներատորը, որը ստեղծում է վիրտուալ մեքենայի բայթկոդ:
Հիմնական արդյունքը ակնթարթային վերլուծությունն է: Երբ գրառման գտնվելու վայրը կարող է լիովին որոշվել միայն պարամետրերի և հաստատունների միջոցով, շարժիչը անմիջապես անցնում է ցանկացած դաշտ՝ առանց նախորդ բայթերը սկանավորելու, ապահովելով պատճենահանման կարիք չունեցող մուտք և մի քանի ԳԲ/վրկ թողունակություն:
Լեզուն ինքնին զարգացել է իր գործիքակազմին զուգընթաց։ Այն այժմ աջակցում է «when» կետերը պայմանական հրամանների, պարամետրացված և անանուն գրառումների, գրառումների դաշտի անդամներին մուտք գործելու, ինչպես նաև բիթային և տրամաբանական օպերատորների համար։
Մշակողի կողմից, սեմանտիկ վերլուծության քայլն այժմ նույնականացնում է չսահմանված հղումները, տիպերի անհամապատասխանությունները և arity սխալները կոմպիլյացիայի ժամանակ՝ սկզբնաղբյուր կոդի տեղադրմամբ, այլ ոչ թե կատարման ժամանակ, և թողարկվել է VS Code ընդլայնում .sddl ֆայլերի սինտաքսի ընդգծման համար։
Նոր ներկառուցված LZ կոդեկ
OpenZL-ը այժմ ներառում է իր սեփական LZ կոդեկը, որը ներկայացված է որպես ZL_GRAPH_LZ, ինչպես նաև հաջորդական սեղմման պրոֆիլ zli օգտակար ծրագրում: Կոդեկի վրա աշխատանքները շարունակվում են՝ ընդլայնելով դրա գործառույթների շարքը և բարելավելով արտադրողականությունը փոքր մուտքային տվյալներ մշակելիս: Ներկայումս այն աջակցում է zstd մակարդակի 1-ին համարժեք ֆունկցիոնալություն՝ 64 KB սեղմման պատուհանով:
OpenZL-ը թույլ է տալիս LZ խողովակաշարի յուրաքանչյուր փուլ վերաձևավորել արագության համար: Դրա գրաֆիկական ճարտարապետությունը նաև թույլ է տալիս համատեղել էնտրոպիայի կոդավորման փուլերը՝ մեկ խողովակաշար օգտագործելու փոխարեն, որը հավասարապես հարմար է բոլոր օգտագործման դեպքերի համար: Այնուհետև բազմաթիվ փուլերը կարող են համատեղվել մեկ գործողության մեջ՝ մշակման արագությունը բարելավելու համար: Սա թույլ է տալիս OpenZL-ին հասնել 10%-ով ավելի արագ սեղմման և 70%-ով ավելի արագ դեկոմպրեսիայի՝ համեմատած Silesia կորպուսի Zstandard մակարդակի 1-ի հետ: մեր թեստերը:
| Կոմպրեսոր | Սեղմման հարաբերակցությունը | Սեղմման արագություն | Դեկոմպրեսիայի արագություն |
|---|---|---|---|
| OpenZL LZ մակարդակ 1 | 2.74 | 466 Մբ / վ | 2288 Մբ / վ |
| Zstd մակարդակ 1՝ 64K պատուհանի չափսով | 2.74 | 419 Մբ / վ | 1254 Մբ / վ |
| Zstd մակարդակ 1 | 2.89 | 424 Մբ / վ | 1345 Մբ / վ |
Աջակցություն շատ մեծ մուտքային տվյալների համար
zli-ն այժմ աջակցում է հսկայական մուտքային տվյալների մշակում (մի քանի գիգաբայթ չափի): Սեղմումից առաջ նման տվյալները այժմ ավտոմատ կերպով բաժանվում են կառավարելի չափի կտորների (մոտավորապես 16 ՄԲ՝ ըստ լռելյայնի), սահմանափակելով հիշողության օգտագործումը, բարելավելով տվյալների տեղայնությունը և հնարավորություն տալով զուգահեռ մշակում: SDDL2-ը սխեմայի հետ աշխատելիս ներդնում է նմանատիպ ավտոմատ կտորավորման գործառույթ: Այդ ընթացքում ստեղծվել կամ թարմացվել են նոր սեգմենտատորներ՝ CSV, Parquet և ստանդարտ թվային տվյալների համար, և բոլոր սեգմենտատորներն այժմ սերիականացվելի և կարգավորելի են, ուստի ընտրված դասավորությունը կարող է պահպանվել կոմպրեսորում և հետագայում վերօգտագործվել:
Սա կիրառվում է թափանցիկորեն սեղմման ժամանակ։ Նկատի ունեցեք, որ մարզման խողովակաշարը տարբեր է և մնում է անփոփոխ, ուստի այն նախատեսված չէ հսկայական մուտքային տվյալներ որպես մարզման նյութ ընդունելու համար։
Առցանց գրաֆիկի վիզուալիզատորի բարելավումներ (փորձել)
Վիզուալիզատորն այժմ ճանաչում է սեղմման և դեկոմպրեսիայի հետքերը սկզբից մինչև վերջ։
Հոսքի նախադիտման վահանակը թույլ է տալիս տեսնել, թե իրականում ինչպես են բայթերը հոսում յուրաքանչյուր եզրով, իսկ կտրման կառավարման տարրերը հեշտացնում են նույնիսկ մեծ հոսքերի հետ աշխատանքը։
Կարգավորումների վահանակը մեկ տեղում է միավորում ցուցադրման բոլոր տարբերակները, իսկ ստեղների ամբողջական հավաքածուն՝ ուղղորդված նավարկություն, հերթականությամբ տեղաշարժ, ընդարձակում և փլուզում, և հանգույցի ընտրություն, թույլ է տալիս հարմարավետորեն աշխատել գործիքի հետ առանց մկնիկի։
Հետագծերը այժմ տարբերակված են, բլոկների վրա հիմնված սեղմումը ճիշտ է ցուցադրվում, և zli-ն վերջապես կարող է ստեղծել իր սեփական հետագծերը՝ օգտագործելով նոր --trace և --trace-streams-dir դրոշակները։
Ժողովածու
- Կատալոգին ավելացվել են մի քանի կոդեկներ: Բաժնային և բիթփեք կոդեկներն այժմ օգտագործում են միասնական դեկոդեր: Լողացող կետով բիթբաժանման կոդեկն այժմ ներառում է նվիրված կոդավորիչներ և դեկոդերներ fp16, fp32, fp64 և bf16 ձևաչափերի համար՝ մասնագիտացված արագացմամբ: Ավելացվել են տիրույթի վրա հիմնված բաժանում (split_byrange), երկարության մուլտիպլեքսոր, sentinel կոդեկ, lz4 գրաֆ և փոքր օժանդակ ֆունկցիաներ, ինչպիսիք են tryParseInt-ը և splitByParam-ը:
- API-ը արդիականացվել է։
- Բարելավված մշուշոտ թեստավորում։
- Ավելի շատ հարթակների համար բարելավված կառուցման և փաթեթավորման գործընթաց։
Source: linux.org.ru
