Meeting time note: [[JETLS meeting time]]
# Roadmap
This is a summary of currently implemented features and features that will
likely be implemented in the near future, for those who want to test this server.
Please note that not only the progress of the list, but also the structure of
the list itself is subject to change.
- Analysis
- [x] Document synchronization
- [ ] (WIP) Incremental analysis
- [ ] JuliaLowering integration
- [ ] Recursive analysis for dependencies
- [ ] Cross-server-process cache system
- [ ] Support package extensions
- Diagnostic
- [x] Syntax errors
- [x] Lowering errors
- [x] Macro expansion error
- [x] Unused bindings (with code action)
- [x] Captured boxed variables
- [x] Unsorted import statements (with code action)
- [x] Unused imported names (with code action)
- [ ] Undefined imported names
- [ ] Undefined exported names
- [x] Method overwrite
- [x] Abstract struct field
- [x] Undefined bindings
- [x] Non-existent struct fields
- [x] Out-of-bounds field access by index
- [x] `MethodError` ([[analyzer Implement method error analysis]])
- [x] Configuration support
- [x] CLI interface [[diagnostic Add command line interface]]
- Completion
- [x] Global symbol completion
- [x] Local binding completion
- [x] LaTeX/Emoji completion
- [x] Method signature completion
- [x] Argument type based matched method filtering ([[completion sighelp Context-aware method filtering]])
- [x] [Juno](https://junolab.org/)-like return type annotation for method completions
- [x] Keyword argument name completion
- [x] Property completion ([[completion Add `.`-property completion]])
- Signature help
- [x] Basic implementation
- [x] Macro support
- [x] Argument type based matched method filtering ([[completion sighelp Context-aware method filtering]])
- Definition
- [x] Method definition
- [x] Global binding definition
- [x] Local binding definition
- [x] Type-aware method definition
- Hover
- [x] Method documentation
- [x] Global binding documentation
- [x] Local binding location
- [x] Type of local binding ([[Type on Hover]])
- [x] [[hover Argument-types-aware method documentation|Argument-types-aware method documentation]]
- Inlay hint
- [x] Block end tagging
- [ ] Method parameter name
- [ ] Type of local binding
- Semantic tokens
- [x] [[semantic-tokens Add initial support|Local parameters, type parameters, variables]]
- [ ] Full semantic highlighting: Requires [[analysis Add TypeAnnotation module for LSP type queries]]
- Formatting
- [x] [Runic](https://github.com/fredrikekre/Runic.jl) integration
- [x] [JuliaFormatter](https://github.com/domluna/JuliaFormatter.jl) integration
- [x] Make formatting backend configurable
- Document highlight
- [x] Local binding
- [x] Global binding
- [ ] Field name / Dot-accessed bindings
- Find references / Rename
- [x] Local binding
- Global reference
- [x] Minimum support
- [ ] Cross-analysis-unit reference detection
- [ ] Aliased reference support
- [ ] Field name
- [x] File rename support (Julia-side rename)
- [ ] File rename support (external rename)
- [x] Document symbol
- [x] Workspace symbol
- TestRunner.jl integration
- [x] Code lens for running individual `@testset`s
- [x] Code actions for running individual `@testset`s
- [x] Code actions for running individual `@test` cases
- [x] Inline test result diagnostics
- Configuration system
- [x] Type stable config object implementation
- [x] Support LSP configurations
- [x] Documentation
- [x] Schema support
- [x] Parallel/concurrent message handling
- [x] Work done progress support
- [x] Message cancellation support
- [x] Notebook support
- Release
- [x] Publish a standalone VSCode language client extension
- [x] Make installable as Pkg executable app
- [x] Environment isolution
- [ ] Automatic server installation/update for `jetls-client`
- [ ] Integration into [julia-vscode](https://github.com/julia-vscode/julia-vscode)
# Progress tracker
> - `x`: work done (showing items completed in the last 7 days only)
> - `/`: work in progress
> - Not started otherwise
## [[JETLS board.base]]
| status | file name link | created | completion | assignees | tags |
| ------ | ---------------------------------------------------------------------------------- | ---------- | ---------- | ---------- | ----------------------------- |
| x | [[Type on Hover]] | 2025-09-22 | 2026-05-10 | [[Shuhei]] | #hover |
| x | [[Make sure `SyntaxTree` and `CodeInfo` are synced in structure]] | 2025-10-23 | 2026-05-01 | [[Em]] | #JuliaLowering |
| x | [[analysis Add TypeAnnotation module for LSP type queries]] | 2025-10-28 | 2026-05-03 | [[Shuhei]] | #resolver, #type-annotation |
| x | [[Configurations should define `hash`]] | 2025-11-21 | 2026-05-09 | [[Shuhei]] | #external |
| x | [[semantic-tokens Add initial support]] | 2026-05-04 | 2026-05-04 | [[Shuhei]] | #semantic-tokens |
| x | [[JETLS planning @ Compiler summit 2026]] | 2026-05-05 | 2026-05-09 | | #meeting |
| x | [[TypeAnnotation Resolve local closure types via OpaqueClosure]] | 2026-05-10 | 2026-05-05 | [[Shuhei]] | |
| x | [[type-definition Implement `textDocument typeDefinition`]] | 2026-05-10 | 2026-05-10 | [[Shuhei]] | |
| x | [[hover Argument-types-aware method documentation]] | 2026-05-11 | 2026-05-11 | [[Shuhei]] | #hover |
| x | [[Type-aware go-to-method-definition]] | 2026-05-11 | 2026-05-12 | [[Shuhei]] | #definition |
| x | [[completion sighelp Context-aware method filtering]] | 2026-05-13 | 2026-05-13 | [[Shuhei]] | |
| x | [[completion Add `.`-property completion]] | 2026-05-15 | 2026-05-15 | [[Shuhei]] | |
| / | [[Trim failure analyzer]] | 2025-06-30 | | [[Shuhei]] | #integration, #trim |
| / | [[Recursive analysis on dependency packages]] | 2025-08-01 | | [[Yuchi]] | #full-analysis |
| / | [[Redesign full-analysis architecture]] | 2025-08-15 | | [[Shuhei]] | #full-analysis |
| / | [[performance Severe memory leak]] | 2025-12-04 | | [[Shuhei]] | #memory, #profile |
| / | [[full-analysis Add package code loading mechanism for incremental analysis]] | 2025-12-17 | | [[Shuhei]] | #full-analysis |
| / | [[inlay-hint Implement inlay type hint]] | 2026-05-10 | | [[Shuhei]] | |
| / | [[Source-mapped inferred type based LSP features]] | 2026-05-10 | | [[Shuhei]] | |
| - | [[File rename seem to cause cache state mismatch]] | 2025-11-23 | 2026-01-17 | | #bug |
| - | [[Garbage collect staled modules and CodeInstances]] | 2025-12-04 | 2025-12-04 | [[Shuhei]] | #memory |
| | [[JL integration with full analysis]] | 2025-07-03 | | | #full-analysis |
| | [[Base development support]] | 2025-09-22 | | | #full-analysis, #diagnostic |
| | [[Cache inference results in FileInfo]] | 2025-09-22 | | [[Shuhei]] | #file-cache |
| | [[Cache lowering results in FileInfo]] | 2025-09-22 | | [[Shuhei]] | #file-cache |
| | [[Convert `[...](@ref)` to something actually jumpable]] | 2025-09-22 | | | #misc, #hover |
| | [[Make JET able to analyze precompile workloads]] | 2025-09-22 | | | #JET |
| | [[Method jump limitations]] | 2025-09-22 | | | #definition |
| | [[Refactor module usage handling]] | 2025-09-22 | | | #JET |
| | [[Script-mode analysis failure for `using JuliaSyntax; const JS = JuliaSyntax`]] | 2025-09-22 | | | #full-analysis |
| | [[Top-level failure for `@async`]] | 2025-09-22 | | [[Shuhei]] | #JET, #full-analysis |
| | [[Update JET to Julia 1.13]] | 2025-09-22 | | | #JET |
| | [[Potential zombies processes when crashed client pid is reused immediately]] | 2025-09-23 | | | #lifecycle |
| | [[Run a server process in a frozen world age]] | 2025-09-24 | | [[Shuhei]] | #server-loop |
| | [[Use --pipe or --socket options for clients other than VSCode]] | 2025-09-24 | | | #client |
| | [[Bundle JETLS.jl into jetls-client]] | 2025-10-14 | | [[Shuhei]] | #release |
| | [[More hooks for Revise]] | 2025-10-22 | | | |
| | [[Revise core functionality separation]] | 2025-10-22 | | [[Shuhei]] | #full-analysis |
| | [[Separate analysis process]] | 2025-10-22 | | | #full-analysis |
| | [[Closure signature extraction]] | 2025-10-23 | | | #full-analysis, #code-loading |
| | [[Get concrete input type for polymorphic method definition]] | 2025-10-23 | | | #full-analysis |
| | [[Highlight field names]] | 2025-10-27 | | | #document-highlight |
| | [[Highlight dot-accessed bindings]] | 2025-10-28 | | | #document-highlight |
| | [[Analyze docs files]] | 2025-10-29 | | | #full-analysis |
| | [[Analyze ext files]] | 2025-10-29 | | | #full-analysis |
| | [[Switch package analysis to Revise based implementation]] | 2025-10-29 | | [[Shuhei]] | #full-analysis |
| | [[Integrate `SyntaxTree` into `Revise.pkgdatas`]] | 2025-11-16 | | [[Shuhei]] | #revise |
| | [[config Generalize file path based configuration]] | 2025-11-23 | | | #config |
| | [[Find, rename field references]] | 2025-12-12 | | | #references, #rename |
| | [[Global binding reference issues]] | 2025-12-12 | | | #references, #rename |
| | [[JET Environment isolation]] | 2025-12-17 | | | #JET |
| | [[rename Add support for client side file rename]] | 2025-12-17 | | | #rename |
| | [[code-loading Safe code loading mechanism]] | 2025-12-19 | | | #code-loading |
| | [[diagnostic Report abstract struct field information from Revise-based analysis]] | 2025-12-30 | | [[Shuhei]] | #diagnostic, #full-analysis |
| | [[diagnostic Update diagnostics on DidChange basis]] | 2026-01-07 | | [[Shuhei]] | #diagnostic |
| | [[JuliaLowering Improve box optimization]] | 2026-01-07 | | | #JuliaLowering |
| | [[Use JuliaLowering.ScopeInfo to simplify the completions and such]] | 2026-01-10 | | | #JuliaLowering, #completion |
| | [[diagnostic Report undefined export]] | 2026-01-28 | | | #diagnostic |
| | [[diagnostic Report undefined imported names]] | 2026-01-28 | | | #diagnostic |
| | [[Cthulhu Update to 1.14]] | 2026-03-31 | | [[Shuhei]] | |
| | [[JuliaLowering Type stable attribution system]] | 2026-04-08 | | | |
## [[JETLS board.base#Icebox]]
| file name link | created | tags | assignees |
| ----------------------------------------------------------------- | ---------- | --------------------------- | ---------- |
| [[Severe analysis time regression by switching to JSON v1]] | 2025-11-19 | #full-analysis | [[Shuhei]] |
| [[Switch JSON3.jl to JSON.jl v1]] | 2025-10-29 | #server-communication, #LSP | [[Shuhei]] |
| [[Hierarchicay configuration support]] | 2025-10-24 | #config | [[Shuhei]] |
| [[Allow JET to use constraints from identical static parameters]] | 2025-05-28 | #JET | |
| [[Incremental analysis system]] | 2025-04-03 | #full-analysis | [[Shuhei]] |
| [[`OptAnalyzer` Recover `throw`-pass ignoring feature]] | | | |
| [[Fix the performance regression of JET 0.10]] | | | [[Shuhei]] |