Skip to content

v0.11.6

Choose a tag to compare

@github-actions github-actions released this 07 Nov 23:56
· 157 commits to main since this release
9035886

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; cycles and check_architecture then reported cycles and violations the build system rules out. Such a call is now ambiguous, so the inferred floor of cycles and of deny rules no longer sees it. impact, find_callers and affected_tests still include it.
  • A known type outside the tree holds its own methods. labels.get() with labels: HashMap no longer links to a tree get. A type in the tree is followed strictly, and a Rust method is found in every impl of its type, wherever the crate puts it.
  • Rust: use crate::…, super::… and self::… (lists and aliases included) scope a call to the file they name, so an imported function is inferred rather than ambiguous. A path keeps all its segments, so std::fs::read_dir never names the tree, and a path is never read as a value of the same name. f(x).g() names no receiver; Variant(x) and TupleStruct(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_changes lists definitions the change removed or renamed (removed_symbols) and every definition still calling one (risk.dangling_callers), which raises the risk to high; affected_tests takes those callers as seeds. All definitions of a new, untracked file count as changed.
  • affected_tests lists a production helper named test_* only where a runner collects tests by name (Python, Ruby); elsewhere the path or a test attribute decides.
  • find_unused no longer counts a local of the same name (let x = …) as a use, and leaves out methods of a Rust impl Trait for Type.
  • explain_node names the same callers as find_callers, once each; its similar definitions come without placeholders and most alike first.
  • The cycles description states its real default.

Servers

  • A backend reached at the moment it ends no longer drops the client that just connected.
  • --linger and --sleep-after are 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 run scoop install glasir