Skip to content

release: 2026-03-08#579

Merged
aviatesk merged 19 commits intoreleasefrom
releases/2026-03-08
Mar 8, 2026
Merged

release: 2026-03-08#579
aviatesk merged 19 commits intoreleasefrom
releases/2026-03-08

Conversation

@aviatesk
Copy link
Owner

@aviatesk aviatesk commented Mar 8, 2026

This PR releases version 2026-03-08.

Checklist

  • release / Test JETLS.jl with release environment
  • release / test_app / Test jetls serve
  • release / test_app / Test jetls check
  • release / test_app / Test jetls schema
  • release / check_schemas / Check schemas are up to date

Post-merge

  • The releases/2026-03-08 branch can be deleted after merging
  • CHANGELOG.md will be automatically updated on master

github-actions bot and others added 18 commits February 26, 2026 15:29
docs: fix default value of `allow_unused_underschore`
* Update index.md

When using eglot, the usage of :autoport will cause jetls to not work properly when editing files over TRAMP.
It can just be removed from the configuration.

* Expand EMACS configuration docs
Update commit message guidelines to use a standard
`Co-Authored-By` trailer instead of a prose footer.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Support @generated function arguments across LSP

In `@generated` functions, arguments are used inside quoted
expressions (`:(...)`) which become `K"inert"` nodes after
lowering. Since scope resolution doesn't look inside these
nodes, arguments appeared unused and couldn't be highlighted,
referenced, or renamed.

Scan `K"inert"` nodes for identifiers matching argument names
and record them as `:use` occurrences. Thread `is_generated`
through occurrence analysis and binding selection so all LSP
features (diagnostics, highlights, references, rename) handle
`@generated` functions correctly. Also merge argument bindings
with static parameter bindings at the same source location so
type parameters are properly unified.

Closes #480

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: Add CHANGELOG entry for @generated function support

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* fix highlight range in `jetls check`

* add tests
Add `_IMPLICIT_BINDING_NAMES` constant listing JuliaLowering's
implicit bindings (`__context__`, `__module__`, `__source__`) and
filter them in `find_target_binding` so they don't interfere with
cursor-based binding selection in highlights, references, and
rename.

Also use the same constant in `analyze_unused_bindings!`, replacing
the previous inline string checks. The guard is generalized from
`ismacro` to `has_implicit_args` (macro or `@generated` function)
for consistency, since both introduce implicit argument bindings.

Test workarounds that skipped certain cursor positions due to these
implicit bindings are now removed.

Written by Claude

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Global bindings used only inside quoted expressions (`:(...)`) in
`@generated` functions were not recognized by scope analysis,
since these expressions become `K"inert"` nodes that scope
resolution skips. This caused false "unused import" warnings.

Add `collect_inert_global_occurrences!` which runs independent
scope resolution on inert node content to discover global
bindings used there. Called from `compute_binding_occurrences_st0`
when `is_generated && include_global_bindings`. The outer inert
(generator template) is explicitly skipped by comparing its byte
range against `st3`.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Parse command-line arguments in `selfcheck.sh` so that
hardcoded defaults like `--threads`, `--root`, `--quiet`,
`--exit-severity`, and `--show-severity` can be overridden.
Additional options such as `--skip-full-analysis` are passed
through to `jetls check`.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add `JULIA` environment variable support to allow overriding
the `julia` command used by `selfcheck.sh`. Also add `--help`/
`-h` flag that prints usage information extracted from the
script's header comments.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Initially had Claude apply the necessary updates, then manually
reviewed each change.
Due to the migration to EST, the desugared tree changed considerably,
so code that directly inspects the tree such as document symbol needed
significant modifications.

---

- Closes #495
- Closes #518

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---

* deps: Pin Compiler.jl version to workaround JuliaLang/julia#61257

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Update `README.md`, `docs/src/index.md`, and `CHANGELOG.md`
to make it clear that JETLS is currently only compatible
with Julia 1.12 (1.12.2+ recommended), and does not support
Julia 1.11 or earlier, nor Julia 1.13+/nightly.

Also remove an outdated COMBAK comment in
`scripts/vendor-deps.jl`.
Compiler.jl uses `ccall(:jl_set_module_uuid, ...)` to manually
set its module UUID because its `@eval baremodule` pattern
bypasses Julia's normal UUID assignment. The vendoring script
was only rewriting the UUID in `Project.toml`, leaving the
hardcoded stdlib UUID in the source code. This caused a UUID
mismatch at load time: the package system expected the vendored
UUID but the module had the stdlib UUID, making the precompile
cache unusable.

Add `rewrite_compiler_module_uuid!` to also rewrite the hex
UUID literal in `Compiler.jl` source during vendoring.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@aviatesk aviatesk force-pushed the releases/2026-03-08 branch from d9b63b8 to 472a8b5 Compare March 8, 2026 14:42
@aviatesk aviatesk merged commit d32f1cf into release Mar 8, 2026
10 checks passed
@aviatesk aviatesk deleted the releases/2026-03-08 branch March 8, 2026 15:16
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.

3 participants