Skip to content

v0.22.0

Choose a tag to compare

@github-actions github-actions released this 31 Jul 15:14
· 162 commits to main since this release

Added

  • codeActionKinds are now advertised and honored: the server declares the concrete kinds it returns (quickfix, refactor, refactor.extract, refactor.inline, source.organizeImports) and filters results against a client's context.only, matching descendant kinds (refactor also covers refactor.extract) — previously every request returned every possible action regardless of what was asked for.

Changed

  • Returning sessions seed mir's workspace symbol index from the disk cache
    (mir 0.64): symbol lookups in a cache-warm session answer from an O(1) map
    and can never fall back to the O(all-files) index walk — debugStats gains
    workspace_symbol_index_ready and workspace_index_walks so tests pin the
    walk count at zero. Watcher-driven external edits reconcile the seeded
    index before any query reads it. Costs ~110 ms extra warm-boot indexing and
    ~23 MB RSS at 1.6K files; first-ever boot is unchanged.

Fixed

  • Hover on a method declared only via a class-level @method docblock tag now shows its signature instead of nothing: the AST-based member scan behind mir's method hover only walked concrete methods, missing virtual methods that completion and signature help already understood.
  • Type hierarchy's dynamic registration is no longer sent to clients that never declared textDocument.typeHierarchy.dynamicRegistration: lsp-types 0.94 has no static typeHierarchyProvider field, so support can only be advertised via client/registerCapability, but that call was previously sent unconditionally.
  • Intermittent stack-overflow abort under contended parallel analysis: salsa 0.28's dependency-graph lock transfer recurses per transferred dependent and could overflow the 16 MB analysis-thread stacks on large workspaces. All analysis threads (rayon workers, tokio blocking pool, warm-sweep thread) now get 64 MB stacks — reserved, not committed, so resident memory is unchanged.
  • Reading a private/protected property from outside its declaring class is now flagged (InaccessibleProperty, mir 0.65), matching the existing visibility checks for class constants and methods.

Dependencies

  • mir updated to 0.65.0 (from 0.64.0): a batch of analyzer correctness fixes, including the new InaccessibleProperty check above, promoted-property docblock refinement handling, nullable-hint preservation through @param, and exhaustive-match recognition of backed-enum ->value.