Paket bahasa Go ini mendukung pembacaan dan penulisan aliran terkompresi xz. Ini juga mencakup perintah gxz untuk mengompresi dan mendekompresi data. Paket ini sepenuhnya ditulis dalam Go dan tidak memiliki ketergantungan pada kode C apa pun.
Paket ini sedang dalam pengembangan. Mungkin ada bug dan API dianggap tidak stabil. Saat ini paket tersebut tidak dapat bersaing dengan alat xz dalam hal kecepatan dan ukuran kompresi. Algoritme di sana telah dikembangkan sejak lama dan sangat optimal. Namun ada sejumlah perbaikan yang direncanakan dan saya sangat optimis mengenai kompresi dan dekompresi paralel. Pantau terus!
Contoh program berikut menunjukkan cara menggunakan API.
package main
import (
"bytes"
"io"
"log"
"os"
"github.com/ulikunitz/xz"
)
func main () {
const text = "The quick brown fox jumps over the lazy dog. n "
var buf bytes. Buffer
// compress text
w , err := xz . NewWriter ( & buf )
if err != nil {
log . Fatalf ( "xz.NewWriter error %s" , err )
}
if _ , err := io . WriteString ( w , text ); err != nil {
log . Fatalf ( "WriteString error %s" , err )
}
if err := w . Close (); err != nil {
log . Fatalf ( "w.Close error %s" , err )
}
// decompress buffer and write output to stdout
r , err := xz . NewReader ( & buf )
if err != nil {
log . Fatalf ( "NewReader error %s" , err )
}
if _ , err = io . Copy ( os . Stdout , r ); err != nil {
log . Fatalf ( "io.Copy error %s" , err )
}
}
Anda dapat menemukan dokumentasi lengkapnya di pkg.go.dev.
Paket ini mencakup utilitas baris perintah gxz untuk kompresi dan dekompresi.
Gunakan perintah berikut untuk instalasi:
$ go get github.com/ulikunitz/xz/cmd/gxz
Untuk mengujinya panggil perintah berikut.
$ gxz bigfile
Setelah beberapa waktu, file yang jauh lebih kecil bigfile.xz akan menggantikan bigfile. Untuk mendekompresinya gunakan perintah berikut.
$ gxz -d bigfile.xz
Kebijakan keamanan didokumentasikan di SECURITY.md.
Perangkat lunak ini tidak terpengaruh oleh serangan rantai pasokan pada implementasi xz asli, CVE-2024-3094. Implementasi ini tidak berbagi file apa pun dengan implementasi xz asli dan tidak ada patch atau permintaan penarikan yang diterima tanpa peninjauan.
Semua saran keamanan untuk proyek ini dipublikasikan di github.com/ulikunitz/xz/security/advisories.