Часто ли вы сталкивались с необходимостью при чтении чужого пулл-реквеста переходить в полноценную IDE, потому что в веб-платформе не хватает нормальной навигации по коду? А задумывались, откуда эта проблема, как её решить? Расскажем о том, как подошли к решению этой задачи в новой платформе для разработчиков SourceCraft от Яндекса. Мы сделали систему инкрементальных индексов на каждый коммит для поиска декларации/использований кода в репозитории. Открываешь коммит — и поиск работает моментально, ничего на стороне клиента/сервера не надо перестраивать. Работая с любой платформой для разработчиков, мы постоянно пополняем кодовую базу своего проекта. Каждый коммит порождает новую версию модели кода и ее индексов. Все подобные инструменты сталкиваются с этой проблемой, и чаще всего никто не берётся за её решение. Мы в Яндексе при разработке собственной платформы для разработчиков SourceCraft решили эту задачу. Для этого разработали свою систему индексов, основанную на иммутабельных инкрементальных структурах данных. В докладе поделимся архитектурными приёмами, какие структуры данных нужны для различных сценариев и как мы их храним. Далее рассмотрим конкретные примеры индексов, необходимых для решения задач навигации по коду. Обсудим отличия от IDE и к каким техническим решениям это приводит. Детально разберем алгоритмы под капотом нашей системы. golangconf.ru/moscow/2024/abstracts/13738