<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><div>On Jun 12, 2012, at 3:43 AM, Chandler Carruth wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">Greetings all!<div><br></div><div>What follows is a fairly lengthy and detailed design document for a proposed persistent Clang server (or clangd in unix-terms) to serve as infrastructure for increasingly advanced and interactive C++ tools. It should generalize and build upon libclang, and will allow us to effectively target Vim, Emacs, and other editors. This is something we're planning to pursue in the near term, so I'd appreciate any and all feedback.</div>
<div><br></div><div>Here is a Google Docs link you can use to view and comment on the proposal:</div><div><a href="https://docs.google.com/document/d/1kNv2jJK0I0JGnxJxU6w5lUOlrIBoecU4fi9d_o5e2-c/edit">https://docs.google.com/document/d/1kNv2jJK0I0JGnxJxU6w5lUOlrIBoecU4fi9d_o5e2-c/edit</a></div>
<div><br></div><div>Its interim home is on github here, where you can see the history and the actual rest version in all its glory:</div><div><a href="https://github.com/chandlerc/llvm-designs/blob/master/ClangService.rst">https://github.com/chandlerc/llvm-designs/blob/master/ClangService.rst</a></div>
<div><br></div><div>I've also attached the text for email-based comments.</div></blockquote><div><br></div><div>Very interesting! A couple of comments:</div><div><br></div><div>-Please do make sure that the IPC layer is high-level and general enough to allow implementing it using XPC services at the Mac platform.</div><div><br></div><div><br></div><div><blockquote type="cite"><div style="background-color: transparent; font-family: Times; "><b id="internal-source-marker_0.9162692013196647" style="font-weight: normal; "><ul style="margin-top: 0pt; margin-bottom: 0pt; "><ul style="margin-top: 0pt; margin-bottom: 0pt; "><li style="list-style-type: circle; font-size: 15px; font-family: Arial; color: rgb(51, 51, 51); background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; margin-left: -48px; "><span style="font-size: 15px; font-family: Arial; color: rgb(51, 51, 51); background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Clients using only the narrow API should be able to switch trivially between the two libraries to get IPC vs. internal process behavior.</span></li></ul></ul></b></div></blockquote><div>[...]</div></div><div><blockquote type="cite"><div style="background-color: transparent; font-family: Times; "><b id="internal-source-marker_0.9162692013196647" style="font-weight: normal; "><span style="font-size: 15px; font-family: Arial; color: rgb(51, 51, 51); background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Wrapping the C++ client libraries will be a API and ABI stable C library. This will very closely resemble (and ideally end up largely source-compatible with) the highest-level libclang APIs</span></b></div></blockquote><br></div><div>I doubt that being source-compatible between libclang API and clang-server API is a useful enough goal to justify limiting the design of the clang-server API to current libclang APIs.</div><div>Clients will end up designed specifically for libclang or the clang-server, (e.g shouldn't a clang-server client be designed to be fault-tolerant ?) and IMHO the primary clang-server API should be designed to be asynchronous ("equivalent" synchronous functions can optionally be added on top).</div><br><blockquote type="cite"><div><br></div><div>Thanks!</div><div>-Chandler</div><div><br></div>
<span><ClangService.rst.txt></span>_______________________________________________<br>cfe-dev mailing list<br><a href="mailto:cfe-dev@cs.uiuc.edu">cfe-dev@cs.uiuc.edu</a><br>http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev<br></blockquote></div><br></body></html>