• v0.4.0 8b245d1a48

    v0.4.0
    Some checks failed
    CI / cargo fmt (pull_request) Failing after 18s
    CI / cargo clippy (pull_request) Has been skipped
    CI / cargo test (pull_request) Has been skipped
    CI / cargo fmt (push) Failing after 18s
    CI / cargo clippy (push) Has been skipped
    CI / cargo test (push) Has been skipped
    Release Build / Generate Version (push) Successful in 21s
    Release Build / Build linux-x86_64 (push) Successful in 5m9s
    Release Build / Build linux-aarch64 (push) Successful in 5m32s
    Release Build / Build windows-x86_64 (push) Successful in 5m40s
    Release Build / Create Forgejo Release (push) Failing after 1m3s
    Stable

    buildagent released this 2026-06-04 15:30:50 +02:00 | 19 commits to master since this release

    Highlights

    Ruby is now a fully supported language (sixth indexed language), with Rails-aware extraction — and this release closes a stack-overflow DoS that affected every language parser.

    Ruby plugin

    • Detects .rb / .rake / .gemspec and the extensionless Rakefile / Gemfile.
    • Modules, classes (+ superclass type refs), instance & singleton methods, top-level functions, constants, attr_* fields, require/require_relative imports, bare-call vs receiver method_call refs, and include/extend/prepend mixin refs.
    • Rails-aware associations: has_many / has_one / belongs_to / has_and_belongs_to_many emit a type reference to the associated model class — honoring class_name: and singularizing plural names — so find_references on a model surfaces its association sites.

    Security: parser recursion-depth guard

    A crafted file of deeply nested literals (well under the 2 MiB size cap) could overflow the worker stack and crash the long-lived daemon — and catch_unwind cannot intercept stack exhaustion. All six language plugins now cap recursion depth, so a single malicious file can no longer take down the daemon. Verified with a 2 MiB-stack regression test on 20 000-deep input.

    Parity & tests

    Wired Ruby into qualified-name separators, project-root detection (Gemfile/*.gemspec), entry-point heuristics, ctags cross-validation, and the init template. Ships 25 unit tests, full e2e + Rails-association + parity coverage, and a 5-layer correctness_ruby cross-validation against ripgrep/ctags.

    Reviewed ultradeep by a multi-agent pass (correctness, security, performance, test coverage, cross-language parity, production readiness) with adversarial verification of every finding.

    Changes: v0.3.3...v0.4.0

    Downloads