Graal-LSP: A Language Server Implementation with Polyglot Support for the GraalVM
summary
A Graal/Truffle language server that automatically enable LSP for all Truffle languages wires the Truffle instrumentation API to the Language Server Protocol, uses Truffle frames and tags for globals/locals, and runs code in an in‑memory sandbox to collect types and members for runtime-observed completions. Implementers only add tags, implement Truffle interop for objects and subclass TruffleException for syntax errors. Prototype shows useful completions for SimpleLanguage, Graal Python and Squeak; limitations include no socket sandbox, reliance on unit tests to exercise code, and canceled long runs.
AI-written summary · about
chapters (9)
- 0:00The problem with tooling
- 2:07Truffle and instrumentation
- 4:41Language server integration
- 8:00Implementing editor support
- 12:38Dynamic analysis tools
- 15:03Technical implementation
- 18:41Handling dynamic challenges
- 22:16Limitations and conclusions
- 26:01Q&A and future directions
related talks
44mDeveloping a Language Plugin: LSP versus the Joy of Learning
14mExample-Based Live Programming for Everyone: Building Language-Agnostic Tools for Live Programming w
27mExecution vs. Parse-Based Language Servers
30mImproving the development experience with language servers
53mUnveiling the Mysteries of GraalVM's Least Understood Component
59mSupercompilation, Partial Evaluation, Futamura Projections and How GraalVM Will Save the World
37mWhat Is This GraalVM Thing?
36mExperiences Building a Language Server Protocol Plugin
