1 Punkte von GN⁺ 2025-05-30 | Noch keine Kommentare. | Auf WhatsApp teilen
  • Compiler Explorer hat seine Speicherstrategie seit 2012 mehrfach geändert, damit geteilte Links lange erhalten bleiben, doch das Ende von goo.gl macht die Bewahrung alter godbolt.org/g/abc123-Links nun dringend
  • Anfangs wurde der komplette Compiler-Zustand in der URL gespeichert, 2014 kam der Google-URL-Kürzungsdienst hinzu, und 2016 wurde nach dem Verbot verkürzter URLs auf Stack Overflow der Ausweichlink godbolt.org/g/abc123 eingeführt
  • Seit 2018, als URL-Längenbeschränkungen stärker zum Problem wurden, wird der Zustand als JSON-Dokument in S3 gespeichert, während DynamoDB die Zuordnung zwischen kurzem Hash und vollständigem Pfad verwaltet
  • Wenn Google goo.gl-Links im August 2025 abschaltet, wird die Auflösung alter goo.gl-basierter Links schwierig; deshalb werden rund 12.000 g-Links und ihre Redirect-Ziele aus dem öffentlichen Web und aus Logs in einer eigenen Datenbank gesammelt
  • Nutzer, die noch alte Compiler-Explorer-Links besitzen, können dazu beitragen, indem sie die Links jetzt aufrufen; gemeinsam genutztes Wissen, das lange bestehen soll, ist sicherer, wenn man die Kerninfrastruktur selbst besitzt

Änderungen bei der Speicherung von Compiler-Explorer-Links

  • 2012 wurde der komplette Zustand von Compiler Explorer in der URL selbst gespeichert
  • Das Kodieren des vollständigen Compiler-Zustands in die URL führte zu sehr langen und schwer handhabbaren Adressen; im März 2014 kam daher Unterstützung für Googles URL-Kürzer goo.gl hinzu
  • Kurze Links hatten damals die Form goo.gl/abc123; beim Anklicken erfolgte eine Weiterleitung auf die vollständige URL der Compiler-Explorer-Seite, danach wurde der in der URL enthaltene Zustand dekodiert

Ausweichlinks nach dem Stack-Overflow-Verbot

  • 2016 verbot Stack Overflow Link-Kürzungsdienste, weil damit das eigentliche Ziel verborgen werden konnte
  • Davon waren auch Compiler-Explorer-Links betroffen; damals bestand noch keine Absicht, Nutzerdaten selbst zu speichern
  • Die Ausweichlösung bestand darin, weiterhin goo.gl zu verwenden, den Nutzern aber Links der Form godbolt.org/g/abc123 anzubieten
    • abc123 war die eindeutige ID von goo.gl
    • Ein Aufruf von /g/abc123 wurde auf goo.gl/abc123 weitergeleitet
    • goo.gl leitete dann erneut auf die vollständige godbolt.org-URL mit dem enthaltenen Zustand weiter
  • Später wurde die Redirect-Kette mit mehreren Stationen durch die Nutzung der Google-API vermieden

Umstellung auf eigenen Speicher 2018

  • 2018 wurden URL-Längenbeschränkungen zu einem noch größeren Problem; die Daten in der URL wurden bereits komprimiert
  • Compiler Explorer stellte daher auf eine Struktur um, bei der der Zustand direkt gespeichert wird
    • Die Eingabe wird gehasht
    • Der Zustand wird als JSON-Dokument in S3 gespeichert
    • Eine Kurzform des Hashs wird als URL godbolt.org/z/hashbit bereitgestellt
    • DynamoDB speichert die Zuordnung zwischen kurzem Hash und vollständigem Pfad
  • Es wird außerdem geprüft, ob kurze Link-Hashes anstößige Wörter enthalten
    • Wenn ein anstößiges Wort erscheint, werden dem Dokument absichtlich zusätzliche Informationen hinzugefügt, damit ein anderer Hash entsteht
    • Dieses Verhalten führte zu Bug #1297

Das durch das Ende von goo.gl entstandene Bewahrungsproblem

  • Compiler Explorer unterstützt weiterhin godbolt.org/g/abc123-Links
  • Google sagte zwar, dass bestehende Links weiterhin auf ihr vorgesehenes Ziel weiterleiten würden, doch goo.gl wurde bereits vor einigen Jahren auf schreibgeschützt umgestellt und soll im August 2025 endgültig eingestellt werden
  • Danach lassen sich goo.gl-basierte Links nicht mehr auflösen
  • Die eigentlichen goo.gl-Links kann Compiler Explorer selbst nicht retten, aber godbolt.org/g/abc123-Links lassen sich in einer eigenen Datenbank bewahren

Sammlung bestehender Links und eigene Datenbank

  • In den letzten Tagen wurden aus verschiedenen öffentlichen Quellen bestehende Links und ihre Redirect-Ziel-URLs gesammelt
  • Bislang wurden etwa 12.000 Links gefunden
    • Google Web Search API
    • GitHub API
    • eigene Web-Logs
    • Stack-Overflow-Datendumps auf archive.org
    • von Archive.org archivierte Webseitenlisten
  • Intern wurde umgestellt, sodass die eigene Datenbank gegenüber goo.gl bevorzugt wird
  • Außerdem werden neue g-Links beobachtet, die noch nicht in der Datenbank vorhanden sind
  • Lokal gibt es eine sqlite-Datenbank, in Produktion wird Dynamo verwendet

Wie Nutzer helfen können

  • Wer noch alte godbolt.org/g/abc123-Links separat aufbewahrt, kann helfen, indem er jeden Link jetzt aufruft
  • Beim Aufruf erscheint der Link in den Web-Logs und kann später in die Datenbank aufgenommen werden
  • Andernfalls könnten diese Links nach August 2025 nicht mehr funktionieren
  • Der Fall zeigt das Risiko, wichtige Infrastruktur von Drittanbieterdiensten abhängig zu machen
  • Um das Versprechen „ewig gültiger URLs“ einzulösen, muss man den gesamten Stack selbst besitzen

Noch keine Kommentare.

Noch keine Kommentare.