- Feature: Elixir
alias/import/require/usetargets now resolve onto the module'sdefmodulenode across files, so the internal module dependency graph is no longer dropped as dangling. Only top-level modules are indexed (a nesteddefmodule, labeled with its bare inner name, cannot capture an unrelateduse <Name>from another file), and a same-file reference is left unresolved so it cannot clobber the structuralcontainsedge (#3603, thanks @ayushcodes10). - Feature: a Rust
self.method()call now resolves to a method defined on the same type in another file (the common split-impl-block layout), pooling methods across everyimplof one type and refusing to link when two unrelated types share a bare name (#3602, thanks @ayushcodes10). - Feature: a Ruby member call
obj.fooon a known-type receiver now resolves to a methodfooinherited from a superclass, including across files, using the same conservative promotion as the implicit-self resolver — a single owning class, matching method kind, and one unambiguous ancestry chain, or it stays dangling (#3585, thanks @oleksii-tumanov). - Fix: every edge endpoint written to
graph.jsonis now a declared node. Animports/imports_from/re_exportsedge to an external module (stdlib, a third-party dependency) mints a typed external stub node instead of leaving a dangling endpoint that loaders materialise as an attribute-less phantom, and a cross-repo merge unifies the same external module into one global node instead of fragmenting it per repo; sourceless external call targets stay suppressed (#2873, #2878, thanks @AromalBiju1). - Fix: a Markdown code-span mention edge now survives an incremental rebuild instead of being pruned as an unauthored link, and a dotted span (
Foo.bar) resolves using its qualifiers as evidence, rejecting misleading matches such astime.sleeporpyproject.toml(#3587, thanks @AstroMined).