adler2

Rust crate for computing Adler-32 checksums (fork)

Latest version: 2.0.0 registry icon
Maintenance score
18
Safety score
100
Popularity score
71
Check your open source dependency risks. Get immediate insight about security, stability and licensing risks.
Security
  Vulnerabilities
Version Suggest Low Medium High Critical
2.0.0 0 0 0 0 0

Stability
Latest release:

2.0.0 - This version may not be safe as it has not been updated for a long time. Find out if your coding project uses this component and get notified of any reported security vulnerabilities with Meterian-X Open Source Security Platform

Licensing

Maintain your licence declarations and avoid unwanted licences to protect your IP the way you intended.

Apache-2.0   -   Apache License 2.0

Not a wildcard

Not proprietary

OSI Compliant


0BSD   -   BSD Zero Clause License

Not a wildcard

Not proprietary

OSI Compliant


MIT   -   MIT License

Not a wildcard

Not proprietary

OSI Compliant



Adler-32 checksums for Rust

This is a fork of the adler crate as the original has been archived and is no longer updated by it's author

crates.io docs.rs CI

This crate provides a simple implementation of the Adler-32 checksum, used in the zlib compression format.

Please refer to the changelog to see what changed in the last releases.

Features

  • Permissively licensed (0BSD) clean-room implementation.
  • Zero dependencies.
  • Zero unsafe.
  • Decent performance (3-4 GB/s) (see note).
  • Supports #![no_std] (with default-features = false).

Usage

Add an entry to your Cargo.toml:

[dependencies]
adler2 = "2.0.0"

Check the API Documentation for how to use the crate's functionality.

Rust version support

Currently, this crate supports all Rust versions starting at Rust 1.56.0.

Bumping the Minimum Supported Rust Version (MSRV) is not considered a breaking change, but will not be done without good reasons. The latest 3 stable Rust versions will always be supported no matter what.

Performance

Due to the way the algorithm works this crate and the fact that it's not possible to use explicit simd in safe rust currently, this crate benefits drastically from being compiled with newer cpu instructions enabled (using e.g RUSTFLAGS=-C target-feature'+sse4.1 or -C target-cpu=x86-64-v2/-C target-cpu=x86-64-v3 arguments depending on what cpu support is being targeted.) Judging by the crate benchmarks, on a Ryzen 5600, compiling with SSE 4.1 (enabled in x86-64-v2 feature level) enabled can give a ~50-150% speedup, enabling the LZCNT instruction (enabled in x86-64-v3 feature level) can give a further ~50% speedup,