Fri. Sep 30th, 2022

Compatibilidad con Apple Silicon, globales escritos y más

Imagen del autorJulia 1.8 acaba de salir del canal de lanzamiento de GitHub y está repleto de toneladas de nuevas funciones útiles. Si desea obtener una descripción general completa de todos los nuevos cambios, consulte la publicación del blog de lanzamiento del equipo central de desarrollo. En esta publicación, destacaré 3 de las características mencionadas en el enlace anterior que me emocionan más con este lanzamiento !Con más y más desarrolladores que comienzan a hacer la transición al uso de Apple Silicon, la necesidad de que las herramientas de código abierto funcionen bien en esta arquitectura es cada vez más importante. Julia 1.8 resuelve una serie de problemas relacionados con:

cómo Julia usa internamente LLVM para generar y vincular el código para esta plataforma y finalmente se resolvió en Julia 1.8 al pasar a un enlazador más moderno, que tiene mejor soporte para CPU ARM en macOS.

Si bien los problemas y las fallas de segmentación frecuentes se solucionaron para Julia 1.8, los problemas no se pudieron transferir a Julia 1.7, por lo que esa versión siempre tendrá problemas con Apple Silicon. Si está utilizando Julia 1.7 y estaba experimentando alguno de estos problemas, se recomienda actualizar a 1.8 ya que el lanzamiento cambia Apple Silicon a soporte de Nivel 2 (con Julia 1.9 probablemente brindando soporte de Nivel 1 para Apple Silicon). Es increíble ver tanto esfuerzo se está poniendo en conseguir estabilidad para los usuarios de Apple Silicon Mac. Como uno de esos usuarios, me he topado con algunas asperezas durante el período de transición, pero en su mayor parte, estos problemas parecen estar disminuyendo rápidamente en frecuencia. Además, en caso de que se lo haya perdido, a fines de junio de 2022 se anunció una vista previa técnica de Metal.jl, el paquete para programar las GPU M1 de Apple en Julia. Obtenga más información en el blog de GPU de Julia. El futuro es brillante para M1 ¡Usuarios de Mac Julia! En versiones anteriores de Julia, no era posible especificar el tipo de variables globales no constantes. En Julia 1.7 y anteriores, el lenguaje daría un error como el siguiente si intentara esto:Imagen capturada por AuthorEn este ejemplo, estamos tratando de establecer el tipo de a para que sea Int, pero Julia da un error cuando lo hacemos. En Julia 1.8, puede ver que el comportamiento se actualizó para admitir esta funcionalidad:Imagen capturada por AuthorThe 1.8 blog post también señala que:

La anotación de tipos de variables globales elimina gran parte (pero no todo) del costo de usar variables globales no constantes.

lo cual es genial de escuchar, ya que una parte central de la razón por la que anteriormente eran ávidas las variables globales era que presentaba una gran sobrecarga computacional. ¡Este cambio debería eliminar una pequeña ventaja para los usuarios nuevos y experimentados de Julia por igual! Cualquiera que haya leído cualquiera de mis artículos anteriores (como este) sabe que el Administrador de paquetes en Julia es una de mis características favoritas. Realmente hace que hacer cosas en Julia sea un verdadero placer, ya que puedo estar seguro de que no voy a tener ningún problema extraño para que las cosas funcionen en mi computadora local. En versiones anteriores de Julia, cuando ejecutaba el comando de estado en el administrador de paquetes, obtenía una impresión de todos los paquetes en su entorno activo. Si bien esto puede ser útil, no siempre brinda el contexto completo que necesita si desea saber qué versión de un paquete debe usar o la versión más actualizada disponible. Ahora, en Julia 1.8, el administrador de paquetes brinda una visualización indicación de si hay disponible una versión más nueva de uno de sus paquetes instalados, así como si la versión del paquete se puede actualizar con éxito dadas las restricciones de versión de los otros paquetes. Echemos un vistazo a este ejemplo de la publicación del anuncio:Imagen de la publicación del anuncio Aquí, podemos ver que cuando ejecutamos el comando st (abreviatura de estado), obtenemos los diferentes tipos de flechas hacia arriba que indican los dos comportamientos diferentes. Esta nueva función hará que sea mucho más fácil saber si un paquete tiene una nueva versión disponible y si hay una razón por la que no puede actualizar dicho paquete. Si desea un poco más de contexto sobre esto, lo animo a leer el publicación de blog completa. Julia 1.8 está repleto de toneladas de excelentes características. Quería destacar tres en esta publicación que me emocionaron especialmente. Dicho esto, sería negligente no mencionar algunas excelentes charlas de JuliaCon 2022 que destacaron parte del trabajo que tuvo lugar en 1.8. Para empezar, Tim Holy y Valentin Churavy dieron una charla sobre “Mejoras en la precompilación de paquetes” que formaban parte de Julia 1.8 (de hecho, ya destaqué este video en mi otro artículo “5 charlas importantes que quizás te hayas perdido en JuliaCon 2022”): Otra El video que vale la pena ver es de Nathan Daly y Pete Vilter sobre el tema de la búsqueda de asignaciones con el perfilador de asignación de Julia 1.8, que fue una nueva característica introducida con Julia 1.8: Con tantas cosas increíbles sucediendo en 1.8, solo puedo comenzar a imaginar ¡Qué nuevas características útiles vienen en Julia 1.9 (con suerte, más cosas del Administrador de paquetes)! Estén atentos y, por favor, compartan conmigo las características del lanzamiento que más les emocionan.