OpenZL 0.2.0

OpenZL 0.2.0 OpenZL 0.2.0

Dopo sette mesi di sviluppo, è stato rilasciato OpenZL 0.2.0 OpenZL, progettato per creare compressori di dati senza perdita.

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

  1. Analisi dei dati per estrarre la struttura.
  2. Utilizzo di buoni compressori backend, che usano la struttura ottenuta per ottenere una buona compressione.

OpenZL fornisce strumenti per entrambe le fasi.

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

Modifiche principali

SDDL2

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

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

Il linguaggio si è sviluppato insieme all'insieme di strumenti. Ora supporta blocchi when per posizionamenti condizionali, record parametrizzati e anonimi, accesso ai membri dei campi di un record, così come operatori bitwise e logici.

Per quanto riguarda la comodità per lo sviluppatore, la fase di analisi semantica ora identifica riferimenti indefiniti, incongruenze nei tipi e errori di arità in fase di compilazione - con indicazione della posizione nel codice sorgente - anziché durante l'esecuzione, ed è stato rilasciato un'estensione per VS Code per l'evidenziazione della sintassi dei file .sddl.

Un nuovo codec LZ integrato

In OpenZL, a custom LZ codec, represented as ZL_GRAPH_LZ, is now included along with a sequential compression profile in the zli utility. Work on the codec is ongoing: the feature set is being expanded, and performance is being improved for small input data. 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 enhance speed. Its graph architecture also enables the combination of entropy coding stages instead of relying on a single pipeline that works equally well for all use cases. Several stages can then be merged into a single operation to increase processing speed. This allows OpenZL to achieve a 10% higher compression speed and a 70% higher decompression speed compared to Zstandard level 1 on the Silesia dataset in our tests:

CompressorCompression RatioCompression SpeedDecompression Speed
OpenZL LZ level 12.74466 MB/s2288 MB/s
Zstd level 1 with 64K window size2.74419 MB/s1254 MB/s
Zstd level 12.89424 MB/s1345 MB/s

Support for very large input data

zli ora supporta l'elaborazione di enormi dati in ingresso (fino a diversi gigabyte). Prima della compressione, questi dati vengono ora automaticamente suddivisi in frammenti di dimensioni gestibili (di default circa 16MB), permettendo di limitare l'uso della memoria, migliorare la località dei dati e aprire possibilità per l'elaborazione parallela. In SDDL2 è implementata una funzione simile di frammentazione automatica durante l'elaborazione secondo lo schema. Durante il processo sono stati creati o aggiornati nuovi segmentatori – per CSV, Parquet e dati numerici standard – e tutti i segmentatori ora sono serializzabili e configurabili, così che la disposizione selezionata possa essere salvata nel compressore e riutilizzata in seguito.

Questo viene applicato in modo trasparente durante la compressione. Si noti che la pipeline di addestramento è diversa e rimane intatta, quindi non è progettata per ricevere enormi dati in ingresso come materiale di addestramento.

Miglioramenti nell'editor online del grafo (provare)
Ora l'editor riconosce le tracce di compressione e decompressione dalla A alla Z.

Il pannello di anteprima del flusso consente di visualizzare i byte che transitano effettivamente su ciascun bordo e, grazie ai controlli di trimming, anche i flussi di grandi dimensioni rimangono facili da gestire.

Il pannello delle impostazioni riunisce tutte le opzioni di visualizzazione in un unico luogo, e l'intero set di tasti di scelta rapida — navigazione direzionale, scansione ordinata, espansione e contrazione, selezione dei nodi — consente di usare lo strumento senza mouse in modo comodo.

Ora le tracciature hanno versioni, la compressione con suddivisione in blocchi è visualizzata correttamente e zli finalmente può generare tracciature proprie utilizzando i nuovi flag —trace e —trace-streams-dir.

Varie

  • Nel catalogo sono stati aggiunti diversi codec. I codec Partition e bitpack ora utilizzano un decoder unificato. Il codec Floating-point bitsplit ha ricevuto codificatori e decodificatori specifici per i formati fp16, fp32, fp64 e bf16 con accelerazioni specializzate. Sono state aggiunte suddivisioni basate sull'intervallo (split_byrange), un multiplexer di lunghezza, il codec sentinel, il grafo lz4 e piccole funzioni ausiliarie come tryParseInt e splitByParam.
  • API organizzato.
  • Migliorato il fuzzing testing.
  • Il processo di compilazione e confezionamento è stato migliorato per un numero maggiore di piattaforme.

Fonte: linux.org.ru

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