CodeVetter · Repo Unpack · Contributor handoff
actix/actix-web
Start at the affected crate's manifest and follow the service or protocol boundary implicated by the task. Preserve worker-local ownership, shared-data registration, middleware order, and feature-disabled compilation when making future changes. Tests and CI were inspected, not executed, and this brief is bounded rather than exhaustive. The commands below describe available future validation; none were run during this read-only investigation.
- Read Cargo.toml, the affected package manifest, and justfile first: workspace patches ensure cross-crate edits use local implementations, and root lint/MSRV settings apply to member crates.
- For request dispatch changes, inspect AppInitService::call, AppRouting::call, ResourceService::call, and handler_service together; guard selection, request reuse, extraction failure, and response conversion span these boundaries.
- Construct shared Data outside HttpServer::new and clone it into apps; preserve nearest-layer lookup. Tokio block_in_place is incompatible with worker runtimes, and rt::spawn requires an Actix runtime or manually configured LocalSet.
- Preserve optional-feature boundaries: defaults include macros, compression, cookies, HTTP/2, unicode, compatibility, and WebSockets; secure cookies and TLS are separate, and __tls/__compress are private feature markers.
- For separately authorized validation, start with the affected crate/test filter, then use just test and just test-docs; consult just check-min/check-default/clippy for feature and lint checks. Existing scripts separate Cargo macro suites from nextest and include a named test exclusion.
- Macro edits need runtime registration tests plus compiler fixtures: trybuild suites are MSRV-gated, and routing fixtures cover malformed paths, methods, scope attributes, and runtime macros.
- Check compatibility before changing public signatures or macro visibility: compat-routing-macros-force-pub forces generated handler structs public, semver CI currently reports rather than fails, and actix-web-actors is deprecated and omitted from the root member list.
- Choose tests matching the actual boundary: init_service omits wire codecs, traversal tests exercise lexical paths, multipart tests exercise discarded-byte accounting, and shutdown tests exercise application-data lifetime during incomplete bodies.