Cyclops 4 HPC is the purpose built stack to support large HPC centers with resource accounting and billing of cluster as well as cloud resources.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
Diego Martin 0ea0435502 [U] Sync of latest codebase 3 years ago
..
internal/xxh32 [U] Sync of latest codebase 3 years ago
.gitignore [U] Sync of latest codebase 3 years ago
.travis.yml [U] Sync of latest codebase 3 years ago
LICENSE [U] Sync of latest codebase 3 years ago
README.md [U] Sync of latest codebase 3 years ago
block.go [U] Sync of latest codebase 3 years ago
debug.go [U] Sync of latest codebase 3 years ago
debug_stub.go [U] Sync of latest codebase 3 years ago
decode_amd64.go [U] Sync of latest codebase 3 years ago
decode_amd64.s [U] Sync of latest codebase 3 years ago
decode_other.go [U] Sync of latest codebase 3 years ago
errors.go [U] Sync of latest codebase 3 years ago
lz4.go [U] Sync of latest codebase 3 years ago
lz4_go1.10.go [U] Sync of latest codebase 3 years ago
lz4_notgo1.10.go [U] Sync of latest codebase 3 years ago
reader.go [U] Sync of latest codebase 3 years ago
reader_legacy.go [U] Sync of latest codebase 3 years ago
writer.go [U] Sync of latest codebase 3 years ago
writer_legacy.go [U] Sync of latest codebase 3 years ago

README.md

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.