- Ein Artikel über die Bedeutung von Abwärtskompatibilität in der Programmiersprache Go mit Fokus auf die neuen Funktionen von Go 1.21 und die Zukunft von Go 2
- Go 1.21 enthält neue Funktionen zur Verbesserung der Kompatibilität, mit dem Ziel, Go stabil und vorhersehbar zu halten, damit sich Entwickler auf ihre Arbeit statt auf Sprachänderungen konzentrieren können
- Das Go-Team legt seit mehr als zehn Jahren den Fokus auf Kompatibilität, mit der klaren Absicht, dass Programme, die gemäß der Go-1-Spezifikation geschrieben wurden, während der gesamten Lebensdauer dieser Spezifikation ohne Änderungen korrekt kompiliert und ausgeführt werden
- Es werden zwei zentrale Ansätze zur Wahrung der Kompatibilität erläutert: API-Prüfungen und Tests. API-Prüfungen stellen sicher, dass bestehende APIs nicht entfernt oder so verändert werden, dass bestehender Code bricht. Tests umfassen das Ausführen bestehender Tests gegen Entwicklungsversionen des nächsten Go-Releases
- Es werden Beispiele für subtile Kompatibilitätsprobleme vorgestellt, die durch Tests von Go innerhalb von Google entdeckt wurden, etwa bei Struct-Literalen und neuen Feldern sowie bei der Zeitpräzision
- Kompatibilitätsprobleme werden in drei Kategorien eingeteilt: Änderungen an Ausgaben, Änderungen an Eingaben und Änderungen an Protokollen
- Go 1.21 verbessert die Abwärtskompatibilität, indem die Verwendung von GODEBUG erweitert und formalisiert wird. GODEBUG-Einstellungen bleiben mindestens zwei Jahre erhalten und werden so gesetzt, dass sie mit der in der
go.mod-Datei des Main-Pakets aufgeführten Go-Version übereinstimmen
- Der Artikel endet mit einem Update zu Go 2 und kündigt an, dass es kein Go 2 geben wird, das Go-1-Programme bricht. Stattdessen wird das Go-Team der Kompatibilität Vorrang geben und hält dies für die wichtigste Designentscheidung, die für Go 1 getroffen wurde
1 Kommentare
Hacker-News-Kommentar
go-Toolchains beziehen.