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

GC shape stenciling in Go generics

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

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.

Más de este día

2026-07-16