<div dir="ltr">Hi,<div><br></div><div>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).  </div><div><br></div><div>What would be a way to get involved with ClangD?</div><div><br></div><div>Cheers,</div><div>Adi</div><div><br></div><div>[1] <a href="https://github.com/JBakamovic/yavide/blob/master/docs/services_framework.md#framework">https://github.com/JBakamovic/yavide/blob/master/docs/services_framework.md#framework</a></div><div>[2] <a href="https://github.com/JBakamovic/yavide/blob/master/core/server/yavide_server.py">https://github.com/JBakamovic/yavide/blob/master/core/server/yavide_server.py</a></div><div>[3] <a href="https://github.com/JBakamovic/yavide/blob/master/core/services/yavide_service.py">https://github.com/JBakamovic/yavide/blob/master/core/services/yavide_service.py</a></div><div>[4] <a href="https://github.com/JBakamovic/yavide/blob/master/core/services/clang_formatter_service.py">https://github.com/JBakamovic/yavide/blob/master/core/services/clang_formatter_service.py</a><br></div><div>[5] <a href="https://github.com/JBakamovic/yavide/blob/master/core/services/syntax_highlighter_service.py">https://github.com/JBakamovic/yavide/blob/master/core/services/syntax_highlighter_service.py</a></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On 25 January 2017 at 14:11, Manuel Klimek via cfe-dev <span dir="ltr"><<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hi fellow clang devs,<div><br></div><div>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!).</div><div><br></div><div>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.</div><div><br></div><div>What has changed?</div><div>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</div><div>2. MS has created a language server protocol [2], which already has both a bunch of client and server implementations</div><div>3. Debugging through python into libclang crashers is a pain and eating our support resources</div><div>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.</div><div><br></div><div>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.</div><div><br></div><div>If you have any thoughts / concerns let me know; otherwise look forward to code reviews on initial ClangD dropping by :D</div><div><br></div><div>Cheers,</div><div>/Manuel</div><div><br></div><div>[1] <a href="http://lists.llvm.org/pipermail/cfe-dev/2012-June/022028.html" target="_blank">http://lists.llvm.org/<wbr>pipermail/cfe-dev/2012-June/<wbr>022028.html</a></div><div>[2] <a href="https://github.com/Microsoft/language-server-protocol" target="_blank">https://github.com/<wbr>Microsoft/language-server-<wbr>protocol</a></div><div><br></div></div>
<br>______________________________<wbr>_________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@lists.llvm.org">cfe-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/cfe-dev</a><br>
<br></blockquote></div><br></div>