v0.9.63

Budibase/budibasev0.9.63Sep 16, 2026by safishamsi

Upgrading?

AI Summary

This release improves module dependency resolution for Elixir and Ruby, ensuring internal module graphs are no longer dropped. It also refines Rust method resolution and fixes issues with external references and Markdown links.

Key Highlights

  • Elixir imports/aliases now resolve to module nodes across files.
  • Ruby member calls now resolve to inherited methods across files.
  • External module calls now create typed external stub nodes.
  • Fixed Markdown code-span edge preservation during incremental rebuilds.

New Features

  • Elixir `alias`/`import`/`require`/`use` targets now resolve to module nodes.
  • Ruby member calls now resolve to inherited methods across files.

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