Efter sju mÄnaders utveckling lanserades 0.2.0 av ramverket OpenZL, avsett för att skapa förlustfria datakompressorer.
Ramverket bestÄr av ett grundlÀggande bibliotek och verktyg för att skapa specialiserade kompressorer, beskrivna pÄ sprÄket SDDL.
För att skapa en bra specialiserad kompressor finns det tvÄ steg:
- Analys av data för att extrahera strukturen.
- AnvÀndning av bra backend-kompressorer som anvÀnder den erhÄllna strukturen för att uppnÄ bra kompression.
OpenZL tillhandahÄller verktyg för bÄda stegen.
Projektet Àr skrivet i C och C++ och distribueras under BSD-licens.
Viktiga Àndringar
SDDL2
SDDL har helt omarbetats frÄn grunden för att uppnÄ de designmÄl som satts. Medan den ursprungliga demo-versionen var en förenklad körexekveringsmiljö, Àr SDDL2 en fullstÀndig kompilator: syntaktisk analys skickar data till den semantiska analysatorn, som i sin tur skickar ett typat abstrakt syntaxtrÀd (AST) till optimizern, och optimizern hanterar kodgeneratorn som genererar bytekod för den virtuella maskinen.
Den viktigaste resultaten Àr omedelbar syntaktisk analys. NÀr positionen för en post helt kan faststÀllas endast utifrÄn parametrar och konstanter, gÄr motorn direkt till vilket fÀlt som helst utan att skanna de föregÄende byteenheterna, vilket möjliggör direkt Ätkomst utan kopiering och en bandbredd pÄ flera GB/s.
SjÀlva sprÄket har utvecklats tillsammans med verktygen. Det stöder nu when-block för villkorsbundna placeringar, parameteriserade och anonyma poster, Ätkomst till medlemsfÀlt i poster samt bit- och logiska operatorer.
NĂ€r det gĂ€ller utvecklarvĂ€nlighet upptĂ€cker det semantiska analyssteget nu odefinierade referenser, typmismatchar och arity-fel vid kompilering â med angivelse av plats i kĂ€llkoden â istĂ€llet för vid körning, och ett VS Code-tillĂ€gg för syntaxmarkering av .sddl-filer har slĂ€ppts.
Den nya inbyggda codec LZ
I OpenZL har nu en egen LZ-kodare, presenterad som ZL_GRAPH_LZ, samt en profil för sekventiell kompression i verktyget zli. Arbetet med kodaren fortsÀtter: funktioner utökas och prestandan vid bearbetning av smÄ ingÄngar förbÀttras. För nÀrvarande stöder den funktionalitet som motsvarar zstd nivÄ 1, med en kompressionsfönsterstorlek pÄ 64 KB.
OpenZL ger möjlighet att omdesigna varje steg i LZ-pipelinen för att öka hastigheten. Dess grafarkitektur gör det ocksÄ möjligt att kombinera steg i entropikodning istÀllet för att anvÀnda en enda pipeline som passar alla anvÀndningsscenarier lika bra. Flera steg kan sedan kombineras till en operation för att öka bearbetningshastigheten. Detta gör att OpenZL kan erbjuda 10% högre kompressionshastighet och 70% högre dekompressionshastighet jÀmfört med Zstandard nivÄ 1 pÄ Silesia-datat. vÄra tester:
| Kompressor | KompressionsförhÄllande | Kompressionshastighet | Dekompressionshastighet |
|---|---|---|---|
| OpenZL LZ nivÄ 1 | 2.74 | 466 MB/s | 2288 MB/s |
| Zstd nivÄ 1 med 64K fönsterstorlek | 2.74 | 419 MB/s | 1254 MB/s |
| Zstd nivÄ 1 | 2.89 | 424 MB/s | 1345 MB/s |
Stöd för mycket stora ingÄngsdata
zli stöder nu bearbetning av enorma ingĂ„ngsdata (flera gigabyte stora). Innan kompressionen delas sĂ„dana data nu automatiskt upp i hanterbara storleksfragment (standard Ă€r cirka 16 MB), vilket begrĂ€nsar minnesanvĂ€ndningen, ökar datalokaliseringen och möjliggör parallell bearbetning. I SDDL2 har en liknande automatisk fragmenteringsfunktion implementerats vid arbetet enligt schemat. Under processen har nya eller uppdaterade segmenterare skapats â för CSV, Parquet och standardnumeriska data â och alla segmenterare Ă€r nu serialiserbara och konfigurerbara, sĂ„ den valda layouten kan sparas i kompressorn och anvĂ€ndas igen senare.
Detta tillÀmpas transparent under kompressionen. Observera att utbildningspiplinanen Àr oförÀndrad och förblir intakt, sÄ den Àr inte avsedd att ta emot gigantiska ingÄngar som utbildningsmaterial.
FörbÀttringar i den online grafvisualizeraren (prova)
Nu kÀnner visualizeraren igen kompressionens och dekompressionens spÄr frÄn början till slut.
Strömförhandsgranskningspanelen gör det möjligt att se de byte som faktiskt passerar genom varje kant, och tack vare trimningskontrollerna förblir Àven stora strömmar hanterbara.
InstĂ€llningspanelen samlar alla visningsalternativ pĂ„ ett stĂ€lle, och det kompletta snabbkommando-setet â navigering, ordnad traversal, expandering och kollapsning, nodval â gör det enkelt att arbeta med verktyget utan mus.
Nu har spĂ„rningarna versioner, blockkomprimering visas korrekt, och zli kan Ă€ntligen generera egna spĂ„rningar med de nya flaggorna âtrace och âtrace-streams-dir.
Olika
- Flera codecs har lagts till i katalogen. Codecs Partition och bitpack anvÀnder nu en sammanslagen dekoder. Codec Floating-point bitsplit har fÄtt speciella kodare och dekodare för formaten fp16, fp32, fp64 och bf16 med specialiserade accelereringar. Splittrande efter intervall (split_byrange), lÀngdmultiplexer, codec sentinel, graf lz4 och smÄ hjÀlpfunktioner som tryParseInt och splitByParam har ocksÄ lagts till.
- API:t har ordnats.
- Fuzzningstesterna har förbÀttrats.
- Bygg- och paketprocessen har förbÀttrats för fler plattformar.
KĂ€lla: linux.org.ru
