- Commit:
2b51ac0 - Diff:
9cebe8b...2b51ac0 - Installation:
julia -e 'using Pkg; Pkg.Apps.add(; url="https://github.com/aviatesk/JETLS.jl", rev="2026-09-06")'
Announcement
Note
The VSCode extension (jetls-client) now lives in its own repository, aviatesk/jetls-vscode.
The extension keeps its Marketplace identity (aviatesk.jetls-client) and updates continue as usual.
Since v2026.8.29, the extension has managed the JETLS installation automatically: it installs and updates the pinned JETLS release on its own, so VSCode users no longer need to run the installation command below or keep jetls up to date manually (still needed if you also use the jetls CLI, e.g. jetls check).
Please report extension-specific problems (installation, startup, extension UI) to aviatesk/jetls-vscode issues;
language-feature issues belong here as before.
Important
JETLS supports Julia 1.12.2 through 1.13.
It does not support Julia 1.12.1 or earlier, nor Julia 1.14+/nightly.
Warning
JETLS currently has a known memory leak issue where memory usage grows with each re-analysis (#357).
As a temporary workaround, you can disable full-analysis for specific files using the analysis_overrides initialization option:
This disables analysis for matched files. Basic features like completion still might work, but most LSP features will be unfunctional.
Note that analysis_overrides is provided as a temporary workaround and may be removed or changed at any time. A proper fix is being worked on.
Note: Path glob patterns use / as the separator on all platforms, including Windows; backslashes are not supported as separators.
Added
- Added a quick fix for
toplevel/abstract-fielddiagnostics onRef{T}fields that replacesRefwithBase.RefValue.
Changed
-
full_analysis.auto_instantiateno longer runsPkg.resolve()andPkg.instantiate()on environments that are already instantiated with an up-to-date manifest.
JETLS now inspects the environment first and leaves it untouched when its manifest is up to date and nothing is missing, so opening a project whoseManifest.tomlwas written by a different Julia version no longer rewrites it just to update the recordedjulia_version.
Pkg.resolve()is run only when the manifest is missing or out of date; otherwise onlyPkg.instantiate()runs. -
full_analysis.auto_instantiateis now a string option taking"always","prompt", or"never", and its default changed fromtrueto"prompt".
With"prompt", JETLS asks for confirmation viawindow/showMessageRequestbefore runningPkg.resolve()andPkg.instantiate()on an environment that needs it, once per environment per server session.
Alternatively, the environment can be instantiated manually while the prompt is open; after the operation finishes, choosing "Skip" makes JETLS recheck and use the updated environment without running Pkg itself.
Choosing "Skip" while the environment is still incomplete analyzes the code with it as is.
"always"restores the previous behavior of instantiating without asking, and"never"only warns.
jetls checkis unaffected: it has no client to ask, so"prompt"instantiates like"always"there, as the CLI already did before.
For backward compatibility, the legacy valuestrueandfalseare still accepted at runtime as aliases of"always"and"never".
Configuration schemas intentionally reject these legacy boolean values to prompt migration to the string form. -
workspace/diagnosticnow uses less CPU while the workspace is unchanged, especially in clients that poll workspace diagnostics continuously.
Fixed
-
Fixed the "environment has not been instantiated" warning shown when
full_analysis.auto_instantiateis disabled not appearing for environments without aManifest.toml.
The warning now also covers environments whose manifest is out of date with respect toProject.toml. -
jetls checknow prints the messages that the language server would show in an editor (e.g. the warning about an uninstantiated environment, or configuration problems) to stderr as log messages instead of silently dropping them.
--quietsuppresses the info and warning ones, as it does for other log messages.