14 de octubre de 2025

Un lenguaje humano obligó a cambiar el lenguaje Kotlin: estuvo cinco años generando bugs antes de que lo resolvieran

Un lenguaje humano obligó a cambiar el lenguaje Kotlin: estuvo cinco años generando bugs antes de que lo resolvieran

Cuando las corrutinas heredaron el bug

En 2018, Kotlin lanzó su versión 1.3 con una de sus funciones estrella: las corrutinas, un sistema para manejar tareas asíncronas de manera elegante. Fue entonces cuando el problema lingüístico resurgió con fuerza.

El desarrollador turco Kemal Atlı reportó un error al actualizar su app:

java.lang.NoSuchMethodError: No static method boxİnt(I)Ljava/lang/Integer;

La clave estaba en el nombre del método: boxİnt(), con una “İ” mayúscula con punto. El compilador, al generar código para las corutinas, usaba la función capitalize() para construir nombres de métodos como boxInt(). Pero, al ejecutarse en un sistema configurado en turco, convertía “int” en “İnt”, y el compilador buscaba un método que no existía.

Ese error concreto se resolvió en 2019 al especificar explícitamente el uso del idioma inglés en la llamada a capitalize(Locale.US). Pero ya era evidente que el problema iba mucho más allá de una simple función.

Un tercer bug y la solución definitiva

Dos años después, otro desarrollador turco, Muhittin Kaplan, reportó un nuevo fallo: su sencillo programa con intArrayOf() fallaba con un NoSuchMethodError. De nuevo, el culpable era el mismo: el método decapitalize() había devuelto "ıntArray" (con ı sin punto) en lugar de "intArray".

Finalmente, la respuesta del equipo de Kotlin fue contundente: buscar y corregir todas las operaciones de cambio de mayúsculas/minúsculas dependientes del idioma en el compilador. En total, 173 líneas de código y 53 archivos fueron modificados, reemplazando las funciones toLowerCase(), toUpperCase(), capitalize() y decapitalize() por versiones independientes del 'locale'.

En mayo de 2021, con el lanzamiento de Kotlin 1.5, el histórico bug KT-13631 se cerró oficialmente, cinco años después de su primer reporte.

-
La noticia Un lenguaje humano obligó a cambiar el lenguaje Kotlin: estuvo cinco años generando bugs antes de que lo resolvieran fue publicada originalmente en Genbeta por Marcos Merino .



☞ El artículo completo original de Marcos Merino lo puedes ver aquí

No hay comentarios.:

Publicar un comentario