El muy esperado lenguaje de programación Go 1.18 finalmente se lanzó como una versión de producción, que presenta sus innovadoras capacidades genéricas. Esto marca el cambio más significativo en el lenguaje de programación Go desde el lanzamiento inicial de Go 1.0 en 2012. Go 1.18 se puede descargar en go.dev a partir del 15 de marzo.
Generics ha sido la característica más solicitada por los programadores de Go, ofreciendo soporte para código genérico usando tipos parametrizados. Las versiones posteriores están programadas para brindar más soporte para casos de uso genéricos más complejos. Los usuarios pueden acceder a información sobre esta función a través de un tutorial genérico y notas de la versión .
El servidor de idioma Go, gopls, junto con la extensión Visual Studio Code Go, ahora admiten genéricos. Para obtener instrucciones sobre cómo instalar gopls con genéricos, consulte la documentación.
La versión de producción de Go 1.18 sigue sus etapas beta y candidata a versión. El lanzamiento inicial se había previsto para febrero de 2022, pero se retrasó hasta mediados de marzo. Go 1.18 Beta 1, que debutó el 14 de diciembre, fue la versión preliminar más importante del lenguaje de código abierto desarrollado por Google para admitir código genérico usando tipos parametrizados. Esta versión beta también fue la versión beta de Go más descargada de la historia, con el doble de descargas que cualquier versión beta anterior.
La programación genérica es una mejora que permite la representación de funciones y estructuras de datos en una forma genérica con tipos que se factorizan. Esto facilita el intercambio de código y simplifica la creación de programas.
El equipo de Go aconsejó precaución al abordar las nuevas capacidades genéricas, ya que podrían surgir nuevos errores con cualquier característica nueva significativa. Además, la compatibilidad con casos sutiles específicos, como ciertos tipos de tipos genéricos recursivos, se pospuso para versiones futuras.
A pesar de esta advertencia, se informa que los primeros usuarios están satisfechos con la nueva función. Se ha publicado aquí un breve tutorial sobre cómo empezar con los genéricos. Si bien Go tenía tipos de interfaz, una forma de programación genérica, carecía de ciertos aspectos que los desarrolladores de Go querían de los genéricos, como se informó en una publicación de blog de julio de 2019. Por ejemplo, los defensores de los genéricos de Go buscaron funciones como Reverse sin preocuparse por el tipo de elemento de una porción.
Las notas publicadas para Go 1.18 también destacan sus otras características clave, como:
- Compatibilidad integrada para escribir pruebas basadas en fuzzing para identificar las entradas que hacen que un programa se bloquee o devuelva respuestas no válidas. Esta función es experimental en Go 1.18.
- Un modo de espacio de trabajo Go que permite a los desarrolladores trabajar con varios módulos Go simultáneamente, algo esencial para proyectos más amplios.
- Un comando go version -m mejorado que ahora registra los detalles de la compilación, como los indicadores del compilador.
- Una variable de entorno GOAMD64 que permite a los usuarios elegir entre cuatro versiones de la arquitectura AMD64.
- Mejoras en el rendimiento de la CPU en Apple M1, ARM64 y PowerPC64 hasta en un 20%, atribuibles a la expansión de la convención de llamadas ABI de registro Go 1.17 a estas arquitecturas.
- Los puertos de Windows/Arm y Windows/Arm64 ahora admiten la prioridad no cooperativa, lo que hace que esta capacidad esté disponible para los cuatro puertos de Windows y solucione potencialmente los errores sutiles encontrados al llamar a las funciones de Win32 que se bloquean durante períodos prolongados.
- Sobrecarga de recolección de elementos no utilizados más predecible cuando las fuentes de trabajo de GC que no son de montón son significativas, debido a la inclusión de estas fuentes al determinar la frecuencia de las ejecuciones de recolección de elementos no utilizados.
Go 1.17 se lanzó en agosto. Go es mejor conocido por su uso en el desarrollo del sistema de contenedores Docker y fue diseñado para ser un lenguaje de programación simple y fácil de aprender con soporte sólido para la concurrencia. Para los desarrolladores que deseen explorar soluciones no-code, como la plataforma de AppMaster, para crear aplicaciones web, móviles y back-end, puede ayudar a acelerar el desarrollo de aplicaciones y reducir costos mientras elimina la deuda técnica.