v0.9.75
huggingface/smolagentsv0.9.75Oct 4, 2026by safishamsi
Upgrading?
AI Summary
Introduces intra-class call binding across Python, JavaScript, Swift, and Ruby. Adds new language features (Zig error sets, PHP enums, Elixir macros, Rust macros). Lifts single-implementer interface dispatch to core and applies to Swift.
Key Highlights
- `self`/`this`/`super` calls now bind to the caller's own class chain across Python, JS, Swift, and Ruby.
- Single-implementer interface dispatch lifted to core and applied to Swift protocol requirements.
- Elixir unqualified calls now resolve to `import`/`use` scoped functions.
- Bash script invocation via non-shell interpreter recorded as `invokes` edge.
New Features
- Intra-class call binding (`self`, `this`, `super`) across Python, JS, Swift, Ruby.
- Single-implementer interface dispatch lifted to core.
- Swift protocol requirement dispatch to sole conformer.
- Elixir `defmacro`/`defmacrop`/`defguard`/`defguardp` definitions extracted.
- Rust `macro_rules!` definitions extracted.
Full Release Notes
Intra-class call binding across five languages, new language-structure coverage, and a batch of resolution/build/cache fixes. - Feature: `self`/`this`/`super` member calls now bind to the caller's own class chain instead of the file-wide last-definition, across **Python** (`self.`/`cls.`/`super()`, nearest ancestor in the in-file MRO) (#4011), **JavaScript/TypeScript** (`this.m()` to the caller's own class; `super.m()` fails closed since the `extends` chain is not known at that pass) (#4012), **Swift** (`self`/`super`, class vs struct/extension aware) (#4030), and **Ruby** (`self`-sends within the class chain, complementing the paren-less self-send extraction from 0.9.74) (#4031) — all thanks @Cintu07. Multiple-inheritance ties and unknown/external ancestors fail closed (no fabricated edge). - Feature: four more language extractors gained structural coverage from @rajatnagda45 — **Zig** error-set declarations and their members (`case_of`) (#4025), **PHP** enum cases (pure and backed) with `case_of` edges (#4026), **Elixir** `defmacro`/`defmacrop`/`defguard`/`defguardp` definitions (#4027), and **Rust** `macro_rules!` definitions with local invocation resolution (std macros like `println!` fail closed, no fabrication) (#4028). - Feature: three **Scala** type-reference fixes from @Faisal-Fayaz — file-scope `val`/`var` type annotations now emit `references` edges (#4036, #2054), `type` alias/definition right-hand sides are walked (including `opaque type` and match types) (#4037, #2049), and context bounds (`def f[A: Ordering]`) resolve to `references` edges (#4038, #2046). - Feature: single-implementer interface dispatch was lifted into a language-agnostic core (#4034) and reused to dispatch a **Swift** protocol requirement to its sole conformer (INFERRED), failing closed on 2+ conformers (#4035) — thanks @GAURAV-1313. - Feature: **Elixir** unqualified calls now resolve to functions brought in by `import`/`use`, scoped per module and fail-closed when no in-scope module defines the name (fixes a large god-node from corpus-wide bare-name binding) (#4015, thanks @Ayushraj06-bit). - Feature: a **bash** script's invocation of another script through a non-shell interpreter (`python3 build.py`, `node build.js`, `"$PYTHON" stage.py`) is now recorded as an `invokes` edge; a `$VAR`/path command word is not mistaken for an interpreter (#4007, thanks @ayushcodes10). - Feature: **Dart** `part` files keep their own file node linked to the library (#4013, #4008), and a configurable import/export (`import 'a.dart' if (...) 'b.dart';`) now links every URI branch, not just the default (#4003, #4002) — thanks @brlumen. - Fix: C# partial-class merging no longer drops recursive/intra-class `calls` edges; one split `partial class` anywhere in a repo used to erase every recursive self-loop graph-wide (#4017, thanks @rohit-jsfreaky). - Fix: `graphify path` (CLI and the MCP `shortest_path` tool) now routes through a `contains` edge back out to a symbol's file, so a cross-file dependency that must pass through a shared symbol is found instead of reporting no path (#4004, #3878, thanks @ayushcodes10). - Fix: the AST cache rebinds its stat index when a later call names a different cache root, so a multi-project process writes each root's `stat-index.json` with only its own files instead of pooling them into the first root's file (#4005, #3989, thanks @ayushcodes10). - Fix: `merge-graphs --previous <merged-graph.json>` restores the previous merged community assignment by node id, so cluster/label reuse stays stable across re-merges; a malformed `--previous` file now errors cleanly instead of crashing (#4006, #3858, thanks @ayushcodes10). - Fix: `cluster-only`/`label` no longer drop parallel edges (two different relations between the same pair) when reloading and rewriting a graph; preserved links track node-id remaps so none are silently dropped on a legacy graph (#4010, #3999, thanks @ayushcodes10). - Fix: the Ollama `num_ctx` setting is merged into `extra_body` instead of replacing it, so a `GRAPHIFY_DISABLE_THINKING` body set on the same backend is no longer silently clobbered (#4029, #3988, thanks @Agnik47). - Fix: the hook-guard reminder names the effective `graph.json` path when `GRAPHIFY_OUT` is customized, instead of always naming the default `graphify-out/graph.json` (#4042, #4040, thanks @DeepanshuPal). - Fix: `graphify extract` refuses to overwrite an existing graph with a dedup-shrunk one unless `--allow-dedup-shrink` is passed; the refusal reports the actual number of nodes dedup merged (#4014, #3774, thanks @SrijanSriv). - Feature: extraction warns once when a cleanly-parsed code file yields no symbols beyond its own file node (often a data literal), while staying silent on empty/whitespace-only files, no-extractor languages, and intentionally-skipped data (#4009, #3946, thanks @ayushcodes10).
Related Repositories
public-apis/public-apis★ 491,126
A collective list of free APIs
NousResearch/hermes-agent★ 255,899
The agent that grows with you
yt-dlp/yt-dlp★ 199,996
A feature-rich command-line audio/video downloader
microsoft/markitdown★ 191,480
Python tool for converting files and office documents to Markdown.
Significant-Gravitas/AutoGPT★ 187,700
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.