exarch-core 0.7.0

Memory-safe archive extraction library with security validation
Documentation
# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2024"
rust-version = "1.98.0"
name = "exarch-core"
version = "0.7.0"
authors = ["bug-ops"]
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Memory-safe archive extraction library with security validation"
homepage = "https://github.com/bug-ops/exarch"
readme = "README.md"
keywords = [
    "archive",
    "extraction",
    "security",
    "tar",
    "zip",
]
categories = [
    "compression",
    "filesystem",
]
license = "MIT OR Apache-2.0"
repository = "https://github.com/bug-ops/exarch"
resolver = "2"

[features]
testing = []

[lib]
name = "exarch_core"
path = "src/lib.rs"

[[example]]
name = "create_archive"
path = "examples/create_archive.rs"

[[example]]
name = "dhat_creation"
path = "examples/dhat_creation.rs"

[[example]]
name = "dhat_extraction"
path = "examples/dhat_extraction.rs"

[[test]]
name = "empty_entry_name"
path = "tests/empty_entry_name.rs"

[[test]]
name = "integration_tests"
path = "tests/integration_tests.rs"

[[test]]
name = "link_file_count"
path = "tests/link_file_count.rs"

[[test]]
name = "link_target_bound"
path = "tests/link_target_bound.rs"

[[test]]
name = "property_tests"
path = "tests/property_tests.rs"
required-features = ["testing"]

[[test]]
name = "sevenz_decode_memory"
path = "tests/sevenz_decode_memory.rs"

[[test]]
name = "sevenz_entry_classifier"
path = "tests/sevenz_entry_classifier.rs"

[[test]]
name = "sevenz_integration"
path = "tests/sevenz_integration.rs"

[[test]]
name = "sevenz_reparse_point"
path = "tests/sevenz_reparse_point.rs"

[[test]]
name = "sevenz_root_entry"
path = "tests/sevenz_root_entry.rs"

[[test]]
name = "sevenz_stream_map"
path = "tests/sevenz_stream_map.rs"

[[test]]
name = "sevenz_unix_symlink"
path = "tests/sevenz_unix_symlink.rs"

[[test]]
name = "skip_duplicates_integration"
path = "tests/skip_duplicates_integration.rs"

[[test]]
name = "symlink_parent_resolution"
path = "tests/symlink_parent_resolution.rs"

[[test]]
name = "tar_alloc_bound"
path = "tests/tar_alloc_bound.rs"

[[test]]
name = "tar_directory_name_payload"
path = "tests/tar_directory_name_payload.rs"

[[test]]
name = "tar_multi_member"
path = "tests/tar_multi_member.rs"

[[test]]
name = "tar_root_entry"
path = "tests/tar_root_entry.rs"

[[test]]
name = "tar_special_entry_parity"
path = "tests/tar_special_entry_parity.rs"

[[test]]
name = "ui"
path = "tests/ui.rs"

[[test]]
name = "verify_integrity"
path = "tests/verify_integrity.rs"

[[test]]
name = "xz_decoder_memory"
path = "tests/xz_decoder_memory.rs"

[[test]]
name = "zip_corpus"
path = "tests/zip_corpus.rs"

[[test]]
name = "zip_declared_size"
path = "tests/zip_declared_size.rs"

[[test]]
name = "zip_family_integration"
path = "tests/zip_family_integration.rs"

[[test]]
name = "zip_root_dir_entry"
path = "tests/zip_root_dir_entry.rs"

[[test]]
name = "zip_unsupported_method"
path = "tests/zip_unsupported_method.rs"

[[test]]
name = "zip_zero_compressed"
path = "tests/zip_zero_compressed.rs"

[[bench]]
name = "creation"
path = "benches/creation.rs"
harness = false

[[bench]]
name = "extraction"
path = "benches/extraction.rs"
harness = false

[[bench]]
name = "progress"
path = "benches/progress.rs"
harness = false

[[bench]]
name = "validation"
path = "benches/validation.rs"
harness = false
required-features = ["testing"]

[dependencies.bzip2]
version = "0.6"

[dependencies.flate2]
version = "1.1"

[dependencies.lzma-rust2]
version = "0.23"
features = ["std"]
default-features = false

[dependencies.rustc-hash]
version = "2.1"

[dependencies.sevenz-rust2]
version = "0.24"

[dependencies.smallvec]
version = "1.16"

[dependencies.tar]
version = "0.4"

[dependencies.tempfile]
version = "3.27"

[dependencies.thiserror]
version = "2.0"

[dependencies.time]
version = "0.3"

[dependencies.typed-path]
version = "0.13"
default-features = false

[dependencies.walkdir]
version = "2.5"

[dependencies.xz2]
version = "0.1"
features = ["static"]

[dependencies.zip]
version = "9.1"
features = [
    "deflate",
    "deflate64",
    "bzip2",
    "zstd",
    "time",
]
default-features = false

[dependencies.zstd]
version = "0.14"

[dev-dependencies.criterion]
version = "0.8"

[dev-dependencies.dhat]
version = "0.3"

[dev-dependencies.proptest]
version = "1.12"

[dev-dependencies.trybuild]
version = "1.0"

[target.'cfg(target_os = "macos")'.dependencies.unicode-normalization]
version = "0.1.26"

[target."cfg(unix)".dependencies.libc]
version = "0.2"

[lints.clippy]
assert_is_empty = "allow"
cast_precision_loss = "allow"
expect_used = "warn"
missing_const_for_fn = "allow"
no_effect_underscore_binding = "allow"
struct_excessive_bools = "allow"
unnecessary_literal_bound = "allow"
unwrap_used = "warn"

[lints.clippy.all]
level = "warn"
priority = -1

[lints.clippy.nursery]
level = "warn"
priority = -1

[lints.clippy.pedantic]
level = "warn"
priority = -1

[lints.rust]
missing_docs = "warn"
unsafe_code = "deny"

[lints.rust.unexpected_cfgs]
level = "warn"
priority = 0
check-cfg = ["cfg(fuzzing)"]