[GSoC] "Language Server Protocol in D" - progress and update thread

Manish Khurana mkmanishkhurana98 at gmail.com
Wed May 29 10:17:43 UTC 2019


Hi everyone,

I have started working on my GSoC-2019 project "Language Server 
Protocol in D". This newsgroup thread is for posting progress and 
updates about the project.

-----------------
About the project
-----------------

Language Server Protocol (LSP) is JSON-RPC based protocol for use 
between source code editors or IDEs and servers that provide 
programming language-specific features. The idea behind the LSP 
is to standardize the protocol for how tools and servers 
communicate, so a single Language Server can be re-used in 
multiple development tools, and tools can support languages with 
minimal effort.

As of now, almost every language has a language server and almost 
all editors and IDEs are either having or developing support for 
LSP. D Language also has two language servers - DLS and DCD. 
Although these two language servers work very well, but they use 
libdparse library for lexing and parsing D source code and hence 
they still lack in some of the features like semantic analysis on 
AST and D's very powerful Compile-Time Function Evaluation (CTFE).

Recent developments in DMD made it available to be used as a 
library. This means the compiler can be reused and tools don’t 
have to re-implement complex features like CTFE. This project 
aims to develop a new fully-functional language server for D 
programming language using dmd library.

More details about project and project roadmap could be found at 
https://docs.google.com/document/d/15ogvupEgfDgX5RqZOqSbO4-Hz7gWOxIONB6H46tjbIc/edit?usp=sharing


----------
This Month
----------

* Improve dmd library to be properly used as a library.
* Implement protocol specifications by re-using code from DLS or 
serve-d.
* Add linting (i.e. showing error messages) support.
* Write test for linting.


----------
Next Month
----------

* Implement completion request as per specification. Use dmd 
library to get symbols matching the provided input.
* Implement go-to definition request as per specification. Use 
dmd library to find the location of symbol definition in the 
source files.
* Write tests for completion and go-to-definition requests.


--------
Blockers
--------

So far no blockers have been encountered.


More information about the Digitalmars-d mailing list