Dev News Daily ENDE

Ein Rust-Entwickler baute seine JSONPath-Bibliothek in Zig nach — überrascht hat ihn das Werkzeug

Sprachvergleiche schreiben meist Leute, die ein Wochenende mit der neuen Sprache verbracht haben. Dieser Bericht lohnt sich, weil sich der Autor eine härtere Probe ausgesucht hat: Er pflegt bereits eine JSONPath-Implementierung in Rust — jene Abfragesprache, die als RFC 9535 standardisiert ist — und hat dasselbe noch einmal in Zig gebaut. Damit lassen sich beide Fassungen Funktion für Funktion nebeneinanderlegen statt nach Gefühl zu vergleichen.

Drei Beobachtungen sind es wert, mitgenommen zu werden.

Die fehlende IDE wurde zur eigentlichen Geschichte. Gewohnt an eine vollständige JetBrains-Umgebung, fand er bei Zig kaum mehr als Syntaxhervorhebung und einfache Vervollständigung. Der Ausweg: alles über build.zig von der Kommandozeile — benannte Schritte für die Testsuite, ein gefilterter Einzeltest, eine Debug-Variante, die Compliance-Suite. Interessant ist sein Fazit: Was als Mangel begann, endete als Vorliebe und schob ihn ganz aus der IDE heraus.

Allokatoren sind die Sprache, kein Detail an ihr. Fast jede Funktion nimmt einen entgegen, fast jede Struktur hält einen. Niemand, der die Dokumentation liest, wird davon überrascht — aber über explizite Allokation zu lesen und für die Länge einer echten Bibliothek darin zu leben, sind zwei verschiedene Erfahrungen. Der Text ist ehrlich darin, dass der Preis in jeder Signatur steht.

Flach schlägt verschachtelt, und die Sprache besteht leise darauf. Rust lässt einen das Verhältnis von Dateigröße und Ordnertiefe so lange austarieren, wie die Geduld reicht. Zig macht Verschachtelung mild unbequem — und stellt damit die Frage, was die Tiefe eigentlich einbringt. Seine Antwort nach dem Umbau: weniger als angenommen.

Ein Rust-Entwickler baute seine JSONPath-Bibliothek in Zig nach — überrascht hat ihn das Werkzeug
Ein Rust-Entwickler baute seine JSONPath-Bibliothek in Zig nach — überrascht hat ihn das Werkzeug — Dev News Daily

Was das bedeutet

Eine Neuimplementierung durch denselben Autor ist der einzige faire Sprachvergleich — und sie ist selten. Der übliche Artikel stellt das erste Zig-Projekt gegen das zehnte Rust-Jahr. Hier bleiben Domäne, Spezifikation und Person konstant; was an Unterschieden übrig bleibt, hat eher mit den Sprachen zu tun. Wer eine Sprache fürs Team bewertet, sollte nach genau dieser Form von Beleg fragen — nicht nach Benchmarks, nicht nach Syntaxführungen.

Werkzeug ist ein Sprachmerkmal, und Teams bepreisen es mit null. Was in den meisten Häusern über die Einführung entscheidet, ist nicht das Allokatormodell, sondern dass jemand aus einer reifen IDE die ersten Wochen damit verbringt, seinen Arbeitsablauf neu zu bauen. Diese Kosten sind real, sie fallen bei jeder Einstellung erneut an — und sie stehen selten im Bewertungsdokument, während über den Borrow-Checker gestritten wird, der ein Ein-Wochen-Problem ist.

Und man beachte, was der Autor nicht behauptet. Er stellt vorneweg klar, dass dies sein erstes Zig-Projekt ist, dass manche Entscheidung eine Rust-Gewohnheit war und kein Zig-Idiom, und dass geübte Leser Stellen naiv finden werden. Ein Erfahrungsbericht, der seine eigenen Grenzen benennt, nützt mehr als ein sicheres Urteil — und ist der Grund, warum dieser zwanzig Minuten wert ist.

Beide Bibliotheken sind im Beitrag verlinkt, der Vergleich lässt sich also prüfen statt glauben.