#2: v0.3.0
-
#206 — Installation and limitations docs: Added installation guidance for Zed, Neovim, and VS Code forks, and clarified how analysis of unsaved edits works.
-
#207 — Workspace initialization compatibility: Fixed startup for editors that provide their project through the older
rootUriorrootPathfields instead of workspace folders. -
#209 — Initialization follow-up: Simplified the workspace-root fallback introduced in #207 and added regression coverage.
-
#211 — Code folding: Added syntax-aware folding for Rust code, comment blocks, and import groups, allowing editors to collapse these regions accurately.
-
#212 — Test infrastructure cleanup: Consolidated fixtures and snapshots, reorganized cache tests, and removed obsolete APIs and testing utilities, reducing maintenance overhead.
-
#213 — Analysis and indexing architecture: Centralized analysis of unsaved bodies, standardized query cancellation, and unified body construction across indexing and on-demand analysis. This lets bodies built on demand work alongside deferred indexing.
-
#214 — Richer documentation support: Added Rust syntax highlighting inside doc comments and resolved rustdoc links in comments and hover documentation. Documentation links now support hover information and navigation to the referenced item.
-
#215 — Benchmark infrastructure cleanup: Removed the slower Gungraun/Callgrind benchmark infrastructure, with CodSpeed continuing to provide performance tracking.
-
#216 — Faster CI: Improved caching and reused server builds across CI jobs, avoiding repeated compilation. Also canceled superseded PR runs and reduced Renovate churn.
-
#217 — LSP dependency modernization: Updated
tower-lsp-serverand migrated protocol types togen-lsp-types, temporarily using a fork for a required upstream fix. -
#219 — Internal simplification: Reorganized the body, type, semantic, and project layers around clearer responsibilities, consolidated span representations, and reduced duplicated syntax traversal.
-
#220 — Return to upstream LSP server: Switched back to the official
tower-lsp-serverdependency after the required fix landed upstream. -
#221 — Naming consistency: Made the README consistently capitalize the project name as “Rust Glancer.”
-
#223 — Optimized distribution builds: Added a dedicated distribution profile with full link-time optimization and a single codegen unit, enabling stronger optimization across crate boundaries for published binaries.
-
#224 — Lower idle memory after indexing: Improved reallocation of retained metadata and explicitly forced mimalloc collection after indexing, allowing more fragmented memory to be returned before the server goes idle.
-
#225 — Faster type inference: Replaced repeated whole-body inference passes with recursive inference, reducing redundant work and simplifying the implementation. Also fixed startup status reporting so clients reliably know when background indexing has finished.
-
#226 — Stronger code quality tooling: Introduced project-specific Dylint checks and stricter Clippy and formatting rules, then applied them throughout the codebase.
-
#227 — Updated rust-analyzer components: Refreshed the vendored rust-analyzer components, lexer dependencies, and generated syntax code, incorporating newer upstream parsing and macro infrastructure.
-
#229 — New trait solver: Replaced Chalk and much of the custom inference machinery with Rust’s next-generation trait solver and compiler-compatible working types. This improved generic and associated-type inference while reducing duplicated logic.
-
#230 — Readable hover signatures: Added Rust-aware formatting for function and method signatures, wrapping long parameter lists and
whereclauses. Hover cards also preserve clear spacing between the item path and signature. -
#231 — Navigate directly to module files: Go to Definition on
mod foo;now opens the module’s defining file, such asfoo.rs. -
#232 — Reliable builtin macro types: Simplified type resolution for builtin macros such as
format_args!andoption_env!by identifying their result types through compiler language items, preventing local names from interfering. -
#234 — Standard derive support: Added analysis support for compiler-provided derives such as
Clone,Default,Debug, and comparison traits, making derived methods and trait bounds available without executing procedural macros. Also corrected edition-specific preludes and improved trait matching around unresolved types. -
#236 — Navigate to the relevant trait implementation: Go to Implementation now follows the trait implementation matching the call’s receiver and arguments, fixing cases that previously jumped to the type definition.
-
#237 — Correct types for value-producing breaks: Fixed inference for labeled blocks and loop expressions whose result comes from
break, including routing labeled breaks to the correct enclosing construct. -
#239 — Proper inference for
?, ranges, and indexing: Integrated these operations into type inference through their real language items and trait relationships, replacing special-case approximations. This improves inference for customTryand indexing implementations, slicing, and range endpoints. -
#240 — Find all trait-method implementations: Fixed implementation searches on trait methods to return all relevant implementations rather than only the one selected for a particular call.