Categorygithub.com/tetrationanalytics/lz4
modulepackage
2.6.1+incompatible
Repository: https://github.com/tetrationanalytics/lz4.git
Documentation: pkg.go.dev

# README

lz4 : LZ4 compression in pure Go

GoDoc Build Status Go Report Card GitHub tag (latest SemVer)

Overview

This package provides a streaming interface to LZ4 data streams as well as low level compress and uncompress functions for LZ4 data blocks. The implementation is based on the reference C one.

Install

Assuming you have the go toolchain installed:

go get github.com/pierrec/lz4

There is a command line interface tool to compress and decompress LZ4 files.

go install github.com/pierrec/lz4/cmd/lz4c

Usage

Usage of lz4c:
  -version
        print the program version

Subcommands:
Compress the given files or from stdin to stdout.
compress [arguments] [<file name> ...]
  -bc
        enable block checksum
  -l int
        compression level (0=fastest)
  -sc
        disable stream checksum
  -size string
        block max size [64K,256K,1M,4M] (default "4M")

Uncompress the given files or from stdin to stdout.
uncompress [arguments] [<file name> ...]

Example

// Compress and uncompress an input string.
s := "hello world"
r := strings.NewReader(s)

// The pipe will uncompress the data from the writer.
pr, pw := io.Pipe()
zw := lz4.NewWriter(pw)
zr := lz4.NewReader(pr)

go func() {
	// Compress the input string.
	_, _ = io.Copy(zw, r)
	_ = zw.Close() // Make sure the writer is closed
	_ = pw.Close() // Terminate the pipe
}()

_, _ = io.Copy(os.Stdout, zr)

// Output:
// hello world

Contributing

Contributions are very welcome for bug fixing, performance improvements...!

  • Open an issue with a proper description
  • Send a pull request with appropriate test case(s)

Contributors

Thanks to all contributors so far!

Special thanks to @Zariel for his asm implementation of the decoder.

Special thanks to @klauspost for his work on optimizing the code.

# Packages

No description provided by the author
No description provided by the author

# Functions

CompressBlock compresses the source buffer into the destination one.
CompressBlockBound returns the maximum size of a given buffer of size n, when not compressible.
CompressBlockHC compresses the source buffer src into the destination dst with max search depth (use 0 or negative value for no max).
NewReader returns a new LZ4 frame decoder.
NewReaderLegacy returns a new LZ4Demo frame decoder.
NewWriter returns a new LZ4 frame encoder.
NewWriterLegacy returns a new LZ4 encoder for the legacy frame format.
UncompressBlock uncompresses the source buffer into the destination one, and returns the uncompressed size.

# Constants

Extension is the LZ4 frame file name extension.
Version is the LZ4 frame format version.

# Variables

ErrBlockDependency is returned when attempting to decompress an archive created with block dependency.
ErrInvalid is returned when reading an invalid LZ4 archive.
ErrInvalidSourceShortBuffer is returned by UncompressBlock or CompressBLock when a compressed block is corrupted or the destination buffer is not large enough for the uncompressed data.
ErrUnsupportedSeek is returned when attempting to Seek any way but forward from the current position.

# Structs

Header describes the various flags that can be set on a Writer or obtained from a Reader.
Reader implements the LZ4 frame decoder.
ReaderLegacy implements the LZ4Demo frame decoder.
Writer implements the LZ4 frame encoder.
WriterLegacy implements the LZ4Demo frame decoder.