Wie Go Generics mit GC-Shape-Stenciling umsetzt

GC shape stenciling in Go generics

Wie Go Generics mit GC-Shape-Stenciling umsetzt

Go implementiert Generics weder durch vollständige Monomorphisierung wie Rust noch durch Type Erasure wie Java, sondern durch GC-Shape-Stenciling. Dabei erzeugt der Compiler für jede GC-Form – Größe, Ausrichtung und Pointer-Layout eines Typs – eine eigene Funktion. Typen mit gleicher Form teilen sich den Code, was Binärgröße und Kompilierzeit reduziert. Der Artikel zeigt anhand von Beispielen in Rust, Java und Go die Unterschiede und erklärt, wie Go mit Dictionaries die fehlenden Typinformationen zur Laufzeit nachliefert.

Die vier Aufrufe oben benötigen nur drei Funktionskörper: einen für int, einen für float64 und einen gemeinsamen für die beiden Pointer-Typen.

Mehr von diesem Tag

2026-07-16