Go 1.26 Release: Green Tea GC, Post-Quantum-Sicherheit und Sprachverbesserungen
Go 1.26, veröffentlicht im Februar 2026, liefert messbare Leistungssteigerungen und Sicherheitshärtung, die jede Go-Anwendung betreffen - ohne dass Codeänderungen erforderlich sind. Die Hauptfunktionen - ein Garbage Collector, der den GC-Overhead um 10-40% reduziert, standardmässig aktiviertes Post-Quantum-TLS und zwei ergonomische Spracherweiterungen - machen dieses Release zu einem der wirkungsvollsten der letzten Jahre.
Dieses Release folgt dem sechsmonatigen Standardzyklus von Go nach Go 1.25 und wahrt das Go 1-Kompatibilitätsversprechen. Bestehende Programme lassen sich weiterhin ohne Änderungen kompilieren und ausführen. Die Verbesserungen umfassen vier Bereiche: Laufzeitleistung (Green Tea GC, cgo, Allokationen), kryptografische Sicherheit (Post-Quantum-TLS, HPKE), Sprachergonomie (erweitertes new(), selbstreferenzielle Generics) und Entwicklerwerkzeuge (neu geschriebenes go fix mit über 20 automatisierten Modernisierern).
Dieser Artikel behandelt jedes wichtige Feature in Go 1.26, seine praktischen Auswirkungen auf Produktionssysteme, Migrationsaspekte und experimentelle Funktionen, die die künftige Richtung von Go anzeigen.
Green Tea Garbage Collector
Der Green Tea Garbage Collector reduziert den GC-Overhead bei realen Workloads um 10-40% und ist in Go 1.26 standardmässig aktiviert. Er erfordert keinerlei Codeänderungen - jede Go-Anwendung profitiert sofort nach dem Upgrade.
Green Tea verwendet denselben Mark-Sweep-Ansatz wie der bisherige Collector, arbeitet jedoch auf der Ebene von Speicherseiten statt einzelne Objekte zu scannen. Kleine Objekte unter 512 Bytes werden auf der 8-KiB-Span-Ebene verarbeitet, wodurch zufälliges Pointer-Chasing in sequenzielles Speicher-Scanning umgewandelt wird. Allein diese Änderung ist für den Grossteil der Leistungsverbesserung verantwortlich, da sequenzielle Zugriffsmuster auf modernen CPU-Cache-Hierarchien deutlich schneller sind.
Auf CPUs mit AVX-512-Unterstützung (Intel Ice Lake und neuer, AMD Zen 4+) erzielt der Collector eine zusätzliche Verbesserung von 10%. Die 512-Bit-Vektorregister verarbeiten 64 Bytes an Seiten-Metadaten parallel, was die GC-Pausenzeiten weiter verkürzt. Laut dem ausführlichen Blogbeitrag des Go-Teams erfolgt diese Optimierung automatisch und erfordert keine Konfiguration.
Auswirkungen auf Produktionsdienste
Der Green Tea GC reduziert direkt die Tail-Latenz für allokationsintensive Microservices und API-Server. Jede Anwendung, die häufig kleine Objekte allokiert - was auf die meisten Go-Webdienste zutrifft - verzeichnet eine messbare Verbesserung. Die Vorteile zeigen sich besonders deutlich bei Diensten mit hohen Anforderungsraten und engen Latenzbudgets.
Für Teams, die das Verhalten zunächst validieren möchten, bietet Go 1.26 ein Fallback-Flag: GOEXPERIMENT=nogreenteagc. Dieses Flag wird in Go 1.27 entfernt und dient daher als temporäre Rückfalloption während der Übergangsphase.
Sprachänderungen
Go 1.26 führt zwei Sprachänderungen ein, die die Entwicklerergonomie verbessern, ohne die Abwärtskompatibilität zu beeinträchtigen: Die eingebaute Funktion new() akzeptiert nun einen Ausdruck für eine einstufige Pointer-Initialisierung, und generische Typen können sich in ihren Typparameterlisten selbst referenzieren.
Erweiterte new()-Funktion
Bisher akzeptierte new() nur einen Typ und gab einen Pointer mit Nullwert zurück. Go 1.26 erweitert die Funktion um einen Ausdruck: new(expr) allokiert Speicher und initialisiert den Pointer in einem einzigen Schritt. Damit entfällt das häufige Muster, eine Zwischenvariable nur zu erstellen, um deren Adresse zu nehmen.
Betrachten Sie ein Struct-Feld, das einen initialisierten Pointer erfordert. Vor Go 1.26 benötigten Sie eine temporäre Variable:
// Vor Go 1.26
age := yearsSince(born)
person := Person{Age: &age}
// Go 1.26
person := Person{Age: new(yearsSince(born))}
Wie Chris Siebenmann erläutert, beseitigt diese Änderung ein Privileg, das zuvor nur Struct- und Composite-Literals bei der Erstellung initialisierter Pointer hatten. Der Vorschlag (#45624) stammt aus dem Jahr 2021, und seine Aufnahme in Go 1.26 löst einen langjährigen ergonomischen Reibungspunkt.
Selbstreferenzielle generische Typen
Generische Typen können sich nun in ihren Typparameterlisten selbst referenzieren. Dies ermöglicht Muster, die zuvor unmöglich waren oder umständliche Workarounds erforderten. Das kanonische Beispiel ist ein selbstreferenzielles Interface-Constraint:
type Adder[A Adder[A]] interface {
Add(A) A
}
Dieses Muster ist wertvoll für den Aufbau typsicherer mathematischer Abstraktionen, verketteter Datenstrukturen und vergleichbarer Interfaces, bei denen der implementierende Typ mit seinem eigenen Typ arbeiten muss. Die Änderung macht das Typsystem von Go für Bibliotheksautoren, die generische APIs entwerfen, ausdrucksstärker.
Leistungsverbesserungen jenseits des GC
Neben dem Green Tea GC liefert Go 1.26 etwa 30% geringeren cgo-Overhead, erweiterte Stack-Allokation für Slices, bis zu 30% günstigere Allokationen kleiner Objekte und ein circa 2x schnelleres io.ReadAll(). Diese Verbesserungen potenzieren sich in typischen Go-Diensten.
Der Basis-Overhead für cgo-Aufrufe wurde um etwa 30% reduziert. Dies wirkt sich direkt auf jedes System aus, das über cgo mit nativen Bibliotheken interagiert - Datenbanktreiber, kryptografische Stacks, Machine-Learning-Inferenz-Engines und Systemaufrufe profitieren gleichermassen. Teams, die sich auf professionelle Webentwicklung in Deutschland spezialisieren, werden diese Verbesserungen direkt in kürzeren Antwortzeiten spüren. Wie Phoronix berichtet, erfordert die Verbesserung keine Codeänderungen und gilt für alle bestehenden cgo-Aufrufe.
Der Compiler platziert Slice-Backing-Stores nun in mehr Situationen auf dem Stack und erweitert damit die in Go 1.25 eingeführte Optimierung. Das Muster append(make(S, 0, len(s)), s...) kann in vielen Fällen nun null Heap-Allokationen erreichen. Zum Debuggen stellt Go das Bisect-Tool mit dem Flag -compile=variablemake bereit.
Grössenspezifische Allokationsroutinen reduzieren die Kosten für Allokationen kleiner Objekte (unter 512 Bytes) um bis zu 30%. Der Compiler generiert Aufrufe dieser spezialisierten Routinen anstelle des Allzweck-Allokators, was Verzweigungen eliminiert und den Overhead pro Allokation reduziert.
Leistung der Standardbibliothek
io.ReadAll() ist etwa 2x schneller bei circa 50% weniger Speicherverbrauch für grosse Eingaben. Diese Funktion wird häufig in HTTP-Handlern, Dateiverarbeitung und Test-Helfern verwendet, sodass die Verbesserung breite Auswirkungen auf Go-Codebasen hat.
Weitere Verbesserungen der Standardbibliothek umfassen eine neue, schnellere Implementierung des image/jpeg-Encoders und -Decoders sowie fmt.Errorf("x"), das nun weniger Speicher allokiert und damit näher an die Leistung von errors.New() heranrückt. Diese Mikrooptimierungen summieren sich in Hochdurchsatz-Diensten, in denen jede Allokation zählt, einschliesslich Plattformen für Online-Marketing, die grosse Mengen gleichzeitiger Anfragen verarbeiten.
Post-Quantum-Sicherheit und Kryptografie
Go 1.26 aktiviert standardmässig den hybriden Post-Quantum-Schlüsselaustausch in crypto/tls und führt das neue Paket crypto/hpke ein, das RFC 9180 implementiert. Diese Änderungen bereiten Go-Anwendungen auf die Ära des Quantencomputings vor - ohne jegliche Codemodifikationen.
Der hybride Post-Quantum-Schlüsselaustausch kombiniert klassisches Elliptic-Curve-Diffie-Hellman mit ML-KEM (Module Lattice Key Encapsulation Mechanism), um TLS-Verbindungen zu schützen. Go 1.26 handelt standardmässig SecP256r1MLKEM768 und SecP384r1MLKEM1024 aus. Der "hybride" Ansatz bedeutet, dass selbst wenn ML-KEM später Schwachstellen aufweisen sollte, der klassische Algorithmus weiterhin Schutz bietet - und umgekehrt.
Teams, die diese Funktion vorübergehend deaktivieren müssen, können Config.CurvePreferences im Code verwenden oder die GODEBUG-Variable tlssecpmlkem=0 setzen. Das Go-Team empfiehlt jedoch, die Funktion aktiviert zu lassen, da quantenfähige Angreifer möglicherweise bereits verschlüsselten Datenverkehr für die spätere Entschlüsselung sammeln - eine Strategie, die als "Harvest Now, Decrypt Later" bekannt ist. Ein gründliches SEO-Website-Audit sollte jetzt auch die TLS-Kompatibilität mit Post-Quantum-Standards überprüfen.
Das neue Paket crypto/hpke implementiert Hybrid Public Key Encryption gemäss RFC 9180. Es stellt drei Komponenten bereit: KEM (Key Encapsulation), KDF (Key Derivation) und AEAD (Authenticated Encryption). Das Paket unterstützt Post-Quantum-Key-Encapsulation über MLKEM768X25519 und MLKEM1024 sowie klassische Suiten mit HKDF-SHA256/384/512 und AES-GCM oder ChaCha20Poly1305 für authentifizierte Verschlüsselung.
Weitere Sicherheitsfunktionen
- Heap-Basisadress-Randomisierung auf 64-Bit-Plattformen härtet gegen Adressvorhersage-Angriffe. Deaktivieren Sie dies bei Bedarf mit
GOEXPERIMENT=norandomizedheapbase64. - Sichere Zufallszahlen erzwungen - alle Parameter von
crypto/randwerden nun ignoriert, wodurch sichergestellt wird, dass kryptografische Funktionen stets sichere Zufallszahlen verwenden. Für deterministisches Testen verwenden Sietesting/cryptotest.SetGlobalRandom(). - PKCS #1 v1.5-Verschlüsselung veraltet - Go 1.26 markiert dieses veraltete Verschlüsselungsschema offiziell als deprecated und empfiehlt die Migration zu OAEP oder neueren Verfahren.
Modernisiertes go fix und Entwicklerwerkzeuge
Der Befehl go fix wurde mit dem Go-Analyse-Framework komplett neu geschrieben und enthält nun über 20 Modernisierer, die Code automatisch auf moderne Go-Idiome aktualisieren. Das Ziel ist es, für idiomatische Konsistenz das zu leisten, was gofmt für stilistische Konsistenz leistet.
Das neu geschriebene go fix basiert auf derselben Grundlage wie go vet und verwendet das Go-Analyse-Framework für präzise, syntaxbewusste Code-Transformationen. Im Gegensatz zur vorherigen Implementierung mit ihren wenigen Legacy-Fixern wird die neue Version mit über 20 Modernisierern ausgeliefert, die gängige Muster abdecken:
- minmax - ersetzt manuelle Min/Max-Implementierungen durch die eingebauten Funktionen
- newexpr - konvertiert Pointer-Initialisierungsmuster zur Verwendung der neuen
new(expr)-Syntax - slicescontains - ersetzt handgeschriebene Contains-Schleifen durch
slices.Contains() - rangeint - konvertiert
for i := 0; i < n; i++zufor i := range n - stringsbuilder - migriert String-Konkatenation zu
strings.Builder - stditerators - aktualisiert Code zur Verwendung der Standardbibliothek-Iteratoren
- omitzero - aktualisiert JSON-Struct-Tags zur Verwendung der neueren
omitzero-Option
Alle Fixes bewahren das Programmverhalten. Das Tool enthält zudem einen Source-Level-Inliner, der durch //go:fix inline-Direktiven aktiviert wird und es Bibliotheksautoren ermöglicht, Aufrufer zur aktualisierten API-Nutzung anzuleiten. Die Ausführung von go fix ./... nach dem Upgrade auf Go 1.26 ist ein praktischer erster Schritt zur Reduzierung technischer Schulden in jeder Codebasis, besonders wenn die Code-Modernisierung mit einer umfassenden Google SEO-Strategie kombiniert wird.
Weitere Werkzeug-Updates
Das pprof-Tool zeigt beim Start mit dem -http-Flag nun standardmässig die Flame-Graph-Ansicht an, wodurch Leistungsprofile sofort visuell dargestellt werden. Die traditionelle Graphansicht bleibt über "View -> Graph" oder den Endpunkt /ui/graph zugänglich.
go mod init erstellt go.mod-Dateien nun standardmässig mit einer niedrigeren Go-Version (1.N-1.0). Dies fördert eine breitere Kompatibilität mit aktuell unterstützten Go-Versionen, was besonders für Bibliotheksautoren nützlich ist, die möchten, dass ihre Module sowohl mit dem neuesten als auch mit dem vorherigen Go-Release funktionieren.
Experimentelle Funktionen
Go 1.26 führt drei experimentelle Funktionen hinter GOEXPERIMENT-Flags ein: architekturspezifische SIMD-Intrinsics für Hochleistungsberechnung, sichere Speicherlöschung über runtime/secret für kryptografische Sicherheit und einen Goroutine-Leak-Profiler. Keine davon wird durch das Go 1-Kompatibilitätsversprechen abgedeckt.
SIMD-Intrinsics (simd/archsimd)
Das Paket simd/archsimd bietet direkten Zugriff auf SIMD-Operationen auf AMD64-Prozessoren. Es unterstützt 128-Bit-, 256-Bit- und 512-Bit-Vektorbreiten durch Typen wie Int8x16 und Float64x8. Operationen auf diesen Typen sind Compiler-Intrinsics - sie werden direkt zu CPU-Vektorbefehlen kompiliert, ohne Overhead durch Funktionsaufrufe.
Aktivieren Sie dies mit GOEXPERIMENT=simd. Diese Funktion richtet sich an Entwickler, die leistungskritischen Code in den Bereichen Bildverarbeitung, wissenschaftliches Rechnen, Datenkodierung und ähnlichen Domänen erstellen, in denen vektorisierte Operationen erhebliche Beschleunigungen bieten. Sie ersetzt die bisherige Notwendigkeit, Assembly-Sprache für SIMD-Zugriff in Go zu schreiben, was besonders für Teams wertvoll ist, die an GEO und AI SEO-Lösungen mit intensiver Datenverarbeitung arbeiten.
Sichere Speicherlöschung (runtime/secret)
Das Paket runtime/secret bietet sichere Löschung von Registern, Stack-Frames und Heap-Allokationen nach kryptografischen Operationen. Der Aufruf von secret.Do() garantiert, dass sämtlicher Speicher, der von der umschlossenen Funktion verwendet wurde, nach der Ausführung auf Null gesetzt wird. Wie Anton Zhiyanov erläutert, schützt dies vor Cold-Boot-Angriffen, Speicher-Dumps und Seitenkanalangriffen.
Aktivieren Sie dies mit GOEXPERIMENT=runtimesecret. Derzeit unterstützt auf amd64 und arm64 unter Linux. Ein Vorbehalt: Pointer-Adressen können in GC-Puffer gelangen, sodass dies eine Verteidigung in der Tiefe und keine absolute Garantie bietet. Für Fintech-, Gesundheits- und Behördenanwendungen, die sensibles kryptografisches Material verarbeiten, ist diese experimentelle Funktion eine Bewertung wert.
Goroutine-Leak-Profiler
Der neue goroutineleak-Profiler erkennt blockierte, nicht erreichbare Goroutinen - eine häufige Quelle von Speicherlecks in langlebigen Go-Diensten. Aktivieren Sie ihn mit GOEXPERIMENT=goroutineleakprofile und greifen Sie auf das Profil über den Endpunkt /debug/pprof/goroutineleak zu. Dieser Profiler identifiziert Goroutinen, die bei Channel-Operationen oder Mutex-Waits feststecken und sich nie auflösen werden, und hilft Teams, subtile Concurrency-Bugs in der Produktion zu finden.
Bemerkenswerte Ergänzungen der Standardbibliothek
Go 1.26 fügt mehrere praktische Verbesserungen der Standardbibliothek hinzu, die gängige Muster vereinfachen: bytes.Buffer.Peek() für nicht-destruktives Lesen, das generische errors.AsType() für typsichere Fehlerbehandlung, Multi-Handler-Unterstützung in log/slog, typisierte Netzwerk-Dialer-Methoden und neue Reflect-Iterator-Methoden.
bytes.Buffer.Peek() gibt die nächsten n Bytes zurück, ohne die Leseposition vorzurücken. Dies ist besonders nützlich bei der Implementierung von Protokoll-Parsern oder jeglichem Code, der anstehende Daten inspizieren muss, bevor er entscheidet, wie diese verarbeitet werden. Zuvor erforderte dies manuelle Buchführung mit Bytes() und Slicing.
errors.AsType() ist eine generische, typsichere Version von errors.As(). Anstatt eine vorab deklarierte Zielvariable zu benötigen und deren Pointer zu übergeben, rufen Sie errors.AsType[*MyError](err) auf und erhalten das typisierte Ergebnis direkt. Dies ist sowohl besser lesbar als auch geringfügig schneller als das reflektionsbasierte Original.
log/slog.NewMultiHandler() leitet Log-Einträge gleichzeitig an mehrere Handler weiter. Dies adressiert ein häufiges Bedürfnis in Produktionssystemen, in denen Logs sowohl an lokale Dateien als auch an externe Dienste (Datadog, CloudWatch, ELK) gesendet werden müssen, ohne dass benutzerdefinierte Fan-Out-Logik geschrieben werden muss. Solche Verbesserungen der Observability sind in Branchen wie der Immobilien-Webentwicklung besonders relevant, wo Verfügbarkeit und Leistungsüberwachung geschäftskritisch sind.
Der Typ net.Dialer erhält typisierte Methoden - DialIP(), DialTCP(), DialUDP() und DialUnix() - jeweils mit vollständiger Context-Unterstützung. Diese ersetzen das Muster, Dial() mit einem String-Netzwerktyp aufzurufen und dann eine Typzusicherung auf den zurückgegebenen net.Conn durchzuführen.
Weitere erwähnenswerte Verbesserungen:
- Reflect-Iteratoren - neue Methoden
Type.Fields(),Type.Methods()undValue.Fields()ermöglichen idiomatische Iteration über Struct-Felder und Typ-Methoden unter Verwendung des Range-over-Function-Musters von Go - runtime/metrics - neue Scheduler-Metriken
/sched/goroutinesund/sched/threadsbieten bessere Einblicke in das Verhalten der Go-Laufzeitumgebung - Test-Artefakte -
T.ArtifactDir()undB.ArtifactDir()geben Tests ein dediziertes Verzeichnis für Ausgabedateien, das die ad-hoc-Verwaltung temporärer Verzeichnisse ersetzt - B.Loop()-Inlining - der Benchmark-Loop-Helfer verhindert Inlining im Loop-Body nicht mehr, was genauere Benchmark-Ergebnisse liefert
Fazit
Zusammenfassung: Go 1.26 ist ein Release, das auf messbare Produktionsauswirkungen ausgerichtet ist. Die Kombination aus Laufzeitleistungssteigerungen, Sicherheitshärtung, Sprachergonomie und automatisiertem Tooling macht das Upgrade für die meisten Go-Teams zu einer Entscheidung mit hohem Nutzen und geringem Risiko.
Die Leistungszahlen sprechen für sich: 10-40% Reduktion des GC-Overheads durch Green Tea, 30% schnellere cgo-Aufrufe, bis zu 30% günstigere Allokationen kleiner Objekte und 2x schnelleres io.ReadAll(). Diese Verbesserungen erfordern keine Codeänderungen und potenzieren sich in typischen Go-Diensten, was sich direkt in niedrigerer Latenz, reduzierten Infrastrukturkosten und höherem Durchsatz niederschlägt.
Das standardmässig aktivierte Post-Quantum-TLS und das neue Paket crypto/hpke bereiten die Go-Infrastruktur auf Sicherheitsbedrohungen der Quantenära vor. Das Risiko von "Harvest Now, Decrypt Later" macht die frühzeitige Einführung von Post-Quantum-Kryptografie zu einer klugen Entscheidung, und Go 1.26 macht sie zum Standard statt zur optionalen Funktion.
Die erweiterte new()-Funktion und selbstreferenzielle Generics verbessern die tägliche Programmierergonomie, während das neu geschriebene go fix mit seinen über 20 Modernisierern einen praktischen Weg bietet, technische Schulden beim Upgrade von Go-Versionen in grossen Codebasen abzubauen.
- Führen Sie das Upgrade auf Go 1.26 durch und benchmarken Sie die Auswirkungen des Green Tea GC auf Ihre Dienste
- Führen Sie
go fix ./...aus, um Code-Muster automatisch zu modernisieren - Überprüfen Sie die Post-Quantum-TLS-Kompatibilität mit Ihrer Infrastruktur und Ihren Clients
- Bewerten Sie experimentelle Funktionen - SIMD-Intrinsics,
runtime/secretund Goroutine-Leak-Profiling - für spezialisierte Anwendungsfälle
Was ist der Green Tea Garbage Collector in Go 1.26 und wie viel schneller ist er?
Der Green Tea Garbage Collector ist der Standard-GC in Go 1.26, der den GC-Overhead um 10-40% bei realen Workloads reduziert. Er verarbeitet Speicher auf der 8-KiB-Seitenebene statt einzelne Objekte zu scannen und wandelt zufaellige Zeigerverfolgung in sequentielles Scanning um. Auf CPUs mit AVX-512-Unterstuetzung bringt er eine zusaetzliche 10%-Verbesserung. Keine Codeaenderungen erforderlich - jede Go-Anwendung profitiert beim Upgrade.
Wie funktioniert die erweiterte new()-Funktion in Go 1.26?
In Go 1.26 akzeptiert die eingebaute new()-Funktion jetzt einen Ausdruck fuer die Zeiger-Initialisierung in einem Schritt. Statt eine Zwischenvariable zu erstellen, um deren Adresse zu nehmen, kann man new(yearsSince(born)) schreiben, um Speicher zu allokieren und einen Zeiger in einem Schritt zu initialisieren. Diese Aenderung ist rueckwaertskompatibel und beseitigt einen haeufigen ergonomischen Reibungspunkt, der seit dem Vorschlag von 2021 bestand.
Was ist Post-Quantum-TLS und warum ist es in Go 1.26 standardmaessig aktiviert?
Post-Quantum-TLS in Go 1.26 kombiniert den klassischen Elliptic-Curve-Diffie-Hellman mit ML-KEM (Module Lattice Key Encapsulation Mechanism), um TLS-Verbindungen gegen zukuenftige Quantencomputer-Angriffe zu schuetzen. Es ist standardmaessig aktiviert, weil Angreifer moeglicherweise bereits verschluesselten Datenverkehr fuer die zukuenftige Entschluesselung sammeln - eine Strategie namens "Harvest now, decrypt later." Der hybride Ansatz stellt sicher, dass selbst bei einer Schwachstelle in ML-KEM der klassische Algorithmus weiterhin Schutz bietet.
Welche Leistungsverbesserungen bringt Go 1.26 ausser dem Garbage Collector?
Ueber den Green Tea GC hinaus reduziert Go 1.26 den cgo-Aufruf-Overhead um etwa 30%, senkt die Kosten fuer kleine Objektzuweisungen um bis zu 30% mit groessenspezialisierten Routinen und macht io.ReadAll() etwa 2x schneller mit 50% weniger Speicherverbrauch. Der Compiler platziert Slice-Backing-Stores in mehr Situationen auf dem Stack und reduziert damit Heap-Allokationen. Alle diese Verbesserungen gelten automatisch ohne Codeaenderungen.
Wie hilft das modernisierte go fix Tool bei der Wartung der Codebasis?
Der ueberarbeitete go fix Befehl in Go 1.26 enthaelt ueber 20 Modernisierer, die Code automatisch auf moderne Go-Idiome aktualisieren. Er ersetzt manuelle min/max-Implementierungen, konvertiert Zeiger-Muster zu new(expr), migriert Schleifen zur Range-over-Integer-Syntax und aktualisiert String-Verkettung zu strings.Builder, neben anderen Transformationen. Alle Fixes bewahren das Programmverhalten, sodass go fix ./... sicher ueber die gesamte Codebasis nach dem Upgrade ausgefuehrt werden kann.
Welche experimentellen Features sind in Go 1.26 verfuegbar?
Go 1.26 fuehrt drei experimentelle Features hinter GOEXPERIMENT-Flags ein. SIMD-Intrinsics (simd/archsimd) bieten direkten Zugriff auf Vektoroperationen auf AMD64-Prozessoren fuer Hochleistungsrechnen. Das runtime/secret-Paket stellt sicheres Speicherloeschen nach kryptografischen Operationen sicher und schuetzt gegen Cold-Boot-Angriffe und Speicherdumps. Der Goroutine-Leak-Profiler erkennt blockierte, unerreichbare Goroutinen ueber den Endpunkt /debug/pprof/goroutineleak. Keine dieser Funktionen wird von der Go-1-Kompatibilitaetsgarantie abgedeckt.
Ist ein Upgrade auf Go 1.26 ohne Codeaenderungen sicher?
Ja, Go 1.26 haelt das Go-1-Kompatibilitaetsversprechen ein, was bedeutet, dass bestehende Programme weiterhin ohne Aenderungen kompilieren und laufen. Alle Leistungsverbesserungen, einschliesslich des Green Tea GC, der cgo-Optimierungen und des Post-Quantum-TLS, gelten automatisch. Fuer Teams, die das neue GC-Verhalten zuerst validieren moechten, steht ein temporaeres Fallback-Flag GOEXPERIMENT=nogreenteagc zur Verfuegung, das jedoch in Go 1.27 entfernt wird.