OpenZL 0.2.0

OpenZL 0.2.0 OpenZL 0.2.0

Human sa pito ka bulan nga pag-develop, gipagawas ang bersyon 0.2.0 sa framework. OpenZL, gidisenyo aron makahimo og mga lossless data compressor.

Ang balangkas gilangkoban sa usa ka base library ug mga himan alang sa paghimo og espesyal nga mga compressor nga gihulagway sa pinulongan SDDL.
Adunay duha ka lakang sa paghimo og maayong dedikado nga compressor:

  1. Pag-analisar sa datos aron makuha ang istruktura.
  2. Paggamit og maayong backend compressor nga nagpahimulos sa resulta nga istruktura aron makab-ot ang maayong kompresyon.

Ang OpenZL naghatag og mga himan para sa duha ka yugto.

Ang proyekto gisulat sa C ug C++ ug giapod-apod ubos sa lisensya sa BSD.

Daghang kausaban

SDDL2

Ang SDDL hingpit nga gisulat pag-usab gikan sa sinugdanan aron makab-ot ang orihinal nga mga tumong sa disenyo niini. Samtang ang orihinal nga demo usa ka gipasimple nga runtime environment, ang SDDL2 usa ka kompleto nga compiler: ang parser mopasa sa datos ngadto sa semantic analyzer, nga sa baylo mopasa sa usa ka typed abstract syntax tree (AST) ngadto sa optimizer, ug ang optimizer mokontrol sa code generator, nga momugna og virtual machine bytecode.

Ang importanteng resulta mao ang dali nga pag-parse. Kung ang lokasyon sa usa ka rekord hingpit nga matino gamit ang mga parameter ug constant lamang, ang makina direktang mobalhin sa bisan unsang field nga dili na kinahanglan nga mag-scan sa nangaging mga byte, nga makapahimo sa copy-less access ug throughput nga pipila ka GB/s.

Ang pinulongan mismo miuswag uban sa mga himan niini. Gisuportahan na niini karon ang mga "when clause" para sa mga conditional statement, parameterized ug anonymous records, access sa mga miyembro sa record field, ug bitwise ug logical operators.

Sa bahin sa developer, ang lakang sa semantic analysis karon nag-ila sa mga undefined references, type mismatches, ug arity errors sa oras sa pag-compile—uban ang lokasyon sa source code—imbes sa runtime, ug usa ka VS Code extension para sa syntax highlighting sa .sddl files ang gipagawas na.

Bag-ong built-in nga LZ codec

Ang OpenZL karon naglakip sa kaugalingon niining LZ codec, nga girepresentahan isip ZL_GRAPH_LZ, ingon man usa ka sequential compression profile sa zli utility. Ang trabaho sa codec nagpadayon, gipalapdan ang feature set niini ug gipaayo ang performance sa pagproseso sa gagmay nga input data. Sa pagkakaron, gisuportahan niini ang functionality nga katumbas sa zstd level 1, nga adunay 64 KB compression window.

Gitugotan sa OpenZL ang pag-redesign sa matag yugto sa LZ pipeline para sa katulin. Ang arkitektura sa graph niini nagtugot usab sa paghiusa sa mga yugto sa entropy encoding, imbes nga mogamit ug usa ka pipeline nga parehas nga angay alang sa tanang gamit. Ang daghang mga yugto mahimong ihiusa ngadto sa usa ka operasyon aron mapauswag ang katulin sa pagproseso. Gitugotan niini ang OpenZL nga makab-ot ang 10% nga mas paspas nga compression ug 70% nga mas paspas nga decompression kon itandi sa Zstandard level 1 sa Silesia corpus. ang among mga pagsulay:

CompressorRaction sa KompresyonKatulin sa KompresyonKatulin sa Dekompresiyon
OpenZL LZ lebel 12.74466 MB / s2288 MB / s
Zstd level 1 nga may 64K nga gidak-on sa bintana2.74419 MB / s1254 MB / s
Zstd lebel 12.89424 MB / s1345 MB / s

Suporta alang sa dako kaayong input data

Gisuportahan na karon sa zli ang pagproseso sa dagkong input data (pipila ka gigabytes ang gidak-on). Sa wala pa ang compression, ang maong data awtomatik na nga gibahin ngadto sa mga chunks nga madumala ang gidak-on (gibana-bana nga 16 MB pinaagi sa default), nga naglimite sa paggamit sa memorya, nagpauswag sa lokalidad sa datos, ug nagpahimo sa parallel processing. Ang SDDL2 nagpatuman sa susamang automatic chunking feature kung nagtrabaho uban sa schema. Bag-ong mga segmenter ang gihimo o gi-update sa proseso—para sa CSV, Parquet, ug standard numeric data—ug ang tanang segmenter karon ma-serializable ug ma-configure, aron ang gipili nga layout ma-save sa compressor ug magamit pag-usab sa ulahi.

Kini gigamit nga transparent atol sa compression. Timan-i nga ang training pipeline lahi ug nagpabilin nga wala maapektuhan, busa wala kini gidisenyo aron modawat og dagkong input data isip training material.

Mga kalamboan sa online graph visualizer (sa pagsulay)
Ang visualizer karon makaila na sa mga timailhan sa compression ug decompression gikan sa sinugdanan hangtod sa katapusan.

Ang stream preview panel nagtugot kanimo nga makita ang mga byte nga aktuwal nga nagaagos sa matag ngilit, ug ang mga kontrol sa pag-trim naghimo bisan sa dagkong mga stream nga sayon ​​gamiton.

Ang settings panel naghiusa sa tanang opsyon sa display sa usa ka lugar, ug ang kompletong set sa mga hotkey—directional navigation, ordered traversal, expanding ug collapsing, ug node selection—nagtugot kanimo sa paggamit sa tool nga kombenyente nga dili na kinahanglan og mouse.

Ang mga trace karon gi-version na, ang block-based compression gipakita sa saktong paagi, ug ang zli sa katapusan makahimo na sa kaugalingon niining mga trace gamit ang bag-ong --trace ug --trace-streams-dir flags.

miscellanea

  • Daghang mga codec ang nadugang sa katalogo. Ang Partition ug bitpack codec karon naggamit na og usa ka unified decoder. Ang floating-point bitsplit codec karon naglakip na og dedicated encoders ug decoders para sa fp16, fp32, fp64, ug bf16 formats nga adunay espesyal nga acceleration. Ang range-aware splitting (split_byrange), usa ka length multiplexer, ang sentinel codec, usa ka lz4 graph, ug mga minor helper functions sama sa tryParseInt ug splitByParam gidugang na.
  • Gipahapsay ang API.
  • Gipauswag nga pagsulay sa fuzz.
  • Gipauswag nga proseso sa pagtukod ug pagputos para sa dugang nga mga plataporma.

Source: linux.org.ru