I had the pleasure to participate to EclipseCon 2022 last October, near Stuttgart in Germany. It was a great conference and the opportunity to meet with the Eclipse community. I was there with several other members of the Obeo team to share our work on Sirius Web.
I had the chance to be part of the program, with Benoît Lelandais from the CEA DAM (Military Applications Division of the French Nuclear Agency), to talk about creating a VSCode extension to manipulate the NabLab DSL.
NabLab is an open-source research project led by HPC initiative of the CEA. It aims to provide a productive development way for exascale High-Performance Computing technologies, flexible enough to be competitive in terms of performance. It is composed of:
- a numerical analysis Domain Specific Language (DSL) to improve applied mathematicians' productivity throughput and enables new algorithmic developments for the construction of hierarchical and composable high-performance scientific applications. The DSL can be used and edited through textual editors (Xtext) and visualized through a graphical editor (Sirius).
- a full-fledged environment to edit, interpret, and debug specific numerical-analysis sources and to generate optimized code for various C++ targets. The result is an Eclipse RCP product based on the following technologies: Eclipse Sirius, EMF, Xtext, CDT, and JDT.
Nablab in Eclipse
End-users use Eclipse NabLab RCP for years now. They also use VSCode/VSCodium for their C++ developments. Based on this need, they now want to manipulate the NabLab DSL (textually and graphically) directly in VSCode/VSCodium.
In this talk we have presented the challenges of creating a VSCode extension using LSP, Xtext-LSP, and Sirius Web to manipulate the NabLab DSL (the existing one from Eclipse, not a new one!).
Nablab in VSCode
We answered the following questions:
- Is it possible to share the same Xtext grammar between an RCP product and a VSCode extension?
- Is it possible to share the same Xtext grammar editor tooling between an RCP product and a VSCode extension?
- Is it possible to share the same Sirius model specification between an RCP product and a VSCode extension?
- How LSP has been used in our context?