<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>Le 12 juin 2012 à 20:22, Manuel Klimek a écrit :</div><br class="Apple-interchange-newline"><blockquote type="cite"><div class="gmail_quote">On Tue, Jun 12, 2012 at 8:12 PM, Eli Bendersky <span dir="ltr"><<a href="mailto:eliben@gmail.com" target="_blank">eliben@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="HOEnZb"><div class="h5">On Tue, Jun 12, 2012 at 12:43 PM, Chandler Carruth <<a href="mailto:chandlerc@gmail.com">chandlerc@gmail.com</a>> wrote:<br>
> Greetings all!<br>
><br>
> What follows is a fairly lengthy and detailed design document for a proposed<br>
> persistent Clang server (or clangd in unix-terms) to serve as infrastructure<br>
> for increasingly advanced and interactive C++ tools. It should generalize<br>
> and build upon libclang, and will allow us to effectively target Vim, Emacs,<br>
> and other editors. This is something we're planning to pursue in the near<br>
> term, so I'd appreciate any and all feedback.<br>
><br>
> Here is a Google Docs link you can use to view and comment on the proposal:<br>
> <a href="https://docs.google.com/document/d/1kNv2jJK0I0JGnxJxU6w5lUOlrIBoecU4fi9d_o5e2-c/edit" target="_blank">https://docs.google.com/document/d/1kNv2jJK0I0JGnxJxU6w5lUOlrIBoecU4fi9d_o5e2-c/edit</a><br>
><br>
> Its interim home is on github here, where you can see the history and the<br>
> actual rest version in all its glory:<br>
> <a href="https://github.com/chandlerc/llvm-designs/blob/master/ClangService.rst" target="_blank">https://github.com/chandlerc/llvm-designs/blob/master/ClangService.rst</a><br>
><br>
> I've also attached the text for email-based comments.<br>
<br>
</div></div>Great proposal, I really like the potential of such a project - it's<br>
exactly the kind of service that can start with one thing in mind and<br>
then find itself adapted for various interesting uses. That said, your<br>
initial proposed application is awesome and itself worth the effort -<br>
having real IDE-ish code completion and indexing in Vim & Emacs could<br>
be awesome.<br>
<br>
Some minor comments on the design document:<br>
<br>
* Goal: "Provide a restartable, long-lived background process which<br>
manages caching, compilation, indexes, and performs the business<br>
logic."<br>
<br>
What does "compilation" mean in this context? From the rest of the<br>
document I understand Clang is only used for its analysis features,<br>
not for actual code generation or full compilation.<br>
<br>
* "The crazy stretch goal for this is O(1ms) for code-completion with<br>
fully warm and primed caches."<br>
<br>
It really sounds overly ambitious, taking IPC and a fairly complex<br>
code-base into account. Why 1ms, though? Since this is user<br>
interaction application, isn't 1ms far, far below the human detection<br>
threshold?<br></blockquote><div><br></div><div>Well, people argue about what is "far below the human detection threshold". For example, I (personally, no idea how much chandler agrees) want this service to just take my keystrokes and be able to give me contextual information updated while I type. That would require getting close to the 1ms.</div></div></blockquote><div><br></div>Do you really managed to type 1000 chars per seconds ? For the record, with a 60Hz screen, each frame is displayed 16ms, so even if you were able to type faster than that and query completion for each keystroke, you would not be able to display all results.<br><div><br></div><blockquote type="cite"><div class="gmail_quote"><div>Cheers,</div><div>/Manuel</div><div> </div></div></blockquote><br></div><div><br></div><div><br></div><div>
<span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><div>-- Jean-Daniel</div><div><br></div><div><br></div></span><br class="Apple-interchange-newline">
</div>
<br></body></html>