Métodos genéricos en Go 1.27: la limitación que duró desde 2022

Go 1.27 elimina una antigua restricción del lenguaje: los métodos ya pueden declarar sus propios parámetros de tipo sin necesidad de añadirlos al struct receptor. Hasta ahora, quien quisiera implementar, por ejemplo, un método Map que transformara un nodo genérico Node[T] en otro de tipo U estaba ob

Las bondades de Gleam: un recorrido por sus características más atractivas

Gleam, un lenguaje funcional que compila para BEAM (la máquina virtual de Erlang), incorpora una serie de pequeñas decisiones de diseño que simplifican el trabajo diario del desarrollador. Este artículo repasa cinco de sus características más llamativas, útiles tanto para quienes ya trabajan en la p

Anatomía de slices.Backward en Go: por qué la firma del iterador es así

El paquete slices de la biblioteca estándar de Go incluye la función Backward, que recorre los elementos de un slice en orden inverso entregando pares (índice, valor). Su firma genérica, func Backward[Slice ~[]E, E any](s Slice) iter.Seq2[int, E], puede parecer innecesariamente compleja, pero es el

Go propone nuevos tipos de colección genéricos para Go 1.28

El grupo de trabajo Go Collections ha presentado una propuesta para incorporar nuevos tipos de colección genéricos a la biblioteca estándar de Go 1.28. Formado a finales de 2025 e integrado por Jonathan Amsterdam, Alan Donovan, Robert Griesemer, Daniel Martí, Roger Peppe, Keith Randall e Ian Lance T

Cómo Go implementa sus genéricos con GC shape stenciling

Go emplea una técnica intermedia entre la monomorfización completa de Rust o C++ y la borradura de tipos de Java para implementar los genéricos introducidos en Go 1.18: el GC shape stenciling. En lugar de generar una copia del código genérico por cada tipo concreto, el compilador agrupa los tipos se

Nueve formas de simular herencia en Rust, el lenguaje sin clases

Rust carece de herencia de clases al estilo de los lenguajes orientados a objetos: no existen clases, declaraciones de subclases ni campos heredados de una clase padre. Sin embargo, las necesidades que la mayoría de los programadores resuelve con herencia —interfaces compartidas, comportamiento reut

Cómo TypeScript infiere variables de tipo: una guía detallada

Este artículo explora el proceso de inferencia de variables de tipo en TypeScript, un aspecto complejo pero crucial para comprender cómo el lenguaje asigna tipos a variables definidas en funciones. El artículo detalla las reglas y fases del proceso, comenzando con la 'Colección de Candidatos', donde

Propuesta oficial: métodos genéricos en Go

Este contenido detalla una propuesta oficial para permitir la creación de métodos genéricos en el lenguaje de programación Go. Actualmente, Go soporta funciones genéricas, pero los métodos (funciones asociadas a un tipo) no pueden declarar sus propios parámetros de tipo. Históricamente, esta restric

El problema oculto de Go: abstracciones que ralentizan el código crítico

Este artículo explora un problema fundamental en la optimización de rendimiento en Go: la ausencia de abstracciones de costo cero en las rutas críticas de código (hot paths). El autor, al portar el algoritmo Brotli a Go puro para el proyecto go-brrr, descubrió que las abstracciones idiomáticas del l

Error en compilador Rust al emular tipos avanzados

Este artículo técnico explora una peculiaridad en el sistema de tipos de Rust y cómo un intento de emular tipos de orden superior (HKTs) llevó a un error de desbordamiento en la evaluación de requisitos de traits, causando que el compilador fallara. El autor, en su intento de crear un lenguaje de sc

Tipado: ¿Hindley-Milner o Bidireccional?

Este artículo aborda una pregunta común entre los desarrolladores de lenguajes de programación: ¿deberían usar un sistema de tipos Hindley-Milner (HM) o Bidireccional (Bidir)? La respuesta, según el autor, no es tan simple como elegir entre dos opciones mutuamente excluyentes. La verdadera pregunta

Go actualiza 'go fix' para modernizar código

La nueva versión 1.26 de Go introduce una herramienta completamente reescrita llamada `go fix`, diseñada para modernizar el código Go existente. Esta herramienta automatiza la aplicación de mejoras, aprovechando características más recientes del lenguaje y la biblioteca estándar. `go fix` identifica