GNU Guile bindings to the zstd compression library.

Aleix Conchillo Flaqué 7fa9af373c config.scm.in: check for darwin shared library 11 months ago
build-aux f853c8eb81 Add missing 'test-driver.scm' file. 11 months ago
tests 8bd44c1db7 Properly handle truncated input during decompression. 11 months ago
zstd 7fa9af373c config.scm.in: check for darwin shared library 10 months ago
.dir-locals.el 505002fa2d Add tests. 11 months ago
.gitignore 505002fa2d Add tests. 11 months ago
.guix-authorizations afe022f7a1 Initial commit. 11 months ago
AUTHORS e3e7304772 Add build infrastructure. 11 months ago
COPYING d9e6af2d25 Add README and COPYING. 11 months ago
ChangeLog e3e7304772 Add build infrastructure. 11 months ago
Makefile.am c8d804f389 maint: Add Guix package definition. 11 months ago
NEWS e3e7304772 Add build infrastructure. 11 months ago
README 0d830f53e2 README: Tweak. 11 months ago
configure.ac 9b197a1304 maint: Set version to 0.1.0. 11 months ago
guix.scm c8d804f389 maint: Add Guix package definition. 11 months ago
pre-inst-env.in e3e7304772 Add build infrastructure. 11 months ago
zstd.scm 8bd44c1db7 Properly handle truncated input during decompression. 11 months ago

README

#+TITLE: Guile-zstd: GNU Guile bindings to the zstd compression library

This directory contains bindings to the zstd compression library for
GNU Guile 3.0, 2.2, and 2.0:

https://facebook.github.io/zstd

Zstd (or “zstandard”) offers relatively high compression ratios
(typically better than gzip, not as good as lzip or xz) and a high
decompression throughput (noticeably higher than lzip or gzip).

These bindings provide a high-level port interface for in-process
compression and decompression. Here’s how you would compress a file and
store its result on disk:

#+begin_src scheme
(use-modules (zstd)
(rnrs io ports))

;; Create a compressed archive.
(call-with-output-file "compressed.zst"
(lambda (port)
(call-with-zstd-output-port port
(lambda (port)
(define data
;; Read the input file in memory.
(call-with-input-file "input-file.txt"
get-bytevector-all))

;; Write data to PORT.
(put-bytevector port data)))))
#+end_src

Decompression works similarly:

#+begin_src scheme
(call-with-input-file "compressed.zst"
(lambda (port)
(call-with-zstd-input-port port
(lambda (port)
;; Read decompressed data from PORT.
...))))
#+end_src

* Installing

With GNU Guix, you can install Guile-zstd straight of this source tree
by running:

#+begin_src sh
guix package -f guix.scm
#+end_src

See the =INSTALL= file for instructions on how to build from source
manually.

* Hacking

Using GNU Guix, you can enter a development environment by running:

#+begin_src sh
guix environment -CP -l guix.scm
#+end_src

You can authenticate the code in this repository by running:

#+begin_src sh
guix git authenticate \
afe022f7a1de5517dfeae66705dc21d94f4d2b0a \
3CE464558A84FDC69DB40CFB090B11993D9AEBB5
#+end_src

The command silently exits with zero on success, and errors out
otherwise. We recommend invoking it from ‘.git/hooks/pre-push’.

* Reporting Bugs

Please report bugs to .


Local Variables:
mode: org
ispell-local-dictionary: "american"
End: