diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 145d73e..dc4e738 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -96,7 +96,7 @@ jobs: use-tool-cache: true - name: Run cargo-tarpaulin - run: cargo tarpaulin --all-features --locked --timeout 600 --out Xml -- --test-threads 1 + run: cargo tarpaulin --locked --timeout 600 --out Xml -- --test-threads 1 - name: Upload coverage to codecov uses: codecov/codecov-action@v4 @@ -152,6 +152,8 @@ jobs: - name: Check semver uses: obi1kenobi/cargo-semver-checks-action@v2 + with: + feature-group: default-features minimum_rust_version: runs-on: ubuntu-latest @@ -160,20 +162,20 @@ jobs: - uses: actions-rs/toolchain@v1 with: - toolchain: 1.65.0 + toolchain: 1.74.0 override: true - name: check if README matches MSRV defined here - run: grep '1.65.0' README.md + run: grep '1.74.0' README.md - name: check if Cargo.toml matches MSRV defined here - run: grep 'rust-version = "1.65"' Cargo.toml + run: grep 'rust-version = "1.74"' Cargo.toml - name: Run tests uses: actions-rs/cargo@v1 with: command: test - args: --all-features --no-fail-fast --locked + args: --no-fail-fast --locked wasm: runs-on: ubuntu-latest diff --git a/Cargo.lock b/Cargo.lock index 0dfd532..3da6573 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -18,15 +18,16 @@ dependencies = [ ] [[package]] -name = "atty" -version = "0.2.14" +name = "anes" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" -dependencies = [ - "hermit-abi", - "libc", - "winapi", -] +checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" + +[[package]] +name = "anstyle" +version = "1.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" [[package]] name = "autocfg" @@ -41,15 +42,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b64fd8980fb64af5951bc05de7772b598150a6f7eac42ec17f73e8489915f99b" dependencies = [ "flate2", - "thiserror", + "thiserror 1.0.61", ] -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - [[package]] name = "bitflags" version = "2.5.0" @@ -124,17 +119,58 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "ciborium" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e" +dependencies = [ + "ciborium-io", + "ciborium-ll", + "serde", +] + +[[package]] +name = "ciborium-io" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757" + +[[package]] +name = "ciborium-ll" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9" +dependencies = [ + "ciborium-io", + "half", +] + [[package]] name = "clap" -version = "2.34.0" +version = "4.5.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "769b0145982b4b48713e01ec42d61614425f27b7058bda7180a3a41f30104796" +dependencies = [ + "clap_builder", +] + +[[package]] +name = "clap_builder" +version = "4.5.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" +checksum = "1b26884eb4b57140e4d2d93652abfa49498b938b3c9179f9fc487b0acc3edad7" dependencies = [ - "bitflags 1.3.2", - "textwrap", - "unicode-width", + "anstyle", + "clap_lex", ] +[[package]] +name = "clap_lex" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" + [[package]] name = "cloudflare-zlib-sys" version = "0.3.3" @@ -164,24 +200,24 @@ dependencies = [ [[package]] name = "criterion" -version = "0.3.6" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b01d6de93b2b6c65e17c634a26653a29d107b3c98c607c765bf38d041531cd8f" +checksum = "f2b12d017a929603d80db1831cd3a24082f8137ce19c69e6447f54f5fc8d692f" dependencies = [ - "atty", + "anes", "cast", + "ciborium", "clap", "criterion-plot", - "csv", + "is-terminal", "itertools", - "lazy_static", "num-traits", + "once_cell", "oorandom", "plotters", "rayon", "regex", "serde", - "serde_cbor", "serde_derive", "serde_json", "tinytemplate", @@ -190,9 +226,9 @@ dependencies = [ [[package]] name = "criterion-plot" -version = "0.4.5" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2673cc8207403546f45f5fd319a974b1e6983ad1a3ee7e6041650013be041876" +checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1" dependencies = [ "cast", "itertools", @@ -224,25 +260,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" [[package]] -name = "csv" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac574ff4d437a7b5ad237ef331c17ccca63c46479e5b5453eb8e10bb99a759fe" -dependencies = [ - "csv-core", - "itoa", - "ryu", - "serde", -] - -[[package]] -name = "csv-core" -version = "0.1.11" +name = "crunchy" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5efa2b3d7902f4b634a20cae3c9c4e6209dc4779feb6863329607560143efa70" -dependencies = [ - "memchr", -] +checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929" [[package]] name = "either" @@ -274,6 +295,7 @@ checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" dependencies = [ "cloudflare-zlib-sys", "crc32fast", + "libz-ng-sys", "libz-sys", "miniz_oxide", ] @@ -286,18 +308,19 @@ checksum = "3a471a38ef8ed83cd6e40aa59c1ffe17db6855c18e3604d9c4ed8c08ebc28678" [[package]] name = "half" -version = "1.8.3" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b43ede17f21864e81be2fa654110bf1e793774238d86ef8555c37e6519c0403" +checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888" +dependencies = [ + "cfg-if", + "crunchy", +] [[package]] name = "hermit-abi" -version = "0.1.19" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" -dependencies = [ - "libc", -] +checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" [[package]] name = "iovec" @@ -308,6 +331,17 @@ dependencies = [ "libc", ] +[[package]] +name = "is-terminal" +version = "0.4.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e19b23d53f35ce9f56aebc7d1bb4e6ac1e9c0db7ac85c8d1760c04379edced37" +dependencies = [ + "hermit-abi", + "libc", + "windows-sys", +] + [[package]] name = "itertools" version = "0.10.5" @@ -341,12 +375,6 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "lazy_static" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" - [[package]] name = "libc" version = "0.2.155" @@ -375,6 +403,16 @@ dependencies = [ "pkg-config", ] +[[package]] +name = "libz-ng-sys" +version = "1.1.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cee1488e961a80d172564fd6fcda11d8a4ac6672c06fe008e9213fa60520c2b" +dependencies = [ + "cmake", + "libc", +] + [[package]] name = "libz-sys" version = "1.1.18" @@ -417,7 +455,7 @@ dependencies = [ [[package]] name = "niffler" -version = "2.6.0" +version = "2.7.0" dependencies = [ "bgzip", "bzip2", @@ -426,7 +464,7 @@ dependencies = [ "flate2", "liblzma", "tempfile", - "thiserror", + "thiserror 2.0.11", "zstd", ] @@ -487,9 +525,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.85" +version = "1.0.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22244ce15aa966053a896d1accb3a6e68469b97c7f33f284b99f0d576879fc23" +checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99" dependencies = [ "unicode-ident", ] @@ -558,7 +596,7 @@ version = "0.38.34" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" dependencies = [ - "bitflags 2.5.0", + "bitflags", "errno", "libc", "linux-raw-sys", @@ -589,16 +627,6 @@ dependencies = [ "serde_derive", ] -[[package]] -name = "serde_cbor" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bef2ebfde456fb76bbcf9f59315333decc4fda0b2b44b420243c11e0f5ec1f5" -dependencies = [ - "half", - "serde", -] - [[package]] name = "serde_derive" version = "1.0.203" @@ -623,9 +651,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.66" +version = "2.0.96" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5" +checksum = "d5d0adab1ae378d7f53bdebc67a39f1f151407ef230f0ce2883572f5d8985c80" dependencies = [ "proc-macro2", "quote", @@ -645,21 +673,21 @@ dependencies = [ ] [[package]] -name = "textwrap" -version = "0.11.0" +name = "thiserror" +version = "1.0.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" +checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" dependencies = [ - "unicode-width", + "thiserror-impl 1.0.61", ] [[package]] name = "thiserror" -version = "1.0.61" +version = "2.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" +checksum = "d452f284b73e6d76dd36758a0c8684b1d5be31f92b89d07fd5822175732206fc" dependencies = [ - "thiserror-impl", + "thiserror-impl 2.0.11", ] [[package]] @@ -673,6 +701,17 @@ dependencies = [ "syn", ] +[[package]] +name = "thiserror-impl" +version = "2.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26afc1baea8a989337eeb52b6e72a039780ce45c3edfcc9c5b9d112feeb173c2" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "tinytemplate" version = "1.2.1" @@ -700,12 +739,6 @@ version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" -[[package]] -name = "unicode-width" -version = "0.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" - [[package]] name = "vcpkg" version = "0.2.15" @@ -786,22 +819,6 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - [[package]] name = "winapi-util" version = "0.1.8" @@ -811,12 +828,6 @@ dependencies = [ "windows-sys", ] -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - [[package]] name = "windows-sys" version = "0.52.0" diff --git a/Cargo.toml b/Cargo.toml index 68e8db3..3d02ed5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "niffler" -version = "2.6.0" +version = "2.7.0" authors = ["Pierre Marijon ", "Luiz Irber "] description = "Simple and transparent support for compressed files" license = "MIT/Apache-2.0" @@ -9,7 +9,7 @@ homepage = "https://github.com/luizirber/niffler" readme = "README.md" documentation = "https://docs.rs/niffler" edition = "2021" -rust-version = "1.65" +rust-version = "1.74" [features] default = ["bz2", "lzma", "xz", "gz", "bgz", "zstd"] @@ -29,6 +29,7 @@ lzma_tokio = ["liblzma/tokio"] # flate2 feature transitivity gz_zlib = ["flate2/zlib"] gz_zlib-ng-compat = ["flate2/zlib-ng-compat"] +gz_zlib-ng = ["flate2/zlib-ng"] gz_cloudflare_zlib = ["flate2/cloudflare_zlib"] gz_rust_backend = ["flate2/rust_backend"] @@ -38,16 +39,18 @@ xz_tokio = ["liblzma/tokio"] [dependencies] cfg-if = "1.0" -thiserror = "1.0" -bzip2 = { version = "0.4.4", optional = true} +thiserror = "2.0" +bzip2 = { version = "0.4.4", optional = true } flate2 = { version = "1.0", optional = true } liblzma = { version = "0.3", optional = true } -bgzip = { version = "0.3", optional = true, default-features = false, features = ["rust_backend"] } +bgzip = { version = "0.3", optional = true, default-features = false, features = [ + "rust_backend", +] } zstd = { version = "0.13", optional = true } [dev-dependencies] tempfile = "3" -criterion = "0.3" +criterion = "0.5" [[bench]] name = "detect_format" @@ -80,6 +83,7 @@ denylist = [ # flate2 feature transitivity "gz_zlib", + "gz_zlib-ng", "gz_zlib-ng-compat", "gz_cloudflare_zlib", "gz_rust_backend", diff --git a/README.md b/README.md index 5a3e7d0..b1714a9 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,7 @@ it will throw a runtime error. ## Minimum supported Rust version -Currently the minimum supported Rust version is 1.65.0. +Currently the minimum supported Rust version is 1.74.0. ## Similar project diff --git a/src/level.rs b/src/level.rs index 8db82cc..d251310 100644 --- a/src/level.rs +++ b/src/level.rs @@ -5,7 +5,7 @@ /// For bzip2: /// - `One` is convert in `bzip2::Compression::Fastest`, /// - `Nine` in `bzip2::Compression::Best` -/// and other value is convert in `bzip2::Compression::Default. +/// and other value is convert in `bzip2::Compression::Default. #[derive(Debug, PartialEq, Eq, Clone, Copy)] pub enum Level { Zero, diff --git a/src/lib.rs b/src/lib.rs index 8a2eb09..9659d3c 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -3,7 +3,7 @@ //! //! This library provides two main features: //! - sniffs out compression formats from input files and return a -//! Read trait object ready for consumption. +//! `Read` trait object ready for consumption. //! - Create a Writer initialized with compression ready for writing. //! //! The goal is to lower the barrier to open and use a file, especially in