GitHub Code Search: Eigene Suchmaschine in Rust

Das Team von GitHub hat nach drei Jahren Entwicklungsarbeit die generelle Verfügbarkeit der in Rust geschriebenen Code-Suchmaschine bekanntgegeben.

In Pocket speichern vorlesen Druckansicht
Lesezeit: 3 Min.
Von
  • Frank-Michael Schlede

GitHub will die Suche nach Code auf der eigenen Plattform für Entwickler und Entwicklerinnen nicht nur vereinfachen, sondern auch deutlich schneller machen. Dazu hat das Entwicklerteam drei Jahre lang an einer eigenen Software für die Suche gearbeitet, die in Rust geschrieben wurde und nun allgemein zur Verfügung steht.

Schon Ende 2021 hatte das Entwicklerteam von GitHub eine "Technology Preview" vorgestellt, die die Verbesserung der Codesuche auf GitHub ankündigte. Der GitHub-Entwickler Colin Merkel beschreibt in seinem aktuellen Blogeintrag das Ziel der neuen Codesuche und Codeansicht so, dass dieses Feature es Entwicklern und Entwicklerinnen ermöglichen soll, wichtige Informationen, die über ihre Codebasis verstreut sind, schnell zu finden und diese Informationen in einen Kontext zu stellen.

Das neue Code Search im Einsatz: Suchergebnisse für die Abfrage "saved:blackbird lang:yaml memory".

(Bild: GitHub)

Die Projektziele waren insgesamt recht ambitioniert: Verlangt waren neben der Indizierung des gesamten Quellcodes auf GitHub auch die Unterstützung von inkrementeller Indizierung und Dokumentenlöschung sowie schnelle Exact-Match- und Regex-Abfragen. Zudem war die Integration ohne GitHub-Code-Informationen gefordert, ohne dass sich bei all diesen Vorgängen die Ressourcenanforderungen an den bestehenden Elasticsearch-Cluster von GitHub erhöhen.

Das GitHub-Team hat dazu eine neu gestaltete Suchoberfläche entworfen, die mit Vorschlägen, Vervollständigungen und der Möglichkeit, die Ergebnisse zu zerschneiden und zu würfeln, aufwarten kann. Weiterhin hat es eine Code-Suchmaschine entworfen, die von den Entwicklerinnen und Entwicklern von Grund auf neu entwickelt wurde. Sie soll etwa doppelt so schnell wie die alte Codesuche und auch leistungsfähiger sein.

Die Suchmaschine unterstützt jetzt auch Teilstring-Abfragen, reguläre Ausdrücke sowie Symbolsuche und versteht laut Aussagen des Teams den Code, sodass die relevantesten Ergebnisse an erster Stelle stehen. Auch die Codeansicht von GitHub wurde neu gestaltet, wobei die Suche, das Browsing und die Codenavigation nun eng miteinander verknüpft sind.

Die neue Suchmaschine für GitHub.com wurde komplett in Rust entwickelt und trägt intern die Bezeichnung "Blackbird". Diese neue Technik bietet laut GitHub den Zugang zu mehr als 200 Millionen GitHub-Repositories, die insgesamt 115 TByte an Code und 15,5 Milliarden Dokumente enthalten. In einem sehr ausführlichen Blogeintrag aus dem Februar 2023 erläuterte das Entwicklerteam, dass es schon von Anfang an bei GitHub versucht habe, vorhandene Software zur Lösung der Probleme bei der Suche nach Code einzusetzen.

So nutzte GitHub zunächst Apache Solr für die Codesuche. Nachdem Solr in Lucene aufgegangen war, baute das Team 2013 einen neuen Suchdienst mit Elasticsearch auf. Daraufhin folgten einige Ausfälle, sodass 2020 die Arbeit an Blackbird startete.

Entwickler und Entwicklerinnen, die genauer wissen möchten, wie das GitHub-Team diese neue Suche entwickelt hat, wie diese im Detail funktioniert und warum es wenig sinnvoll ist, einfach nur grep zur Suche in den Repositories einzusetzen, können in einem ausführlichen Blogeintrag und in der Dokumentation zu GitHub-Suche Informationen darüber finden.

(fms)