<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <p><br>
    </p>
    <br>
    <div class="moz-cite-prefix">On 2017-08-10 05:56 AM, Ilya Biryukov
      wrote:<br>
    </div>
    <blockquote type="cite"
cite="mid:CANmbtFfo2eDh+R2MnnUU4T==jmJ-6Jhkz-P047y2jK6au=-1oQ@mail.gmail.com">
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
      <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 moz-do-not-send="true"
href="https://github.com/MarkZ3/clang-tools-extra/commits/IndexFunctionsPrototype">https://github.com/MarkZ3/clang-tools-extra/commits/IndexFunctionsPrototype</a><br>
    <br>
    Regards,<br>
    Marc-AndrĂ©<br>
    <br>
    <blockquote type="cite"
cite="mid:CANmbtFfo2eDh+R2MnnUU4T==jmJ-6Jhkz-P047y2jK6au=-1oQ@mail.gmail.com">
      <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>
  </body>
</html>