Skip to content

release: 2025-12-02#353

Merged
aviatesk merged 23 commits intoreleasefrom
releases/2025-12-02
Dec 2, 2025
Merged

release: 2025-12-02#353
aviatesk merged 23 commits intoreleasefrom
releases/2025-12-02

Conversation

@aviatesk
Copy link
Owner

@aviatesk aviatesk commented Dec 1, 2025

This PR releases version 2025-12-02.

Checklist

  • release / Test JETLS.jl with release environment
  • release / Test jetls executable with release environment

Post-merge

  • The releases/2025-12-02 branch can be deleted after merging
  • CHANGELOG.md will be automatically updated on master

github-actions bot and others added 23 commits November 29, 2025 18:11
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 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`.
@aviatesk aviatesk merged commit aae52f5 into release Dec 2, 2025
7 checks passed
@aviatesk aviatesk deleted the releases/2025-12-02 branch December 2, 2025 01:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant