v0.9.63
Graphify-Labs/graphifyv0.9.63Sep 16, 2026by safishamsi
Upgrading?
AI Summary
This release focuses on improving module dependency resolution for Elixir, Rust, and Ruby, ensuring references like aliases and method calls are correctly tracked across files. It also fixes graph serialization issues by replacing phantom nodes with typed stubs for external modules and improves markdown link handling during incremental builds.
Key Highlights
- Elixir `alias`/`import`/`require`/`use` targets now resolve correctly across files to prevent dangling module dependencies.
- Rust `self.method()` calls now resolve to methods in split-impl blocks across different files, pooling methods across impls.
- Ruby member calls now resolve to inherited methods across files using a conservative promotion logic.
- External module references in `graph.json` are now minted as typed external stub nodes instead of phantom attributes.
- Markdown code-span mentions now survive incremental rebuilds and resolve qualified names accurately.
New Features
- Elixir module resolution across files
- Rust method resolution across split-impl blocks
- Ruby inherited method resolution
- External module stub node creation
- Markdown link resolution improvements
Full Release Notes
- Feature: Elixir `alias`/`import`/`require`/`use` targets now resolve onto the module's `defmodule` node across files, so the internal module dependency graph is no longer dropped as dangling. Only top-level modules are indexed (a nested `defmodule`, labeled with its bare inner name, cannot capture an unrelated `use <Name>` from another file), and a same-file reference is left unresolved so it cannot clobber the structural `contains` edge (#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 every `impl` of one type and refusing to link when two unrelated types share a bare name (#3602, thanks @ayushcodes10). - Feature: a Ruby member call `obj.foo` on a known-type receiver now resolves to a method `foo` inherited 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.json` is now a declared node. An `imports`/`imports_from`/`re_exports` edge 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 as `time.sleep` or `pyproject.toml` (#3587, thanks @AstroMined).
Related Repositories
public-apis/public-apis★ 491,126
A collective list of free APIs
NousResearch/hermes-agent★ 255,898
The agent that grows with you
yt-dlp/yt-dlp★ 199,995
A feature-rich command-line audio/video downloader
microsoft/markitdown★ 191,479
Python tool for converting files and office documents to Markdown.
Significant-Gravitas/AutoGPT★ 187,699
AutoGPT is the vision of accessible AI for everyone, to use and to build on. Our mission is to provide the tools, so that you can focus on what matters.