47 lines
2 KiB
TOML
47 lines
2 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"
|
|
# Pure-Rust TLS backend, opt-in via `tls_backend = rustls` (default stays openssl).
|
|
# ring provider (no aws-lc-rs); its `unsafe` stays internal like every other crate.
|
|
rustls = { version = "0.23", default-features = false, features = ["ring", "std", "tls12", "logging"] }
|
|
rustls-pemfile = "2"
|
|
|
|
[dev-dependencies]
|
|
# integration tests spawn the built binary and act as a TLS client against it
|
|
openssl = "0.10"
|
|
# property-based fuzzing (parsers) + deterministic S2S simulation (convergence).
|
|
proptest = "1"
|
|
|
|
[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
|