fcoreutils 0.0.38

High-performance GNU coreutils replacement with SIMD and parallelism
Documentation
[package]
name = "fcoreutils"
version = "0.0.38"
edition = "2024"
license = "MIT"
description = "High-performance GNU coreutils replacement with SIMD and parallelism"
homepage = "https://github.com/AiBrush/coreutils-rs"
repository = "https://github.com/AiBrush/coreutils-rs"
readme = "README.md"
keywords = ["coreutils", "cli", "performance", "simd"]
categories = ["command-line-utilities", "filesystem"]
exclude = [
    "dist/",
    ".github/",
    "scripts/",
    "benches/",
    "instructions.md",
    "research-reference.md",
    "ARCHITECTURE.md",
    "PROGRESS.md",
    "CONTRIBUTING.md",
    "SECURITY.md",
    "CODE_OF_CONDUCT.md",
]

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

[[bin]]
name = "fwc"
path = "src/bin/fwc.rs"

[[bin]]
name = "fcut"
path = "src/bin/fcut.rs"

[[bin]]
name = "fbase64"
path = "src/bin/fbase64.rs"

[[bin]]
name = "fsha256sum"
path = "src/bin/fsha256sum.rs"

[[bin]]
name = "fsort"
path = "src/bin/fsort.rs"

[[bin]]
name = "ftr"
path = "src/bin/ftr.rs"

[[bin]]
name = "funiq"
path = "src/bin/funiq.rs"

[[bin]]
name = "fb2sum"
path = "src/bin/fb2sum.rs"

[[bin]]
name = "ftac"
path = "src/bin/ftac.rs"

[[bin]]
name = "fmd5sum"
path = "src/bin/fmd5sum.rs"

[dependencies]
# CLI argument parsing
clap = { version = "4", features = ["derive", "cargo"] }

# SIMD byte operations (auto-detects AVX2/NEON)
memchr = "2"

# Memory-mapped I/O
memmap2 = "0.9"

# Parallelism
rayon = "1"

# Hashing
blake2b_simd = "1"

# SHA-256 fallback for Apple targets (ring 0.17 doesn't compile on macOS aarch64)
sha2 = "0.10"

# MD5 hashing (ring doesn't support MD5)
md-5 = "0.10"

# Digest trait (for generic hash interface used by md-5/sha2)
digest = "0.10"

# Base64 (SIMD-accelerated)
base64-simd = "0.8"

# Regex for tac -r
regex = "1"

# System calls (readahead, madvise)
libc = "0.2"

# Error handling
thiserror = "2"
anyhow = "1"

# Fast allocator (2-3x faster than glibc malloc for small allocs)
mimalloc = { version = "0.1", default-features = false }

[dev-dependencies]
criterion = { version = "0.8", features = ["html_reports"] }
proptest = "1"
tempfile = "3"

[[bench]]
name = "wc_benchmark"
harness = false

[[bench]]
name = "hash_benchmark"
harness = false

[profile.release]
lto = "fat"
codegen-units = 1
panic = "abort"
strip = true
opt-level = 3

[profile.bench]
inherits = "release"
debug = true
strip = false

# ring for SHA-256 on non-Apple targets: BoringSSL assembly with SHA-NI/AVX2
# (ring 0.17 has compile error on macOS aarch64 / Apple Silicon)
[target.'cfg(not(target_vendor = "apple"))'.dependencies]
ring = "0.17"

# Enable ASM acceleration for hash crates on non-MSVC targets
# (sha2-asm/md5-asm use .S assembly files that MSVC cl.exe can't compile)
[target.'cfg(not(target_env = "msvc"))'.dependencies]
sha2 = { version = "0.10", features = ["asm"] }
md-5 = { version = "0.10", features = ["asm"] }