<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none;"><!-- P {margin-top:0;margin-bottom:0;} --></style>
</head>
<body dir="ltr">
<div id="divtagdefaultwrapper" style="font-size: 12pt; color: rgb(0, 0, 0); font-family: Calibri,Helvetica,sans-serif,"EmojiFont","Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols;" dir="ltr">
<p><span class="OWAAutoLink">Hi!</span></p>
<p><span class="OWAAutoLink"><br>
</span></p>
<p><span class="OWAAutoLink">Just a for a quick update: I'm in the process of making small patches for review, as you might have seen already. I also work in parallel on fixing bugs and polishing the different component that are not as ready, on the Github
 branch. I though maybe it would be useful to have more information of what's currently there so I added a README to the branch and will keep it up to date as I change things.</span><a href="https://raw.githubusercontent.com/MarkZ3/clang-tools-extra/79b0506f8afecb806a5acb763849147c1585df78/clangd/index/README" class="OWAAutoLink" id="LPlnk738390" previewremoved="true"><br>
</a></p>
<p><a href="https://raw.githubusercontent.com/MarkZ3/clang-tools-extra/79b0506f8afecb806a5acb763849147c1585df78/clangd/index/README" class="OWAAutoLink" id="LPlnk738390" previewremoved="true"><br>
</a></p>
<p><a href="https://raw.githubusercontent.com/MarkZ3/clang-tools-extra/IndexFunctionsPrototype/clangd/index/README" class="OWAAutoLink" id="LPlnk738390" previewremoved="true"></a><a href="https://raw.githubusercontent.com/MarkZ3/clang-tools-extra/IndexFunctionsPrototype/clangd/index/README" class="OWAAutoLink" id="LPlnk28873" previewremoved="true">https://raw.githubusercontent.com/MarkZ3/clang-tools-extra/IndexFunctionsPrototype/clangd/index/README</a><br>
</p>
<p><span class="OWAAutoLink"><br>
</span></p>
<p><span class="OWAAutoLink">I have also done some experimentation with LMDB and its been pretty positive, although I am not sure about the possibility of adding it as a dependency as of now.<br>
</span></p>
<p><span class="OWAAutoLink"><br>
</span></p>
<p><span class="OWAAutoLink">Regards,<br>
</span></p>
<p><span class="OWAAutoLink">Marc-André</span><a href="https://raw.githubusercontent.com/MarkZ3/clang-tools-extra/79b0506f8afecb806a5acb763849147c1585df78/clangd/index/README" class="OWAAutoLink" id="LPlnk738390" previewremoved="true"></a><br>
</p>
<br>
<br>
<div style="color: rgb(0, 0, 0);">
<hr tabindex="-1" style="display:inline-block; width:98%">
<div id="divRplyFwdMsg" dir="ltr"><font style="font-size:11pt" face="Calibri, sans-serif" color="#000000"><b>From:</b> Marc-André Laperle <marc-andre.laperle@ericsson.com><br>
<b>Sent:</b> Friday, September 8, 2017 4:39 PM<br>
<b>To:</b> Ilya Biryukov<br>
<b>Cc:</b> via cfe-dev; zeratul976@hotmail.com; Doug Schaefer<br>
<b>Subject:</b> Re: [cfe-dev] Adding indexing support to Clangd</font>
<div> </div>
</div>
<div>
<p><br>
</p>
<br>
<div class="moz-cite-prefix">On 2017-08-10 05:56 AM, Ilya Biryukov wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">One thing that is really important for us at Google is to come up with the index interface (for both querying and building an index) that would allow an alternative implementation that could scale for larger codebases.
<div>That should not require significant changes to your design, merely extracting a few interface classes and figuring out the APIs should be easy.</div>
<div>We could figure it all out during the review process and I would highly encourage to start a review as early as possible.</div>
<div><br>
</div>
</div>
</blockquote>
<br>
It's good to know that you are interested in replacing the implementation. The higher level classes are not very polished right now so as I improve things, I will keep that in mind. For example, right now, the data storage component is not fully hidden from
 the indexing interface.<br>
<br>
BTW, I started putting the indexing prototype on Github [1]. The lower level "storage" parts (ClangdIndexDataStorage, BTree) I think could be ready for review soon but with the discussions about Sqlite and LMDB, I'm not sure if that's the way to go yet. I'll
 have to research more LMDB especially and also in the light of the index-while-building proposal.<br>
The file event handling, indexing operations and model are all prototype level so not ready for review yet (lots of TODOs and *long* methods) but they help to know how the pieces can fit together. The index-while-building proposal contains some good ideas on
 how to model things too and I think it makes sense to align on that. There are also some protocol parts in the prototype that could also be reviewed soon, if it's OK for some handlers to not do anything for a while.<br>
I'll determine what the next steps should be and keep you posted.<br>
<br>
[1] <a href="https://github.com/MarkZ3/clang-tools-extra/commits/IndexFunctionsPrototype" id="LPlnk637258" previewremoved="true">
https://github.com/MarkZ3/clang-tools-extra/commits/IndexFunctionsPrototype</a><br>
<br>
Regards,<br>
Marc-André<br>
<br>
<blockquote type="cite">
<div dir="ltr">
<div>We could add the index modification APIs during the review process as well.<br>
</div>
<div>
<div>The lack of header caching in the first implementation is fine. That's something we should iterate on later. That's a hard problem and it seems fine if we solve it separately.</div>
</div>
<div><br>
</div>
<div>Wish you a great vacation!<br>
</div>
<div><br>
</div>
<div class="gmail_extra">
<div class="gmail_quote">
<div>--</div>
</div>
<div class="gmail_signature">
<div dir="ltr">
<div>
<div dir="ltr">
<div>Regards,</div>
<div>Ilya Biryukov</div>
</div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
<br>
</div>
</div>
</div>
</body>
</html>