OpenZL 0.2.0

OpenZL 0.2.0 OpenZL 0.2.0

Dopo sette mesi di sviluppo, è stata rilasciata la versione 0.2.0 del framework OpenZL, progettato per creare compressori di dati senza perdite.

Il framework è composto da una libreria di base e strumenti per creare compressori specializzati, descritti nel linguaggio SDDL.
Per creare un buon compressore specializzato ci sono due fasi:

  1. Analisi dei dati per estrarre la struttura.
  2. Uso di buoni compressori backend, che utilizzano la struttura ottenuta per raggiungere una buona compressione.

OpenZL fornisce strumenti per entrambe le fasi.

Il progetto è scritto in C e C++ e viene distribuito con licenza BSD.

Modifiche principali

SDDL2

SDDL è stato completamente riprogettato da zero per raggiungere gli obiettivi di progettazione prefissati. Se la versione demo iniziale rappresentava un ambiente di esecuzione semplificato, SDDL2 è un vero e proprio compilatore: il parser sintattico passa i dati all'analizzatore semantico, il quale a sua volta passa l'albero sintattico astratto tipizzato (AST) all'ottimizzatore, e l'ottimizzatore gestisce il generatore di codice che genera bytecode per la macchina virtuale.

Il risultato chiave è un'analisi sintattica istantanea. Quando la posizione di una registrazione può essere completamente determinata solo dai parametri e dalle costanti, il motore accede direttamente a qualsiasi campo, senza scansionare i byte precedenti, garantendo accesso senza copia e una larghezza di banda di diversi GB/s.

Il linguaggio stesso si è evoluto insieme all'insieme di strumenti. Ora supporta blocchi when per posizionamenti condizionali, registrazioni parametrizzate e anonime, accesso ai membri dei campi di registrazione, nonché operatori bitwise e logici.

Per quanto riguarda la facilità per lo sviluppatore, la fase di analisi semantica ora rileva riferimenti incerti, discordanze di tipo ed errori di arità in fase di compilazione – con indicazione della posizione nel codice sorgente – e viene rilasciata un'estensione per VS Code per la sintassi dei file .sddl.

Nuovo codec LZ integrato

In OpenZL, a proprietary LZ codec is now included, presented as ZL_GRAPH_LZ, along with a profile for sequential compression in the zli utility. Work on the codec continues: the feature set is being expanded, and performance in handling small input data is being improved. Currently, it supports functionality equivalent to zstd level 1, with a compression window size of 64 KB.

OpenZL allows for the redesign of each stage of the LZ pipeline to increase speed. Its graph architecture also enables the combination of entropy coding stages instead of using a single pipeline that works equally well for all use cases. Then, multiple stages can be combined into a single operation to enhance processing speed. This allows OpenZL to achieve 10% faster compression and 70% faster decompression compared to zstandard level 1 on the Silesia corpus in our tests:

CompressoreRapporto di CompressioneVelocità di CompressioneVelocità di Decompressione
OpenZL LZ livello 12.74466 MB/s2288 MB/s
Zstd livello 1 con dimensione della finestra a 64K2.74419 MB/s1254 MB/s
Zstd livello 12.89424 MB/s1345 MB/s

Supporto per dati di input molto grandi

zli ora supporta l'elaborazione di enormi dati di input (di diverse gigabyte). Prima della compressione, tali dati vengono ora automaticamente suddivisi in frammenti di dimensione gestibile (per impostazione predefinita, circa 16MB), il che consente di limitare l'uso della memoria, aumentare la località dei dati e apre a opportunità per l'elaborazione parallela. In SDDL2 è implementata una funzione simile di frammentazione automatica durante l'elaborazione in modo schematizzato. Sono stati creati o aggiornati nuovi segmentatori per CSV, Parquet e dati numerici standard, e tutti i segmentatori ora sono serializzabili e personalizzabili, in modo che la configurazione scelta possa essere salvata nel compressore e riutilizzata in seguito.

Questo si applica in modo trasparente durante la compressione. Si noti che il pipeline di apprendimento è diverso e rimane intatto, quindi non è progettato per accettare enormi dati di input come materiale di apprendimento.

Miglioramenti nel visualizzatore grafico online (provare)
Ora il visualizzatore riconosce le tracce di compressione e decompressione dall'inizio alla fine.

Il pannello di anteprima del flusso consente di visualizzare i byte che transitano effettivamente su ciascun bordo, e grazie ai controlli di ritaglio anche flussi grandi rimangono maneggevoli.

Il pannello delle impostazioni riunisce tutte le opzioni di visualizzazione in un unico luogo, mentre un set completo di tasti di scelta rapida - navigazione nelle direzioni, attraversamento ordinato, espansione e compressione, selezione dei nodi - consente di utilizzare lo strumento senza mouse in modo pratico.

Ora le tracciature hanno versioni, la compressione con segmentazione viene visualizzata correttamente e zli finalmente può generare proprie tracciature con i nuovi flag —trace e —trace-streams-dir.

Varie

  • Nel catalogo sono stati aggiunti diversi codec. I codec Partition e bitpack utilizzano ora un decoder combinato. Il codec Floating-point bitsplit ha ricevuto codificatori e decodificatori speciali per i formati fp16, fp32, fp64 e bf16 con accelerazioni specializzate. Sono stati aggiunti segmentazione basata su intervallo (split_byrange), multiplexer di lunghezza, codec sentinel, grafico lz4 e piccole funzioni ausiliarie come tryParseInt e splitByParam.
  • API ordinata.
  • Migliorato il fuzzing testing.
  • Migliorato il processo di build e packaging per un numero maggiore di piattaforme.

Fonte: linux.org.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster