What survives a port, and what doesn't
Porting a Go framework to Rust separates design from idiom. Which decisions survived the move, which were habits, and how to tell them apart.


Porting a Go framework to Rust separates design from idiom. Which decisions survived the move, which were habits, and how to tell them apart.

Making OS-keychain support provably absent from a Go binary for regulated or air-gapped builds, using a registry and a blank import.

A primer on the six Rust concepts you need to follow the rest: ownership and borrowing, traits, enums and match, Result and the question mark.

Credential storage for a Go CLI: an env-var reference by default, an opt-in OS keychain, and plaintext only as a last resort and banned in CI.

A user-settable AI base URL decides where your API key gets sent. Validating it to reject userinfo, non-HTTPS schemes and redirects.

Catching secrets by shape rather than by name: patterns for provider key prefixes, URL userinfo and auth headers, plus a fuzzy fallback.

Every finding in a security audit reduced to untrusted input reaching a powerful operation unchecked. One checked chokepoint per boundary fixes it.

Why a write-once boolean still needs a mutex: the Go memory model needs a happens-before edge before another goroutine is guaranteed to see it.

Reassigning a package-level function variable in tests is a latent data race that t.Parallel exposes. The fix is structural, not another lock.

Running OpenSSF Scorecard on a Go project flagged mutable action tags, over-broad workflow token permissions, and a missing maintenance signal.
