Conversation
Add a variant of activate_do that allows early release of ACTIVATE_LOCK before the callback completes. The caller can notify the passed event to signal that the activated environment is no longer needed, enabling the environment to be restored and the lock released while the callback continues executing. Use this in full-analysis to release the activation lock after the code loading phase finishes, allowing other analysis requests to proceed while type inference continues in the background.
According to LSP 3.17 specification, if the server receives a request or notification before the initialize request, it should: - For requests: respond with error code -32002 (ServerNotInitialized) - For notifications: drop silently, except for the exit notification This adds the initialize_requested flag to track whether the initialize request has been received, and rejects/drops messages accordingly. Written by Claude
Add documentation for `full_analysis.auto_instantiate` setting and fix the `formatter` custom configuration schema to match the actual package.json structure (`custom.executable` and `custom.executable_range`).
add CHANGELOG.md entry
Add support for static initialization options that are set once during server startup and require a restart to take effect. This differs from dynamic configuration managed by `ConfigManager`. Currently supports `n_analysis_workers` option for configuring the number of concurrent analysis worker tasks. Due to current architecture constraints around package environment switching and world age management, parallelization is limited to the signature analysis phase. Also updates `jetls-client` and documentation accordingly. Written by Claude
Parallelize signature analysis using `Threads.@spawn`, leveraging the thread-safe inference pipeline introduced in Julia v1.12. Each analysis task creates its own analyzer with fresh local caches to avoid data races. Key changes: - Add `SignatureAnalysisProgress` struct with atomic fields for thread-safe progress tracking - Make `LS_ANALYZER_CACHE` thread-safe using `CASContainer` - Move `AtomicContainers` include earlier to make it available in `Analyzer.jl` On a 4-core machine (`--threads=4,2`): - CSV.jl first-time analysis: 30s -> 18s (~1.7x faster) - JETLS.jl first-time analysis: 154s -> 36s (~4.3x faster)
Update documentation to clarify that signature analysis parallelization happens automatically via `Threads.@spawn`, independent of the `n_analysis_workers` initialization option. Mark `n_analysis_workers` as experimental and explain its use case: it can help reduce overall analysis time when multiple analysis units (e.g., src and test code) are open simultaneously.
Simplify the documentation structure: - Move usage explanation to regular section text - Add concise "Experimental" warning about potential removal/changes - Keep "Signature analysis parallelization" note to clarify automatic parallelization is independent of this option
When `execute_analysis_request` threw an exception, the `@goto` in the catch block caused the finally block to be skipped entirely. This meant `end_full_analysis_progress` was never called, leaving progress indicators hanging. Fix by using a `failed` flag and moving the `@goto` into the finally block, ensuring cleanup always runs before jumping to `next_request`.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR releases version
2025-12-02.Checklist
release / Test JETLS.jl with release environmentrelease / Test jetls executable with release environmentPost-merge
releases/2025-12-02branch can be deleted after merging