map2fig 0.7.6

Fast, publication-quality HEALPix sky map visualization in Rust
Documentation
[package]
name = "map2fig"
version = "0.7.6"
edition = "2024"
authors = ["Duncan Watts"]
description = "Fast, publication-quality HEALPix sky map visualization in Rust"
documentation = "https://docs.rs/map2fig"
homepage = "https://github.com/dncnwtts/map2fig"
repository = "https://github.com/dncnwtts/map2fig"
license = "MIT"
keywords = ["healpix", "astronomy", "visualization", "mollweide", "fits"]
categories = ["science", "visualization"]
exclude = [
    "docs/",
    "examples/outputs/",
    "examples/output/",
    "perf.data",
    "perf.data.old",
    "target/",
    "test*.png",
    "smoke.png",
    "out*.txt",
]

[dependencies]
cdshealpix = "0.9"
image = "0.25"
imageproc = "0.26"
ab_glyph = "0.2"
fitsrs = "0.4"
rand = "0.10"
clap = { version = "4", features = ["derive"] }
cairo-rs = { version = "0.21", features = ["pdf"] }
sha2 = "0.10"
tempfile = "3"
directories = "6"
serde_json = "1.0"
rayon = "1.8"
libm = "0.2"
memmap2 = "0.9"
wide = "1.1"
lru = "0.12"
parking_lot = "0.12"
once_cell = "1.20"
libc = "0.2"

[features]
debug_overlay = []
simd = []
nightly_simd = []
uncompressed-pdf = []

# Suppress false positives from cargo-machete (these are used indirectly)
[package.metadata.cargo-machete]
ignored = ["cdshealpix", "libm"]

[dev-dependencies]
proptest = "1.4"
criterion = { version = "0.5", features = ["html_reports"] }
divan = "0.1"

[profile.dev]
# Ultra-fast dev builds - skip debug info entirely
# This significantly speeds up compilation and reduces target/ size
debug = 0              # Skip compiling debug info
strip = "debuginfo"    # Skip linking debug info (even faster than split-debuginfo)
# trade-off: backtraces will only show function names, not line numbers
# Uncomment for compromise (slower build, full backtraces):
# debug = "line-tables-only"
# split-debuginfo = "packed"

# Standard release profile for maximum optimization
[profile.release]
opt-level = 3
lto = "thin"
codegen-units = 1
strip = false
debug = true
panic = "abort"

# Fast release profile for quicker compilation (use with --profile release-fast)
# Useful for CI/CD when you don't need maximum optimization
[profile.release-fast]
inherits = "release"
opt-level = 2          # Reduce optimization level for faster compilation
lto = "thin"           # Use thin LTO for 80% of optimization benefit, 30% faster
codegen-units = 16    # More parallelism at slight optimization cost
strip = true           # Remove debug symbols for smaller binary

# Optimized profile for build scripts and proc-macros (from corrode.dev tips)
[profile.dev.build-override]
opt-level = 2

[profile.release.build-override]
opt-level = 3

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

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