echoIRCd/Cargo.toml

41 lines
1.6 KiB
TOML

[package]
name = "echoircd"
version = "0.1.0"
edition = "2021"
description = "A small, dependency-light IRC daemon in Rust with a modular command/mode/module API."
license = "MIT"
[[bin]]
name = "echoircd"
path = "src/main.rs"
[lib]
name = "echoircd"
path = "src/lib.rs"
[dependencies]
# TLS backend: openssl. The crate keeps all `unsafe` internal, so the daemon
# stays `#![forbid(unsafe_code)]`. A pure-Rust `rustls` backend can slot in beside it.
openssl = "0.10"
# epoll/kqueue reactor for the client socket engine — a minimal readiness layer
# (no async runtime). Lets one thread drive tens of thousands of connections
# instead of 2 OS threads per client. Its `unsafe` stays internal (like openssl).
mio = { version = "1", features = ["os-poll", "net"] }
# aHash — DoS-resistant (random-seeded) hasher, ~2-3x faster than SipHash on the
# small keys the router hammers (uid/nick/channel lookups). See crate::map.
ahash = "0.8"
# mimalloc — global allocator; big throughput win on the many-small-String churn
# of per-message formatting. `unsafe` stays internal to the crate.
mimalloc = "0.1"
# SIMD byte search — accelerates the newline scan in the line framer.
memchr = "2"
[dev-dependencies]
# integration tests spawn the built binary and act as a TLS client against it
openssl = "0.10"
[profile.release]
opt-level = 3
lto = "fat" # cross-crate inlining — the router/format hot paths inline through mio/openssl
codegen-units = 1 # one unit = best optimisation (slower build, faster binary)
panic = "unwind" # REQUIRED: the core isolates handler panics with catch_unwind