A pure OCaml library implementing DEFLATE, Zlib, Gzip, and LZO compression/decompression algorithms.
Decompress is a pure OCaml library that implements several standard compression and decompression algorithms, including DEFLATE, Zlib, Gzip, and LZO. It provides a portable, dependency-free solution for handling compressed data within OCaml applications, particularly in environments where external C libraries are undesirable or unavailable.
OCaml developers working on systems requiring compression/decompression, especially those targeting MirageOS unikernels, JavaScript compilation via js_of_ocaml, or projects needing fine-grained control over memory and I/O.
Developers choose Decompress for its pure OCaml implementation, which eliminates C dependencies and ensures cross-platform compatibility, combined with its low-level control over allocation and non-blocking I/O for high-performance and resource-efficient applications.
Pure OCaml implementation of Zlib.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Implements compression algorithms entirely in OCaml, enabling cross-platform use including JavaScript via js_of_ocaml without external C dependencies, as stated in the README.
Handles DEFLATE, Zlib, Gzip, and LZO formats through dedicated sub-packages, providing versatile compression options for various use cases.
Offers non-blocking I/O loops that integrate with asynchronous runtimes like Lwt or Async, allowing developers to manage input/output precisely, as shown in the example loop.
Allows re-use of buffers and windows across processes to minimize allocations, crucial for resource-constrained environments like MirageOS, with examples in the README.
Includes a simplified API similar to camlzip to ease adoption for newcomers, providing an easier entry point alongside the low-level controls.
Requires careful handling of checkseum dependencies, with linking errors possible without dune, as highlighted in the README issue #47, adding build system friction.
The low-level API demands manual control over I/O and allocation, which can be overwhelming for developers seeking simple drop-in compression solutions.
Being pure OCaml, it may have performance overheads compared to optimized C libraries like zlib, though benchmarks are provided, limiting use in speed-critical applications.