vilan 0.8.0
Diagnostics got a standard — and every one of the compiler's 180 diagnostics was audited against it. The rules: anchor at the narrowest span that identifies the problem, in code you wrote; speak your vocabulary; name the fix when it's unambiguous; and never bury a root cause under its own consequences. What the audit shipped: "cannot find" errors now steer to the import when the name uniquely belongs to a module (cannot find type 'JsonValue' — import it first (\import std::json::JsonValue;`)`); a conflict with an inferred type points at where the inference happened — the closure's first call, the variable's initializer — as a second label at that exact spot; "has no method" anchors at the method name instead of the argument list; an error inside macro-generated code anchors at the attribute that generated it, in your file; and the near-empty "could not be resolved" residuals only appear when they're the lone signal instead of trailing a real error.
/// is the doc-comment syntax. Hover surfaces /// blocks; a plain // comment is an implementation note and stays private. The standard library is documented with it — hovering now(), format, or any std function shows its docs in the editor.
The editor understands the code, not just the text. Semantic highlighting comes from the analyzer: a generic parameter at its use site, a macro name sharing a trait's name, a method call versus a field read, a module qualifier — each colors by what it is. Hover on a constant shows its evaluated value (SIZE: i32 = 64), signatures render their context clauses, and [ before an item completes the registered macro names, derives included. Unsaved edits were already visible to dependent files as of v0.7.0; the editor now reads as precisely as it recompiles.