VictoriaMetrics/vendor/github.com/valyala/gozstd
Aliaksandr Valialkin 9e17b51d45
go.mod: update minimum Go version from Go 1.16 to Go 1.17
VictoriaMetrics code uses features from Go 1.17, so the minimum Go version must be increased from Go 1.16 to Go 1.17

See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1987
2021-12-22 12:27:02 +02:00
..
.gitignore all: open-sourcing single-node version 2019-05-23 00:18:06 +03:00
.travis.yml vendor: upgrade github.com/valyala/gozstd from v1.7.1 to v1.8.3 2020-08-15 15:11:56 +03:00
dict.go vendor: update github.com/valyala/gozstd from v1.5.1 to v1.6.0 2019-08-15 12:56:42 +03:00
doc.go vendor: update github.com/valyala/gozstd to v1.5.1 2019-06-22 00:14:19 +03:00
gozstd.go vendor: update github.com/valyala/gozstd from v1.13.0 to v1.14.1 2021-10-16 18:20:03 +03:00
libzstd_darwin_amd64.a vendor: updated github.com/valyala/gozstd from v1.6.2 to v1.6.3 2019-11-21 23:57:00 +02:00
libzstd_darwin_amd64.go all: open-sourcing single-node version 2019-05-23 00:18:06 +03:00
libzstd_darwin_arm64.a all: fix build issues and tests for Apple M1 2021-10-27 15:06:34 +03:00
libzstd_darwin_arm64.go vendor: update github.com/valyala/gozstd from v1.10.0 to v1.11.0 2021-05-24 04:59:55 +03:00
libzstd_freebsd_amd64.a all: port to FreeBSD on GOARCH=amd64 2019-08-28 01:19:23 +03:00
libzstd_freebsd_amd64.go all: port to FreeBSD on GOARCH=amd64 2019-08-28 01:19:23 +03:00
libzstd_linux_amd64.a vendor: update github.com/valyala/gozstd from v1.9.0 to v1.10.0 2021-05-17 01:47:33 +03:00
libzstd_linux_amd64.go vendor: update github.com/valyala/gozstd from v1.12.0 to v1.13.0 2021-09-22 20:06:44 +03:00
libzstd_linux_arm.a vendor: update github.com/valyala/gozstd from v1.9.0 to v1.10.0 2021-05-17 01:47:33 +03:00
libzstd_linux_arm.go all: open-sourcing single-node version 2019-05-23 00:18:06 +03:00
libzstd_linux_arm64.a vendor: update github.com/valyala/gozstd from v1.9.0 to v1.10.0 2021-05-17 01:47:33 +03:00
libzstd_linux_arm64.go all: open-sourcing single-node version 2019-05-23 00:18:06 +03:00
libzstd_linux_musl_amd64.a vendor: update github.com/valyala/gozstd from v1.12.0 to v1.13.0 2021-09-22 20:06:44 +03:00
libzstd_linux_musl_amd64.go vendor: update github.com/valyala/gozstd from v1.12.0 to v1.13.0 2021-09-22 20:06:44 +03:00
libzstd_windows_amd64.a vendor: updated github.com/valyala/gozstd from v1.6.2 to v1.6.3 2019-11-21 23:57:00 +02:00
libzstd_windows_amd64.go all: open-sourcing single-node version 2019-05-23 00:18:06 +03:00
LICENSE all: open-sourcing single-node version 2019-05-23 00:18:06 +03:00
Makefile vendor: update github.com/valyala/gozstd from v1.12.0 to v1.13.0 2021-09-22 20:06:44 +03:00
reader.go Upgrade github.com/valyala/gozstd from v1.8.3 to v1.9.0 2020-12-17 15:13:04 +02:00
README.md all: fix build issues and tests for Apple M1 2021-10-27 15:06:34 +03:00
stream.go all: open-sourcing single-node version 2019-05-23 00:18:06 +03:00
writer.go vendor: update github.com/valyala/gozstd from v1.9.0 to v1.10.0 2021-05-17 01:47:33 +03:00
zdict.h vendor: update github.com/valyala/gozstd from v1.9.0 to v1.10.0 2021-05-17 01:47:33 +03:00
zstd.h vendor: update github.com/valyala/gozstd from v1.9.0 to v1.10.0 2021-05-17 01:47:33 +03:00
zstd_errors.h vendor: update github.com/valyala/gozstd from v1.9.0 to v1.10.0 2021-05-17 01:47:33 +03:00

Build Status GoDoc Go Report codecov

gozstd - go wrapper for zstd

Features

  • Vendors upstream zstd without any modifications.

  • Simple API.

  • Optimized for speed. The API may be easily used in zero allocations mode.

  • Compress* and Decompress* functions are optimized for high concurrency.

  • Proper Writer.Flush for network apps.

  • Supports the following features from upstream zstd:

    • Block / stream compression / decompression with all the supported compression levels and with dictionary support.
    • Dictionary building from a sample set. The created dictionary may be saved to persistent storage / transfered over the network.
    • Dictionary loading for compression / decompression.

    Pull requests for missing upstream zstd features are welcome.

Quick start

How to install gozstd?

go get -u github.com/valyala/gozstd

How to compress data?

The easiest way is just to use Compress:

	compressedData := Compress(nil, data)

There is also StreamCompress and Writer for stream compression.

How to decompress data?

The easiest way is just to use Decompress:

	data, err := Decompress(nil, compressedData)

There is also StreamDecompress and Reader for stream decompression.

How to cross-compile gozstd?

If you're cross-compiling some code that uses gozstd and you stumble upon the following error:

# github.com/valyala/gozstd
/go/pkg/mod/github.com/valyala/gozstd@v1.6.2/stream.go:31:59: undefined: CDict
/go/pkg/mod/github.com/valyala/gozstd@v1.6.2/stream.go:35:64: undefined: CDict
/go/pkg/mod/github.com/valyala/gozstd@v1.6.2/stream.go:47:20: undefined: Writer

You can easily fix it by enabling CGO and using a cross-compiler (e.g. arm-linux-gnueabi-gcc):

env CC=arm-linux-gnueabi-gcc GOOS=linux GOARCH=arm CGO_ENABLED=1 go build ./main.go 

NOTE: Check #21 for more info.

Who uses gozstd?

FAQ

  • Q: Which go version is supported?
    A: go1.10 and newer. Pull requests for older go versions are accepted.

  • Q: Which platforms/architectures are supported?
    A: linux/amd64, linux/arm, linux/arm64, freebsd/amd64, darwin/amd64, darwin/arm64, windows/amd64. Pull requests for other platforms/architectures are accepted.

  • Q: I don't trust libzstd*.a binary files from the repo or these files dont't work on my OS/ARCH. How to rebuild them? A: Just run make clean libzstd.a if your OS/ARCH is supported.

  • Q: How do I specify custom build flags when recompiling libzstd*.a? A: You can specify MOREFLAGS=... variable when running make like this: MOREFLAGS=-fPIC make clean libzstd.a.

  • Q: Why the repo contains libzstd*.a binary files?
    A: This simplifies package installation to usual go get without additional steps for building the libzstd*.a