The goal of this project is to develop a new language server for Julia, currently called JETLS, that enhances developer productivity through advanced static analysis and seamless integration with the Julia runtime.
JETLS has made significant progress and now implements a broad set of core LSP features. Type-sensitive diagnostics are powered by JET.jl, which uses JuliaInterpreter.jl to load and analyze code. Features like code completion, workspace symbols, find references, and rename are built by running JuliaLowering.jl as a post-analysis step on top of the module context that JET/JuliaInterpreter has established.
The next major milestone is to feed JuliaLowering-generated code directly into JET's analysis, rather than running JuliaLowering as a post-processing step. This deeper integration, combined with Revise.jl for incremental analysis, will enable advanced features such as type-on-hover, inlay type hints, and argument-type-aware completions, as well as more precise diagnostic locations (currently reported at line granularity rather than column-precise positions).
During GSoC, we expect the contributor to work on these deeper integrations and implement the advanced language features that depend on them. As preparation, we hope that by the time GSoC starts, you have studied the implementations of JETLS.jl and related tools: JET.jl, JuliaInterpreter.jl, Revise.jl, and JuliaLowering.jl.
Expected Outcomes: Advanced language server features built on top of full JuliaLowering/JET/Revise integration, such as type-on-hover, inlay type hints, and argument-type-aware completions.
Skills Required:
Proficiency in Julia programming and familiarity with its compiler and runtime systems
Deep understanding of Julia's compiler internals, including lowering, type inference, and abstract interpretation as implemented in JET.jl, JuliaInterpreter.jl, and JuliaLowering.jl
Interest in and/or experience with LSP and developer tooling
Difficulty: Hard
Contact: Shuhei Kadowaki