Go generics: cómo el compilador comparte código con GC shape stenciling
GC shape stenciling in Go generics

El compilador de Go implementa los genéricos con un enfoque intermedio entre la monomorfización completa de Rust y la borradura de tipos de Java: el GC shape stenciling. Este artículo explica cómo el compilador agrupa los tipos por su forma ante el recolector de basura y genera un cuerpo de función por grupo, compartiendo código entre tipos con la misma forma, como punteros. Se muestra con ejemplos en Go y Rust, y se detalla el costo en tiempo de ejecución de las llamadas a métodos y las conversiones a interfaces, que requieren diccionarios ocultos.
El compilador sustituye cada forma por T y compila una versión de la función por forma; esa sustitución es la parte del stenciling.