Sawisé pitung sasi pangembangan, versi 0.2.0 saka framework iki dirilis. OpenZL, dirancang kanggo nggawe kompresor data tanpa kerugian.
Kerangka kerja iki kasusun saka pustaka dhasar lan piranti kanggo nggawe kompresor khusus sing diterangake ing basa kasebut. SDDL.
Ana rong langkah kanggo nggawe kompresor khusus sing apik:
- Analisis data kanggo njupuk struktur.
- Nggunakake kompresor backend sing apik sing ngeksploitasi struktur sing diasilake kanggo entuk kompresi sing apik.
OpenZL nyedhiyakake piranti kanggo loro tahapan kasebut.
Proyèk iki ditulis nganggo C lan C++ lan disebaraké miturut lisensi BSD.
Pangowahan utama
SDDL2
SDDL ditulis ulang saka wiwitan kanggo nggayuh tujuan desain asline. Sanajan demo asline minangka lingkungan runtime sing disederhanakake, SDDL2 minangka kompiler lengkap: parser ngirim data menyang penganalisis semantik, sing banjur ngirim wit sintaksis abstrak (AST) sing diketik menyang pengoptimal, lan pengoptimal ngontrol generator kode, sing ngasilake bytecode mesin virtual.
Asil utama yaiku parsing cepet. Nalika lokasi rekaman bisa ditemtokake kanthi lengkap nggunakake parameter lan konstanta wae, mesin langsung mlumpat menyang kolom apa wae tanpa mindhai byte sadurunge, saengga bisa ngakses tanpa salinan lan throughput pirang-pirang GB/s.
Basa iki dhewe wis berkembang bebarengan karo piranti-pirantine. Saiki basa iki ndhukung klausa nalika kanggo pernyataan kondisional, rekaman parameterisasi lan anonim, akses menyang anggota kolom rekaman, lan operator bitwise lan logis.
Ing sisih pangembang, langkah analisis semantik saiki ngenali referensi sing ora ditemtokake, ketidakcocokan tipe, lan kesalahan arity ing wektu kompilasi—karo lokasi kode sumber—tinimbang ing wektu runtime, lan ekstensi VS Code kanggo panyorotan sintaksis file .sddl wis dirilis.
Kodek LZ bawaan anyar
OpenZL saiki kalebu codec LZ dhewe, sing diwakili minangka ZL_GRAPH_LZ, uga profil kompresi sekuensial ing utilitas zli. Pakaryan ing codec kasebut isih ditindakake, ngembangake set fitur lan ningkatake kinerja nalika ngolah data input cilik. Saiki, ndhukung fungsi sing padha karo zstd level 1, kanthi jendela kompresi 64 KB.
OpenZL ngidini saben tahapan pipa LZ dirancang ulang kanggo kecepatan. Arsitektur grafike uga ngidini nggabungake tahapan encoding entropi, tinimbang nggunakake pipa tunggal sing cocog kanggo kabeh kasus panggunaan. Pirang-pirang tahapan banjur bisa digabung dadi siji operasi kanggo nambah kecepatan pangolahan. Iki ngidini OpenZL entuk kompresi 10% luwih cepet lan dekompresi 70% luwih cepet dibandhingake karo Zstandard level 1 ing Silesia corpus. tes kita:
| Kompresor | Rasio Kompresi | Kacepetan Kompresi | Kacepetan Dekompresi |
|---|---|---|---|
| OpenZL LZ level 1 | 2.74 | 466 MB / s | 2288 MB / s |
| Zstd level 1 kanthi ukuran jendhela 64K | 2.74 | 419 MB / s | 1254 MB / s |
| Zstd tingkat 1 | 2.89 | 424 MB / s | 1345 MB / s |
Dhukungan kanggo data input sing gedhe banget
zli saiki ndhukung pangolahan data input sing gedhe banget (ukurane pirang-pirang gigabyte). Sadurunge kompresi, data kasebut saiki kanthi otomatis dipérang dadi potongan sing ukurane bisa diatur (kurang luwih 16 MB minangka standar), mbatesi panggunaan memori, ningkatake lokalitas data, lan ngaktifake pangolahan paralel. SDDL2 ngetrapake fitur potongan otomatis sing padha nalika nggarap skema. Segmentor anyar digawe utawa dianyari ing proses kasebut—kanggo CSV, Parquet, lan data numerik standar—lan kabeh segmenter saiki bisa diserialisasi lan dikonfigurasi, saengga tata letak sing dipilih bisa disimpen ing kompresor lan digunakake maneh mengko.
Iki diterapake kanthi transparan sajrone kompresi. Elinga yen pipeline latihan beda lan tetep ora kena pengaruh, mula ora dirancang kanggo nampa data input raksasa minangka materi latihan.
Peningkatan ing visualisator grafik online (coba)
Visualizer saiki ngenali jejak kompresi lan dekompresi saka wiwitan nganti pungkasan.
Panel pratinjau stream ngidini sampeyan ndeleng byte sing mili ing saben pinggiran, lan kontrol pemangkasan njaga stream gedhe tetep gampang digunakake.
Panel setelan nggabungake kabeh opsi tampilan ing sak panggonan, lan sakumpulan tombol pintas lengkap—navigasi arah, traversal sing diurutake, ngembang lan nyusut, lan pilihan simpul—ngidini sampeyan bisa nggarap alat kasebut kanthi trep tanpa mouse.
Trace saiki wis diversi, kompresi berbasis blok ditampilake kanthi bener, lan zli pungkasane bisa ngasilake trace dhewe nggunakake flag --trace lan --trace-streams-dir anyar.
Разное
- Sawetara codec wis ditambahake ing katalog. Codec Partisi lan bitpack saiki nggunakake dekoder terpadu. Codec bitsplit floating-point saiki kalebu encoder lan dekoder khusus kanggo format fp16, fp32, fp64, lan bf16 kanthi akselerasi khusus. Pemisahan sing ngerti rentang (split_byrange), multiplexer dawa, codec sentinel, grafik lz4, lan fungsi pembantu minor kayata tryParseInt lan splitByParam wis ditambahake.
- API wis disederhanakake.
- Tes fuzz sing luwih apik.
- Proses mbangun lan ngemas sing luwih apik kanggo luwih akeh platform.
Source: linux.org.ru
