Repository navigation
v0.11.6
Rebuild note: the graph format changed, so the first start after the upgrade builds each tree once.
Calls are linked only where the code says so
- A method on a value of unknown type is a guess.
x.is_empty()linked to the one tree method of that name, in whatever crate or package it lived;cyclesandcheck_architecturethen reported cycles and violations the build system rules out. Such a call is nowambiguous, so theinferredfloor ofcyclesand ofdenyrules no longer sees it.impact,find_callersandaffected_testsstill include it. - A known type outside the tree holds its own methods.
labels.get()withlabels: HashMapno longer links to a treeget. A type in the tree is followed strictly, and a Rust method is found in everyimplof its type, wherever the crate puts it. - Rust:
use crate::…,super::…andself::…(lists and aliases included) scope a call to the file they name, so an imported function isinferredrather thanambiguous. A path keeps all its segments, sostd::fs::read_dirnever names the tree, and a path is never read as a value of the same name.f(x).g()names no receiver;Variant(x)andTupleStruct(x)are no calls. A name bound to a field (let bank = &mut self.data;) or a loop over fields of one type takes that type. - A placeholder reached from several languages links only into one of them.
Tools
detect_changeslists definitions the change removed or renamed (removed_symbols) and every definition still calling one (risk.dangling_callers), which raises the risk to high;affected_teststakes those callers as seeds. All definitions of a new, untracked file count as changed.affected_testslists a production helper namedtest_*only where a runner collects tests by name (Python, Ruby); elsewhere the path or a test attribute decides.find_unusedno longer counts a local of the same name (let x = …) as a use, and leaves out methods of a Rustimpl Trait for Type.explain_nodenames the same callers asfind_callers, once each; its similar definitions come without placeholders and most alike first.- The
cyclesdescription states its real default.
Servers
- A backend reached at the moment it ends no longer drops the client that just connected.
--lingerand--sleep-afterare checked before a backend starts; an edited language rule file, and a rebuilt binary of the same version, get a backend of their own.
Releases
- Each release is now published to the MCP registry by the release workflow.
Install
- Homebrew:
brew install attackwave/glasir/glasir - Scoop: add the bucket
Attackwave/scoop-glasir, then runscoop install glasir