Selepas tujuh bulan pembangunan, versi 0.2.0 rangka kerja telah dikeluarkan. OpenZL, direka bentuk untuk mencipta pemampat data tanpa kehilangan.
Rangka kerja ini terdiri daripada pustaka asas dan alatan untuk mencipta pemampat khusus yang diterangkan dalam bahasa SDDL.
Terdapat dua langkah untuk mencipta pemampat khusus yang baik:
- Analisis data untuk mengekstrak struktur.
- Menggunakan pemampat bahagian belakang yang baik yang mengeksploitasi struktur yang terhasil untuk mencapai mampatan yang baik.
OpenZL menyediakan alat untuk kedua-dua peringkat.
Projek ini ditulis dalam C dan C++ dan diedarkan di bawah lesen BSD.
Perubahan besar
SDDL2
SDDL telah ditulis semula sepenuhnya dari bawah ke atas untuk mencapai matlamat reka bentuk asalnya. Walaupun demo asal merupakan persekitaran runtime yang dipermudahkan, SDDL2 ialah pengkompil sepenuhnya: penghurai menghantar data kepada penganalisis semantik, yang seterusnya menghantar pokok sintaks abstrak (AST) yang ditaip kepada pengoptimum, dan pengoptimum mengawal penjana kod, yang menjana kod bait mesin maya.
Hasil utamanya ialah penghuraian segera. Apabila lokasi rekod boleh ditentukan sepenuhnya menggunakan parameter dan pemalar sahaja, enjin akan melompat terus ke mana-mana medan tanpa mengimbas bait sebelumnya, membolehkan akses tanpa salinan dan daya pemprosesan beberapa GB/s.
Bahasa itu sendiri telah berkembang seiring dengan set alatnya. Ia kini menyokong klausa "when" untuk pernyataan bersyarat, rekod berparameter dan tanpa nama, akses kepada ahli medan rekod dan operator bitwise dan logik.
Di pihak pembangun, langkah analisis semantik kini mengenal pasti rujukan yang tidak ditakrifkan, ketidakpadanan jenis dan ralat arity pada masa kompilasi—dengan lokasi kod sumber—dan bukannya pada masa jalan, dan sambungan Kod VS untuk penonjolan sintaks fail .sddl telah dikeluarkan.
Kodek LZ terbina dalam baharu
OpenZL kini merangkumi codec LZnya sendiri, yang diwakili sebagai ZL_GRAPH_LZ, serta profil pemampatan berjujukan dalam utiliti zli. Kerja-kerja pada codec sedang dijalankan, mengembangkan set cirinya dan meningkatkan prestasi semasa memproses data input kecil. Pada masa ini, ia menyokong fungsi yang setara dengan zstd tahap 1, dengan tetingkap pemampatan 64 KB.
OpenZL membolehkan setiap peringkat saluran paip LZ direka bentuk semula untuk kelajuan. Seni bina grafnya juga membolehkan gabungan peringkat pengekodan entropi, daripada menggunakan saluran paip tunggal yang sama-sama sesuai untuk semua kes penggunaan. Pelbagai peringkat kemudiannya boleh digabungkan menjadi satu operasi untuk meningkatkan kelajuan pemprosesan. Ini membolehkan OpenZL mencapai pemampatan 10% lebih pantas dan penyahmampatan 70% lebih pantas berbanding Zstandard tahap 1 pada korpus Silesia. ujian kami:
| Pemampat | Nisbah Mampatan | Kelajuan Mampatan | Kelajuan Penyahmampatan |
|---|---|---|---|
| OpenZL LZ tahap 1 | 2.74 | 466 MB / s | 2288 MB / s |
| Zstd tahap 1 dengan saiz tetingkap 64K | 2.74 | 419 MB / s | 1254 MB / s |
| Zstd tahap 1 | 2.89 | 424 MB / s | 1345 MB / s |
Sokongan untuk data input yang sangat besar
zli kini menyokong pemprosesan data input yang besar (saiz beberapa gigabait). Sebelum pemampatan, data tersebut kini dibahagikan secara automatik kepada ketulan bersaiz yang boleh diurus (kira-kira 16 MB secara lalai), mengehadkan penggunaan memori, menambah baik lokaliti data dan mendayakan pemprosesan selari. SDDL2 melaksanakan ciri penggumpalan automatik yang serupa apabila bekerja dengan skema. Segmen baharu telah dicipta atau dikemas kini dalam proses—untuk CSV, Parquet dan data berangka standard—dan semua segmenter kini boleh disirikan dan dikonfigurasikan, jadi susun atur yang dipilih boleh disimpan dalam pemampat dan digunakan semula kemudian.
Ini digunakan secara telus semasa pemampatan. Ambil perhatian bahawa saluran latihan adalah berbeza dan kekal tidak terjejas, jadi ia tidak direka bentuk untuk menerima data input yang besar sebagai bahan latihan.
Penambahbaikan dalam visualizer graf dalam talian (cuba)
Penglihatan kini mengecam jejak mampatan dan penyahmampatan dari awal hingga akhir.
Panel pratonton strim membolehkan anda melihat bait yang sebenarnya mengalir di sepanjang setiap tepi dan kawalan pemangkasan memastikan strim besar mudah digunakan.
Panel tetapan menyatukan semua pilihan paparan di satu tempat, dan satu set lengkap kekunci pintas—navigasi arah, traversal tersusun, pengembangan dan penyusutan, serta pemilihan nod—membolehkan anda menggunakan alat ini dengan mudah tanpa tetikus.
Jejak kini diversikan, pemampatan berasaskan blok dipaparkan dengan betul, dan zli akhirnya boleh menjana jejaknya sendiri menggunakan bendera --trace dan --trace-streams-dir yang baharu.
Macam-macam
- Beberapa codec telah ditambah ke dalam katalog. Codec Partition dan bitpack kini menggunakan penyahkod bersatu. Codec bitsplit titik terapung kini merangkumi pengekod dan penyahkod khusus untuk format fp16, fp32, fp64 dan bf16 dengan pecutan khusus. Pemisahan sedar julat (split_byrange), pemultipleks panjang, codec sentinel, graf lz4 dan fungsi pembantu kecil seperti tryParseInt dan splitByParam telah ditambah.
- API telah diperkemas.
- Ujian kabur yang dipertingkatkan.
- Proses binaan dan pembungkusan yang dipertingkatkan untuk lebih banyak platform.
Sumber: linux.org.ru
