Pas pas shtatë muaj zhvillimi, u lëshua versioni 0.2.0 i frameworkut OpenZL, i destinuar për krijimin e kompresorëve të dhënash pa humbje.
Frameworku përbëhet nga një bibliotekë bazë dhe mjete për krijimin e kompresorëve të specializuar, të përshkruar në gjuhën SDDL.
Për të krijuar një kompresor të specializuar të mirë, ka dy etapa:
- Analiza e të dhënave për nxjerrjen e strukturës.
- Përdorimi i kompresorëve të mirë backend që përdorin strukturën e marrë për të arritur një kompresim të mirë.
OpenZL ofron mjete për të dyja etapat.
Projekti është shkruar në gjuhët C dhe C++ dhe shpërndahet sipas licencës BSD.
Ndryshimet kryesore
SDDL2
SDDL është rishikuar plotësisht nga zero për të arritur qëllimet e vendosura të dizajnit. Nëse versioni i parë demo përfaqësonte një ambient të thjeshtuar ekzekutimi, SDDL2 është një compiler i plotë: analizuesi sintaksor i kalon të dhënat analizuesit semantik, i cili, nga ana e tij, i kalon një siqili të tipizuar (AST) optimizuesit, dhe optimizuesi drejton gjeneruesin e kodit, i cili gjeneron kodin byte për makinën virtuale.
Rezultati kyç është analiza e menjëhershme sintaksore. Kur vendndodhja e regjistrit mund të përcaktohet plotësisht vetëm nga parametrat dhe konstantet, makina kalon drejtpërdrejt në çdo fushë, pa skanuar një byte të mëparshëm, duke siguruar akses pa kopjim dhe një kapacitet në disa GB/s.
Gjuha vetë është zhvilluar së bashku me grupin e mjeteve. Tani ajo mbështet blloqet when për pozita kushtore, regjistra parametrizuar dhe anonimë, akses në anëtarët e fushave të regjistrave si dhe operatorët bit për bit dhe logjikë.
Sa i pĂ«rket lehtĂ«sisĂ« sĂ« zhvilluesit, etapa e analizĂ«s semantike tani identifikon referencat e pasigurta, papĂ«rshtatshmĂ«ritĂ« e tipeve dhe gabimet e arnosti nĂ« fazĂ«n e kompilimit â me shĂ«nim tĂ« vendndodhjes nĂ« kodin burimor â dhe gjithashtu Ă«shtĂ« lĂ«shuar njĂ« zgjerim pĂ«r VS Code pĂ«r theksin e sintaksĂ«s sĂ« skedarĂ«ve .sddl.
Kodeku i ri i integruar LZ
Në OpenZL tani është përfshirë një codec i vetë-ndërtuar LZ, i paraqitur si ZL_GRAPH_LZ, si dhe një profil i kompresimit të rreshtuar në utilitarin zli. Puna mbi codec vazhdon: po zgjerohet grupi i funksioneve dhe po rritet performanca për përpunimin e të dhënave të vogla. Deri tani, ai mbështet funksionalitetin e barabartë me zstd nivel 1, me madhësinë e dritares së kompresimit prej 64 KB.
OpenZL ofron mundësinë për të riprojektuar çdo fazë të tubacionit LZ për të rritur shpejtësinë. Arkitektura e tij grafike gjithashtu lejon kombinimin e fazave të kodimit të entropisë, në vend që të përdorë një tubacion të vetëkuptueshëm që përshtatet njësoj mirë për të gjitha skenarët e përdorimit. Më pas, disa faza mund të kombinohen në një operacion për të rritur shpejtësinë e përpunimit. Kjo lejon që OpenZL të sigurojë një shpejtësi kompresimi 10% më të lartë dhe një shpejtësi shkarkimi 70% më të lartë krahasuar me Zstandard nivel 1 në kabinetin Silesia në testet tona:
| Kompresori | Raporti i Kompresimit | Shpejtësia e Kompresimit | Shpejtësia e Shkarkimit |
|---|---|---|---|
| OpenZL LZ nivel 1 | 2.74 | 466 MB/s | 2288 MB/s |
| Zstd nivel 1 me madhësi dritare 64K | 2.74 | 419 MB/s | 1254 MB/s |
| Zstd nivel 1 | 2.89 | 424 MB/s | 1345 MB/s |
Mbështetje për të dhëna shumë të mëdha
zli tani mbĂ«shtet pĂ«rpunimin e tĂ« dhĂ«nave tĂ« mĂ«dha (me madhĂ«si disa gigabajt). Para kompresimit, kĂ«to tĂ« dhĂ«na tani shpĂ«rndahen automatikisht nĂ« fragmente me madhĂ«si tĂ« menaxhueshme (pĂ«r default - rreth 16MB), çka ndihmon nĂ« kufizimin e sasisĂ« sĂ« memories sĂ« pĂ«rdorur, rritjen e lokalitetit tĂ« tĂ« dhĂ«nave dhe hap mundĂ«si pĂ«r pĂ«rpunim nĂ« paralel. NĂ« SDDL2 Ă«shtĂ« implementuar njĂ« funksion i ngjashĂ«m i fragmentimit automatik nĂ« punĂ«n sipas skemĂ«s. GjatĂ« procesit janĂ« krijuar ose azhurnuar segmentues tĂ« rinj â pĂ«r CSV, Parquet dhe tĂ« dhĂ«na numerike standarde â dhe tĂ« gjithĂ« segmentuesit tani janĂ« tĂ« serializueshĂ«m dhe konfigurosh, kĂ«shtu qĂ« konfigurimi i zgjedhur mund tĂ« ruhet nĂ« kompresor dhe tĂ« pĂ«rdoret pĂ«rsĂ«ri mĂ« vonĂ«.
Kjo aplikohet në mënyrë transparente gjatë kompresimit. Lini të kuptohet se tubacioni i trajnimit është ndryshe dhe mbetet i paperdorur, kështu që nuk është destinacion për të dhëna gjigante si material trajnimi.
Përmirësime në vizualizuesin online të grafit (provoni)
Tani vizualizuesi njeh gjurmët e kompresimit dhe shkarkimit nga fillimi deri në fund.
Paneli i paraparjes së rrjedhës lejon shikimin e byte-ve që kalojnë në çdo skaj, dhe përmes elementeve të kontrollit të prerjes, madje rrjedhat e mëdha mbeten të lehta për t'u punuar.
Paneli i cilĂ«simeve bashkon tĂ« gjitha opsionet e shfaqjes nĂ« njĂ« vend, dhe komplet seti i çelĂ«save tĂ« shpejtĂ« â navigimi nĂ« drejtime, kalimi i rendit, zgjerimi dhe tkurrja, pĂ«rzgjedhja e nyjave â lejon punĂ« tĂ« rehatshme me mjaut pa miun.
Tani gjurmĂ«t kanĂ« versione, kompresimi me ndarje bllokesh shfaqet saktĂ«, dhe zli pĂ«rfundimisht mund tĂ« gjenerojĂ« gjurmĂ« tĂ« veta me flamujt e rinj âtrace dhe âtrace-streams-dir.
TĂ« tjera
- NĂ« katalog Ă«shtĂ« shtuar disa kodeka. Kodekat Partition dhe bitpack tani pĂ«rdorin dekoder tĂ« kombinuar. Kodeku Floating-point bitsplit ka marrĂ« kodues dhe dekodues tĂ« veçantĂ« pĂ«r formatet fp16, fp32, fp64 dhe bf16 me ngritje tĂ« specializuar. Shtuar ndarja sipas ĐŽĐžĐ°ĐżĐ°Đ·ĐŸĐœ (split_byrange), multiplexer i gjatĂ«, kodeku sentinel, graf lz4 dhe disa funksione tĂ« vogla ndihmuese, si tryParseInt dhe splitByParam.
- API është renditur.
- Testimi i fuzzing-ut është përmirësuar.
- Procesi i ndërtimit dhe paketimit është përmirësuar për më shumë platforma.
Burimi: linux.org.ru
