2 puntos por GN⁺ 2023-08-15 | 1 comentarios | Compartir por WhatsApp
  • Artículo sobre la importancia de la compatibilidad retroactiva en el lenguaje de programación Go, con enfoque en las nuevas funciones de Go 1.21 y el futuro de Go 2
  • Go 1.21 incluye nuevas funciones para mejorar la compatibilidad, con el objetivo de mantener a Go estable y predecible, para que los desarrolladores puedan concentrarse en su trabajo en lugar de en los cambios del lenguaje
  • El equipo de Go ha puesto el foco en la compatibilidad durante más de 10 años, con la intención clara de que los programas escritos según la especificación de Go 1 se compilen y ejecuten correctamente sin cambios durante toda la vida útil de esa especificación
  • Se explican dos enfoques principales para mantener la compatibilidad: verificación de API y pruebas. La verificación de API garantiza que las API existentes no se eliminen ni se modifiquen de una forma que rompa el código existente. Las pruebas incluyen ejecutar pruebas existentes contra una versión de desarrollo de la próxima entrega de Go
  • Se ofrecen ejemplos de problemas sutiles de compatibilidad detectados al probar Go dentro de Google, como literales de struct y nuevos campos, además de la precisión del tiempo
  • Los problemas de compatibilidad se clasifican en tres categorías: cambios en la salida, cambios en la entrada y cambios en el protocolo
  • Go 1.21 mejora la compatibilidad retroactiva al ampliar y formalizar el uso de GODEBUG. La configuración de GODEBUG se mantiene al menos durante dos años y se ajusta para coincidir con la versión de Go listada en el archivo go.mod del paquete principal
  • El artículo cierra con una actualización sobre Go 2, anunciando que no habrá un Go 2 que rompa los programas de Go 1. En su lugar, el equipo de Go priorizará la compatibilidad, y cree que esa fue la decisión de diseño más importante que tomaron para Go 1

1 comentarios

 
GN⁺ 2023-08-15
Opinión de Hacker News
  • Este artículo analiza la importancia de la compatibilidad en Go 1.21 y un posible Go 2 en el futuro.
  • Go 1.21 ofrece dos funciones distintivas: una configuración de GODEBUG para cada cambio y métricas para detectar el uso de implementaciones anteriores, además de una versión de toolchain por módulo que obtiene automáticamente toolchains de Go anteriores y nuevas.
  • Cuando se especifica una versión concreta de Go, las versiones nuevas de Go aplican automáticamente la configuración relevante de opt-out para evitar que el nuevo comportamiento se active hasta que se solicite.
  • El equipo del lenguaje Go está comprometido con mantener la compatibilidad hacia atrás, algo valorado por los desarrolladores que mantienen sistemas grandes en Go.
  • Algunos usuarios expresan preocupación de que mejoras importantes al sistema de tipos podrían requerir cambios incompatibles.
  • Se propone que Go no tenga un verdadero Go 2, ya que cambios importantes podrían requerir una bifurcación y un cambio de nombre del lenguaje.
  • La estabilidad y previsibilidad de Go, descritas como "aburridas", contrastan con el ecosistema de JavaScript, fragmentado y en constante cambio.
  • El artículo también menciona una publicación relacionada sobre "Compatibilidad hacia adelante y gestión del toolchain en Go 1.21".
  • El compromiso con la compatibilidad hacia atrás en Go recibe elogios, y un usuario comparte cómo pasar código de Python a Go ayudó a escalar su extensión.
  • Las técnicas que usa Go para garantizar la compatibilidad son admiradas, y se considera emplearlas en el diseño de otros lenguajes.