[cfe-dev] ClangD

Jusufadis Bakamovic via cfe-dev cfe-dev at lists.llvm.org
Wed Jan 25 06:34:22 PST 2017


Hi,

I think this is an excellent idea which should be pursued as far as
possible as it will enable us to seamlessly integrate multiple clang-based
services into the development environment. Possibly it will enable us to
integrate non-clang-based kind of services as well. I might say that I've
developed a (prototype) solution which somewhat resembles this idea
(implementation goes up to extent of my current needs & time resources).
See [1] for a short overview but in general it is a generic, message-queue
based, client-server architecture which acts as a thin proxy layer between
the client requests and concrete service implementation (i.e.
syntax-highlighting, clang-format, etc.). Server transparently makes sure
that each service is run in its own context (thread/process) and provides
full-control of services (startup-(all), shutdown-(all), run, etc.): see
[2] for server implementation. This way a service developer can completely
put focus on service implementation details itself without caring about
other details. See [3] for base service implementation and [4] & [5] for
examples of concrete service implementations (clang-format service &
syntax-highlight service).

What would be a way to get involved with ClangD?

Cheers,
Adi

[1]
https://github.com/JBakamovic/yavide/blob/master/docs/services_framework.md#framework
[2]
https://github.com/JBakamovic/yavide/blob/master/core/server/yavide_server.py
[3]
https://github.com/JBakamovic/yavide/blob/master/core/services/yavide_service.py
[4]
https://github.com/JBakamovic/yavide/blob/master/core/services/clang_formatter_service.py
[5]
https://github.com/JBakamovic/yavide/blob/master/core/services/syntax_highlighter_service.py


On 25 January 2017 at 14:11, Manuel Klimek via cfe-dev <
cfe-dev at lists.llvm.org> wrote:

> Hi fellow clang devs,
>
> we wanted to let you know that we're (finally) starting up work on ClangD,
> which you might know from email threads such as [1] (June 2012!).
>
> In the meantime, YCM had done a good enough job at packaging up a libclang
> interface to our favorite editors, and other priorities (like modules) have
> eaten up a lot of folks priority lunches.
>
> What has changed?
> 1. YCM is starting to develop more and more into a language multiplexer,
> with other languages (Go, Typescript, etc) providing their own servers to
> talk to
> 2. MS has created a language server protocol [2], which already has both a
> bunch of client and server implementations
> 3. Debugging through python into libclang crashers is a pain and eating
> our support resources
> 4. While libclang is a good abstraction if you want to have something run
> in your process with close coupling, a standard protocol like the language
> server protocol seems like a better way to allow fast iterations on the
> server implementation without the need to keep backward-compatibility hacks
> through a restrictive C API.
>
> One of the cool things about the MS language server protocol is that it
> seems to not actually do any networking, which means that we do not need to
> introduce any new dependencies into clang-tools-extra, which is where we
> want to start developing this.
>
> If you have any thoughts / concerns let me know; otherwise look forward to
> code reviews on initial ClangD dropping by :D
>
> Cheers,
> /Manuel
>
> [1] http://lists.llvm.org/pipermail/cfe-dev/2012-June/022028.html
> [2] https://github.com/Microsoft/language-server-protocol
>
>
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20170125/301e3a9e/attachment.html>


More information about the cfe-dev mailing list