Proof of concept mechanical port of ircnet/ircd to Rust as part of a bit about C being insecure for network services
0

Configure Feed

Select the types of activity you want to include in your feed.

ircd.rs / docs / claude-memory / project-name-leveva-p10.md
2.8 kB

name: project-name-leveva-p10 description: "the idiomatic-Rust end state of this ircd port ships under the project name "leveva"; rename happens at Phase 10" metadata: node_type: memory type: project originSessionId: bae0dadf-c2f9-4e1f-8521-413d1df9ceb7#

The all-Rust product of this ircd port is to be named leveva. Per PLAN.md, Phase 10 (P10) is where the project starts being called leveva — the P10 row was renamed to "Rename to leveva + typed identifier string types" and its scope now includes renaming the workspace crates/binaries/docs from the ircd* mechanical-port names to leveva.

Why: user's chosen name for the final all-Rust product; not derivable from the code (the workspace crates are ircd-rs/ircd-common/iauth-rs/etc. through P0–P9). User explicitly set the rename to begin at Phase 10 (2026-06-06), superseding an earlier note that put it at P8.

How to apply: the faithful-port + cleanup phases (P0–P9) keep the ircd-* names; at P10, rename to leveva (Cargo.toml package names, binary artifact, README/docs). See [[rust-migration-plan]].

Update 2026-06-07 — leveva crate STARTED EARLY (string layer): the user pulled P10's typed-string foundation forward (right after P7 completed, before P8/P9). A new greenfield leveva/ workspace member now exists — std-only, NO ircd-sys/ircd-common dep, no cref_ oracle, ordinary Rust unit/doc tests. Modules: casemap (textbook RFC 1459 fold — A-Z↔a-z PLUS Scandinavian [↔{ \↔| ]↔} ~↔^; deliberately differs from this daemon's ASCII-only tolowertab in common/match.c), string (IrcStr/IrcString casemapping Eq/Ord/Hash, Borrow<IrcStr>, NUL/CR/LF reject, IrcStringBuilder), ident (validating newtypes via ident_newtype! macro: Nick/ChanName/Sid/Uid/Cid/ServerName/UserName/HostName, grounded in struct_def.h lengths + char_atribs NVALID + do_nick_name + s_id.c), message (Message/MessageBuilder → 512-safe CRLF wire). The crate/binary rename of the ircd-* crates is still deferred to the real P10 slot. Progress: docs/progress-log/p10.md; plan: docs/superpowers/plans/2026-06-07-leveva-rfc1459-string.md.

Update 2026-06-08 — leveva is now THE destination, not a late rename (see [[leveva-pivot-p9-retired]]). The roadmap pivoted: rather than transforming the mechanical port in place (old P9–P12), leveva is a full greenfield rewrite that grows to feature parity differentially-tested against ircd-common (the oracle), which is then deleted. P9 retired. So the "rename happens at P10" framing is superseded — there is no rename of ircd-*; leveva is its own crate from the start and ircd-common/ircd-rs get deleted at P12, not renamed.