                                                              -*- org -*-
#+TITLE: Guile-zlib NEWS – history of user-visible changes
#+STARTUP: content hidestars

Copyright © 2021, 2024-2025 Ludovic Courtès <ludo@gnu.org>

  Copying and distribution of this file, with or without modification,
  are permitted in any medium without royalty provided the copyright
  notice and this notice are preserved.

Please report bugs at <https://notabug.org/guile-zlib/guile-zlib>.

* Changes in 0.2.2 (compared to 0.2.1)

** Fix ‘uncompress’ procedure on 32-bit systems

The ‘uncompress’ procedure would reportedly cause crashes on 32-bit
PowerPC systems and could lead to buffer overflows on other 32-bit
systems.

** Adjust test for zlib-ng

The “gzip output port, error” test would fail when using zlib-ng instead
of zlib.  This is now fixed.

* Changes in 0.2.1 (compared to 0.2.0)

** Fix wrong-type-argument error that could occur in ‘uncompress’

‘uncompress’ could throw to ‘wrong-type-arg’, “expecting exact integer”,
depending on the size of its input bytevector.

* Changes in 0.2.0 (compared to 0.1.0)

** Improve heuristics of bytevector size calculation in ‘uncompress’

   ‘uncompress’ now makes a better job at guessing the size of the
   output bytevector.

** ‘make-zlib-input-port’ & co. inherit the input port’s encoding

   ‘make-gzip-input-port’, ‘make-gzip-output-port’,
   ‘make-zlib-output-port’, and ‘make-zlib-input-port’ now inherit the
   encoding of their input port.

** ‘zlib-error’ exceptions from gz* procedures now include accurate info

   ‘zlib-error’ exceptions thrown by the gz* family of procedures now
   include a correct error code and optionally an error message.
   Exceptions now have one of the following forms:

     (zlib-error PROC)
     (zlib-error PROC CODE)
     (zlib-error PROC CODE MESSAGE)

** ‘call-with-*’ procedures no longer use ‘dynamic-wind’

   Previously ‘call-with-zlib-input-port’ and other similar procedures
   would use ‘dynamic-wind’ to close the zlib/gzip port both for local
   and non-local exits from the given procedure.  Since this does not
   play well with delimited continuations, notably used in Fibers, this
   use of ‘dynamic-wind’ has been replaced by a ‘catch #t’ form.

* Changes in 0.1.0 (compared to 0.0.1)

** New procedures: ‘make-zlib-input-port’, ‘make-zlib-output-port’

   These procedures and the companion ‘call-with-zlib-*’ procedures
   provide an alternative to the ‘make-gzip-*’ and ‘call-with-gzip-*’
   procedures; unlike those, they operate on all types of ports, not
   just file ports.

   These procedures also support multiple formats: raw “deflate”,
   “zlib”, and “gzip”.

** New ‘compress’ and ‘uncompress’ procedures

   These procedures support compression/decompression of individual
   bytevectors.
