Llegamos a ustedes gracias a:



Noticias

Go 1.8 busca la eficiencia y conveniencia

[16/01/2017] Go 1.8, la próxima versión del lenguaje de código abierto de Google, está yendo hacia la disponibilidad general, con un release candidate que presenta mejoras en la recopilación y el HTTP. La versión final 1.8 se encuentra programada para febrero.

De acuerdo a los borradores, el release candidate presenta mejoras en el back end del compilador para mejorar la eficiencia del código. El back end, inicialmente desarrollado para Go 1.7 para sistemas x86 de 64 bits, se basa en el formulario static single assignment (SSA) para generar código más eficiente y para servir como plataforma para las optimizaciones como la eliminación de las revisiones de los límites. Ahora funciona en todas las arquitecturas.

"El nuevo back end reduce el tiempo de CPU que requieren nuestros programas de benchmark en 20% a 30% en sistemas ARM de 32 bits, afirman las notas de la versión. "Para los sistemas x86 de 64 bits, que ya usan el back end SSA en Go 1.7 las mejoras son más modestas, de 0% a 10%. Otras arquitecturas probablemente experimenten mejoras más cercanas a las cifras de ARM de 32 bits.

La versión 1.8 también introduce un nuevo front end de compilador como fundamento para las futuras mejoras en el desempeño, y presenta pausas de recolección de elementos no utilizados más cortas al eliminar el reescaneo de stacks del tipo 'paren el mundo'.

Las notas de la versión también citan soporte de HTTP2 Push, en el cual el paquete net/http puede enviar acciones del servidor HTTP/2 desde un manejador, lo cual responde a una solicitud HTTP. Adicionalmente, se puede habilitar el apagado del servidor HTTP de una forma "elegante a través de un método Server.Shutdown y el uso abrupto del método Server.Close.

La versión 1.8 añade soporte para la arquitectura Mips de 32 bits en Linux y ofrece más soporte contextual para paquetes como Server.Shutdown, database/sql, y. net.resolver. El paquete de clasificación de Go añade una función de conveniencia, Slice, para ordenar una porción dada una función menos. "En muchos casos esto significa que no es necesario escribir un nuevo tipo de clasificador. El runtime y las herramientas en Go 1.8 soportan el perfilamiento de mutexes que compiten entre sí, y que proporcionan un bloqueo de exclusión mutua.

La mayoría de los cambios del upgrade se encuentran en la implementación de la cadena de herramientas, el runtime y las bibliotecas. "Hay dos cambios menores a la especificación del lenguaje, señalan las notas de la versión. "Como siempre, la versión mantiene la promesa de Go 1 de compatibilidad. Esperamos que casi todos los programas Go se sigan compilando y ejecutando como antes. Los cambios en el lenguaje incluyen la conversión de un valor de un tipo a otro; ahora las etiquetas de Go se ignoran. Además, la especificación del lenguaje ahora solo requiere que las implementaciones soporten hasta exponentes de 16 bits en las constantes de punto flotante.