Próximos pasos para ir 2

Condición


Estamos trabajando duro en Go 1.13, cuya publicación, espero, tendrá lugar a principios de agosto de este año. Esta es la primera versión que incluirá cambios específicamente en el idioma (y no solo cambios menores en la especificación) después de una larga moratoria sobre dichos cambios.


Para llegar a estos cambios en el idioma, comenzamos con varias propuestas viables, seleccionadas de una lista mucho más amplia de ofertas de Go 2 , de acuerdo con el nuevo proceso de evaluación de propuestas descrito en la publicación " Go 2, ¡aquí vamos !". Queríamos que la selección inicial de propuestas desempeñáramos un papel relativamente pequeño y, en su mayor parte, no causara controversia, por lo que con una alta probabilidad pasarían por todo el proceso. Los cambios propuestos tenían que ser compatibles con versiones anteriores para romper lo menos posible, porque los módulos (que en el futuro le permitirán seleccionar la versión de idioma para un módulo en particular) aún no son el modo de compilación predeterminado. Brevemente, la fase inicial actual de los cambios estaba más dirigida a despegar nuevamente y ganar experiencia, en lugar de resolver grandes problemas.


Nuestra lista inicial de oraciones - Unicode en la forma general en identificadores , literales enteros binarios , delimitadores para literales numéricos , cambios de bits por un entero con signo - se ha acortado y ampliado. La propuesta de Unicode en términos generales en identificadores no sobrevivió a la reducción, porque no logramos elaborar un documento de diseño a tiempo. La propuesta de literales enteros binarios se ha ampliado considerablemente y ha llevado a una revisión integral y a la modernización de la sintaxis de los literales numéricos Go. También agregamos un borrador de la propuesta de verificación de errores Go 2, que fue parcialmente aceptada.


Dados estos cambios iniciales a Go 1.13, es hora de pensar en el futuro de Go 1.14 y determinar qué queremos cambiar a continuación.


Sugerencias para Go 1.14


Los objetivos que fijamos para Go hoy son los mismos que en 2007: hacer que el desarrollo de software sea escalable . Los tres obstáculos principales para mejorar la escalabilidad de Go son la falta de un sistema de administración de paquetes y versiones, soporte para un mejor sistema de manejo de errores y genéricos.


Con la mejora del sistema de módulos Go, se aborda el problema de la administración de paquetes y versiones. Continuar mejorando el manejo de errores y genéricos. Trabajamos en ambos temas y presentamos borradores de documentos de diseño en la GopherCon del año pasado en Denver. Desde entonces, los hemos mejorado gradualmente. Sobre el manejo de errores, publicamos una propuesta significativamente revisada y simplificada (ver más abajo). En cuanto a los genéricos, estamos trabajando en ello. "Generics in Go" de Ian Lance Taylor dará un discurso en la GopherCon en San Diego este año, pero aún no hemos llegado a la etapa en la que podamos ofrecer una propuesta concreta.


También queremos continuar mejorando gradualmente el lenguaje en sí. Para Go 1.14, seleccionamos las siguientes ofertas:


# 32437 . La función de comprobación de errores incorporada es "probar" ( documento de diseño ).


Esta es nuestra sugerencia para mejorar el manejo de errores. Aunque la extensión de lenguaje compatible con versiones anteriores propuesta es pequeña, esperamos un impacto significativo en el código de manejo de errores. Esta propuesta ya ha causado una gran cantidad de comentarios, y esto no es tan fácil de seguir. Recomendamos comenzar con el primer comentario para una breve descripción y luego leer el documento de diseño detallado. El primer comentario tiene un par de enlaces a un resumen de las revisiones. Siga las pautas de comentarios (consulte la sección "Pasos siguientes") antes de responder.


# 6977 . Permitir incrustar interfaces superpuestas ( documento de diseño ).


Esta es una vieja propuesta compatible con versiones anteriores para hacer que las interfaces de incrustación sean más tolerantes.


# 32479 . Advertir sobre la conversión de la string(int) formulario string(int) para go vet .


Una conversión de la string(int) formulario string(int) se ha agregado durante mucho tiempo a Go por conveniencia, sin embargo, es muy confuso para los principiantes (la string(10) es "\n" , no "10" ) y ya no está justificada, ya que ahora la conversión está disponible en el paquete unicode/utf8 . Dado que eliminar esta transformación no es un cambio compatible con versiones anteriores, sugerimos en su lugar arrojar un error al hacer go vet .


# 32466 . Aceptar principios de diseño de criptografía ( documento de diseño ).


Esta es una solicitud de comentarios para un conjunto de principios de diseño de bibliotecas criptográficas que nos gustaría aceptar. Consulte también la sugerencia correspondiente para eliminar el soporte SSLv3 de crypto/tls .


Próximos pasos


Estamos recopilando comentarios activamente sobre todas estas sugerencias. Estamos especialmente interesados ​​en la evidencia que muestra por qué la propuesta puede no funcionar bien en la práctica, o en aspectos problemáticos que podríamos haber pasado por alto al desarrollarla. Ejemplos convincentes en apoyo de sugerencias también son muy útiles. Por otro lado, los comentarios que contienen solo opiniones personales son menos efectivos: podemos tenerlos en cuenta, pero no podemos trabajar constructivamente con ellos. Antes de responder, tómese un momento para leer los documentos de diseño detallados y las revisiones anteriores o su resumen. Es posible que su tema ya se haya planteado y discutido en comentarios anteriores, especialmente durante largas discusiones.


Si estas propuestas no encuentran problemas obvios, entonces planeamos implementar todo al comienzo del ciclo de desarrollo Go 1.14 (principios de agosto de 2019), para que esto ya pueda evaluarse en la práctica. De acuerdo con el proceso de evaluación de propuestas, la decisión final se tomará al final del ciclo de desarrollo (principios de noviembre de 2019).


¡Gracias por ayudar a mejorar el idioma de Go!


Robert Griesemer, para el equipo Go

Source: https://habr.com/ru/post/457814/


All Articles