Map: core / ty
core/src/ty.rs and core/src/ty/ are the type language as data, below the
IR and the checker: the IR’s schemes and
sites name it, and nothing in it reads a unifier or a runtime value.
ty.rs:Ty,CompTy,Grade,Row,Labeland the unification-variable newtypes;TAG_PREFIX, the sigil of a tag, written once.ty/kind.rs:Kind, the closed set of predicates a type variable carries (number,comparable,scalar,sized,data), their meet, and what a head is.ty/scheme.rs:Scheme, a type under quantifiers, and the weak-variable sets a scheme did not quantify.ty/exec_arg.rs:RefusedArg, the shapesexecve(2)has no argument for, one match on aHead.ty/fmt.rs:DisplayforTyandScheme; oneFmtCtxnames a shared variable the same in every type a diagnostic prints.ty/site.rs: the data of aSite, a boundary’s checked type frozen as a graph of nodes (Node,Shape,Fields,Tail) naming its unit by aUnitId— an OS nonce drawn once per process and a count, so unique in every process that meets it, a baked prelude unit’s included.Fixingsis not in the code: it is the session’s table of what each unit’scomparablevariables were fixed to, keyed by(UnitId, var), which a session’s threads share and a new session snapshots (shell-state). The checker builds aSite(typecheck/site.rs), one freshUnitIdper unit, and the runtime walks it against the running session’s table (types/admit.rs).
Str, the shared immutable string a Value::String holds, lives in
core/src/text.rs.