PackageTrack
Sign in Get early access

weezl

Fast LZW compression and decompression.

0.2.1 125M downloads/mo #709 most downloaded on crates.io image-rs/weezl

What this package is like to depend on

Last release 3 months ago

15 May 2026

Release timing varies

gaps range from 3 weeks to 1.5 years

Most releases are documented

notes for 14 of 16 stable releases

1 version withdrawn

withdrawn after publishing

6 years old

20 releases · first in 2020

4 releases in the last 12 months

see the full history below

Release timeline

20 releases · Jun 2020 to May 2026
2021 2022 2023 2024 2025 2026
Release Pre-release Withdrawn

Releases

latest 20
  1. 0.2.1 15 May 2026
    Release notes
    • Fix a bug that overwrote some initial entries in streams that do not use
      clear codes immediately with a full dictionary.
    Open source →
  2. 0.2.0 14 May 2026
    Release notes
    • Overhaul of the decoder algorithm, inspired by Wuffs, to write 8 bytes at once and construct a tree accordingly. Many streams are now decoded with GB/s performance (#77). See the tradeoff in the next bullet point.
    • Initialization of a decoder is now more expensive as we pre-allocate fixed size tables. This is so that decoding no longer performs bounds checks in most of its inner loops which significantly affects performance. If this is prohibitive for your use-case, please open an issue to discuss.
    • 0 and 1 bit data-sizes are now fully supported. Note that 0-bit data uses an initial 2 bit code width, and 1-bit data uses 3 bits with TIFF size switch (#67, #78).

    Fixes:

    • Decoding codes with an initial code size of 12 sometimes failed to detect malformed streams, causing a panic or malformed output (#64).
    • A small output buffer can no longer cause an erroneous NoProgress status when the progress was filling (only) the internal word buffer (#68). Decoding from a stream or other abstraction could silently forget data.
    Open source →
  3. 0.1.12 11 Nov 2025
    Release notes

    Release notes for 0.1.12

    Open source →
    Release notes
    • Further adjusted a debug assertion for TIFF compatibility. It still had one of its OR conditions formulated incorrectly, relying on equality of the code word mask and the size switch code. In TIFF we hit the limit of the code dictionary (all 12-bit words) one code later than we would detect a code switch that we need to ignore.
    Open source →
  4. 0.1.11 08 Nov 2025
    Release notes
    • Adjusted a debug assertion that handled 1-bit code sizes incorrectly in the
      decoder (relevant for TIFF but non-standard for GIF). In that case the size
      switch semantics are a bit messy.
    Open source →
    Release notes
    • Adjusted a debug assertion that handled 1-bit code sizes incorrectly in the decoder (relevant for TIFF but non-standard for GIF). In that case the size switch semantics are a bit messy.
    Open source →
  5. 0.1.10 22 May 2025
    Release notes
    • Reverted changes made in 0.1.9 to the behavior of the decoder under non
      libtiff-compatibility mode. Trying to read the decoder with an empty output
      buffer will at least inspect the next symbol and either error or indicate the
      end-of-stream accordingly.
    Open source →
    Release notes
    • Reverted changes made in 0.1.9 to the behavior of the decoder under non libtiff-compatibility mode. Trying to read the decoder with an empty output buffer will at least inspect the next symbol and either error or indicate the end-of-stream accordingly.
    Open source →
  6. 0.1.9 14 May 2025 withdrawn
    Release notes
    • Increased decoding throughput by 3—30% depending on CPU and data.
    • Added {encode,decode}::Configuration as builder types for their respective
      module. They can be cheaply cloned.
    • Added decode::Configuration::with_yield_on_full_buffer to explicitly opt-in
      to libtiff compatibility. The decoder will not read or interpret further
      symbols of the decoding stream when the output buffer is full. This enables a
      caller to stop fetching symbols and elide an end of stream marker based on
      out-of-band length information. The decoder might otherwise error, trying to
      interpret data that does not belong to the stream.
    Open source →
    Release notes
    • Increased decoding throughput by 3—30% depending on CPU and data.
    • Added {encode,decode}::Configuration as builder types for their respective module. They can be cheaply cloned.
    • Added decode::Configuration::with_yield_on_full_buffer to explicitly opt-in to libtiff compatibility. The decoder will not read or interpret further symbols of the decoding stream when the output buffer is full. This enables a caller to stop fetching symbols and elide an end of stream marker based on out-of-band length information. The decoder might otherwise error, trying to interpret data that does not belong to the stream.
    Open source →
  7. 0.1.8 22 Jan 2024
    Release notes
    • Fixed incorrect state after Decoder::reset
    • Added Debug to result types
    Open source →
  8. 0.1.7 10 Jul 2022
    Release notes
    • Implicit reset is now supported for decoding.
    Open source →
    Release notes
    • Implicit reset is now supported for decoding.
    Open source →
  9. 0.1.6 21 Apr 2022
    Release notes
    • Fixed an integer overflow and panic that could occur during decoding.
      Decoding performance may degrade after long sequences without a reset code.

    9c97e489d8f836838d497091de568cf16b117486d529ec5579233521065bd5e4 target/package/weezl-0.1.6.crate

    Open source →
    Release notes
    • Fixed an integer overflow and panic that could occur during decoding. Decoding performance may degrade after long sequences without a reset code.
    Open source →
  10. 0.1.5 17 Apr 2021
    Release notes
    • Added IntoVec adapters that simplify in-memory de- and encoding. A further
      'one-shot' interface is exposed in the Decoder and Encoder themselves
      which makes the process a one liner in the simplest cases. Contrary to
      IntoStream, these are available in all cases and do not require std.

    sha256sum:
    d8b77fdfd5a253be4ab714e4ffa3c49caf146b4de743e97510c0656cf90f1e8e target/package/weezl-0.1.5.crate

    Open source →
    Release notes
    • Added IntoVec adapters that simplify in-memory de- and encoding. A further 'one-shot' interface is exposed in the Decoder and Encoder themselves which makes the process a one liner in the simplest cases. Contrary to IntoStream, these are available in all cases and do not require std.
    Open source →
  11. 0.1.4 29 Jan 2021
    Release notes
    • Added IntoAsync adapters for asynchronous de- and encoding. The interface is implemented only in terms of futures = 0.3 traits at the moment.
    • Code sizes smaller than 2 are now allowed for decoding. Since they do not roundtrip it is still an error to use them in the decoder but this avoids accidental panicking, i.e. denial of service, in parsers.
    Open source →
  12. 0.1.3 10 Nov 2020
    Release notes
    • Fixes an issue in compression that caused some data to be lost around clear codes. This could corrupt the data stream.
    Open source →
  13. 0.1.2 23 Oct 2020
    Release notes
    • Fixes incorrect compression after Encoder::reset.
    Open source →
  14. 0.1.1 01 Oct 2020
    Release notes
    • The IntoStream types now reuse their internal buffers.
    • Added the methods set_buffer, set_buffer_size to IntoStream for both the encoder and decoder, used to control the automatic allocation.
    • Deprecated IntoStream in configurations without the std feature where the type can't even be constructed.
    Open source →
  15. 0.1.0 22 Aug 2020
    Release notes
    • Initial major release
    • Support gif and tiff code size changes
    • Rough performance numbers: On i5-4690, 8GiB DIMM DDR3 Synchronous 1600 MHz (0,6 ns) ~70MB/s encode, ~230MB/s decode
    Open source →
  16. 0.1.0-beta.1 19 Aug 2020 pre-release

    Nothing published for this version

  17. 0.1.0-beta.0 16 Aug 2020 pre-release

    Nothing published for this version

  18. 0.1.0-alpha 27 Jul 2020 pre-release

    Nothing published for this version

  19. 0.0.2 20 Jul 2020

    Nothing published for this version

  20. 0.0.1 29 Jun 2020

    Nothing published for this version

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive