Noticias

De Jammy a Resolute: cómo evolucionó la cadena de herramientas de Ubuntu

Introdujimos nuevas versiones de la cadena de herramientas, paquetes de desarrollo y flujos de trabajo para mejorar la experiencia del desarrollador.

La cadena de herramientas de Ubuntu ha evolucionado más allá de simplemente proporcionar los últimos GCC, LLVM y Python. También incluye variantes obstinadas de openJDK, paquetes de desarrollo centrados en tareas, cadenas de herramientas compatibles con FIPS y complementos, como el nuevo complemento .NET y Snapcraft. Estas mejoras comprimen medio día de configuración en uno o dos comandos, lo que demuestra lo que significa en la práctica una experiencia de desarrollador sin fricciones para los desarrolladores de marcos y aplicaciones en Ubuntu.

En este blog, analizaremos más de cerca los cambios realizados en las versiones LTS en Ubuntu durante los últimos cuatro años y hacia dónde nos dirigimos a continuación.

Por dónde empezamos: Ubuntu 22.04 LTS (Jammy Jellyfish)

Ubuntu siempre ha proporcionado una base sólida de cadenas de herramientas de lenguaje: múltiples versiones de GCC, LLVM/Clang moderno y ahora Python. Ubuntu 22.04 LTS se centra más en las etapas de ejecución de Golang, Java y .NET en los archivos. 22.04 LTS es también la primera versión de Ubuntu en la que promocionamos los paquetes de la cadena de herramientas de Rust desde el repositorio del universo al repositorio principal para permitir el trabajo del sistema con memoria segura. Esto convierte a Ubuntu en una base confiable para C/C++, desarrollo de sistemas y back-end y desarrollo de aplicaciones empresariales. Sin embargo, la mayoría de los desarrolladores todavía tienen que ensamblar sus propios flujos de trabajo: la integración IDE, las interfaces de línea de comandos (CLI) del marco, las herramientas de compilación y el empaquetado se dejan en gran medida en manos de equipos individuales. Del mismo modo, los desarrolladores de Golang y Rust todavía tienen que acudir a proyectos anteriores para obtener lo último y lo mejor.

La configuración de Spring, .NET y Golang en 22.04 LTS generalmente requiere que los desarrolladores instalen los lenguajes y marcos a través de su administrador de paquetes preferido y luego los conecten a sus proyectos. Si bien este enfoque es práctico para los expertos, dificulta la estandarización de entornos entre organizaciones o el soporte de entornos restringidos y fuera de línea.

Ubuntu 24.04 LTS y posteriores: Toolchain continúa evolucionando

entre 24.04 Soporte a largo plazo y 25.04Ubuntu cambia de «cadena de herramientas de existencia» a «cadena de herramientas de planificación». Cubrimos las versiones actuales de GCC, LLVM, Golang, Java, .NET y Rust, así como una referencia unificada de «disponibilidad de la cadena de herramientas» para planificar compilaciones e integración continua (CI). En Ubuntu 25.04, lanzamos el Portal para desarrolladores de Ubuntu, que proporciona procedimientos estructurados para GCC, Golang, Java, .NET, Python y Rust para que los desarrolladores puedan acceder fácilmente a flujos de trabajo documentados, no solo a paquetes.

En cuanto a la plataforma, .NET en Ubuntu ha experimentado una transformación: el SDK y el tiempo de ejecución de .NET 8 están disponibles a través de paquetes snap oficiales, que incluyen herramientas CLI y un instalador capaz de administrar múltiples instalaciones de .NET. Snapcraft obtiene un complemento dotnet dedicado y extensiones .NET versionadas para convertir archivos complejos snapcraft.yaml en definiciones concisas y repetibles. Esto reduce significativamente las barreras para crear, publicar y actualizar aplicaciones .NET en Ubuntu, ya sea para cargas de trabajo de escritorio, servidor o alojadas en la nube.

Devpack para Spring y Golang: descripción general del flujo de trabajo del marco

En la versión 25.04, aparecieron devpacks; devpack-for-spring fue el primero. Devpack es uno de los pasos más importantes de los últimos tiempos para mejorar la experiencia de usuario de los desarrolladores de aplicaciones. Devpack es muy sencillo y combina herramientas específicas del marco, ajustes preestablecidos seleccionados e inteligencia de empaquetado. Están diseñados para brindarle un entorno de desarrollo listo para usar con una sola instalación.

Por ejemplo, devpack-for-spring empaqueta la CLI de Spring y agrega valores específicos de Ubuntu. Proporciona instalación sin conexión de bibliotecas Spring Boot, lo que ayuda a acelerar las compilaciones por primera vez y admite entornos con espacio de aire o con ancho de banda limitado. También proporciona complementos preconfigurados de Maven y Gradle para formato, análisis estático y ajustes preestablecidos de mejores prácticas. A partir de aquí, devpack-for-spring boot start utiliza Spring Initializr para crear un nuevo proyecto Spring Boot que incluye Java 21 y la versión actual de Spring Boot, proporcionando a los desarrolladores de Java un punto de partida moderno y coherente con las políticas a través de una única directiva. Obtenga más información sobre devpack-for-spring en nuestro blog u obtenga un tutorial de funciones en nuestro blog Canal de youtube. Puedes empezar desde Almacenamiento de instantáneas.

Asimismo, devpack-for-go (y Go snaps en general) siguen una filosofía similar para los desarrolladores de Golang. Estos permiten utilizar Snap Store para instalar una cadena de herramientas Golang completa que tiene ajustes preestablecidos consistentes en todas las versiones de Ubuntu y otras distribuciones, mientras se beneficia de actualizaciones y reversiones automáticas.

Junto con .NET snaps y los complementos y extensiones .NET de Snapcraft, estos paquetes de desarrollo transforman Ubuntu de un «sistema operativo universal con un compilador» a una «plataforma compatible con el marco» donde los desarrolladores de Java/Spring, Golang y .NET pueden pasar de una instalación nueva a una compilación por primera vez en minutos usando herramientas de administración centralizadas y repetibles.

Ubuntu 26.04 LTS, plataforma de desarrollo de aplicaciones

Los esfuerzos de los últimos cuatro años ahora se centran en Ubuntu 26.04 LTS, lo que convierte a Ubuntu en la mejor plataforma de desarrollo e implementación de aplicaciones para tiempos de ejecución en varios idiomas.

La última versión de OpenJDK v25 ofrece una reducción de memoria de hasta un 20 % mediante encabezados de objetos compactos (JEP 519), un inicio más rápido mediante el análisis del método AOT (JEP 515) y un mejor rendimiento de los subprocesos virtuales. Ubuntu 26.04 LTS también lanzará una variante de arranque rápido OpenJDK-25-CRaC, y una versión basada en OpenJDK 25 del complemento graalvm-jdk está disponible en Snap Store.

.NET 10 es la última versión LTS y proporciona una plataforma más rápida, segura y potente para el desarrollo moderno. Ahora se puede encontrar en el archivo principal. El complemento .NET proporciona una manera sencilla de instalar y administrar múltiples versiones del SDK y los tiempos de ejecución de .NET; en 26.04 LTS, los usuarios de .NET snap pueden instalar y configurar el SDK y los tiempos de ejecución de .NET 10 además del .NET 8 ya disponible. También hemos lanzado dos populares herramientas de desarrollo de .NET como snaps. El primero es NetCoreDbg, un popular depurador de .NET de código abierto que funciona con la interfaz CLI para GDB/MI, VSCode DAP y CoreCLR (un motor de ejecución multiplataforma de código abierto en .NET). El segundo es el Visor de registros estructurados de MSBuild, que es el registrador de MSBuild para registrar representaciones estructuradas de objetivos, tareas, propiedades y valores del proyecto ejecutados.

Resolute Raccoon utiliza la última versión 1.26 de Golang de forma predeterminada. Esta versión se centra en importantes mejoras en el rendimiento del tiempo de ejecución, la ergonomía del desarrollador y la modernización de las bases de código heredadas. El complemento devpack-for-go está disponible a través de tienda de instantáneas Reúne las populares herramientas de desarrollo de Golang y su fácil integración con IDE como VS Code.

Rust 1.93, la versión predeterminada en 26.04, ofrece la auditabilidad de elementos como una característica opcional. La función de carga auditable es un mecanismo para registrar y rastrear la versión de la biblioteca de Rust utilizada para construir un binario de Rust de modo que el binario pueda reconstruirse si se descubre una vulnerabilidad en una versión de biblioteca determinada. La herramienta de auditoría de carga puede inspeccionar los datos incrustados en los archivos binarios de Rust y proporcionarlos rápidamente a través de: tienda de instantáneas.

¿Cómo ve todo esto para los desarrolladores?

Al observar las cadenas de herramientas, los snaps y los paquetes de desarrollo juntos, se puede ver que una estrategia clara para mover las cadenas de herramientas hacia arriba en la cadena de valor de la plataforma de desarrollo está bien integrada en Ubuntu 26.04 LTS. Los desarrolladores de sistemas tienen acceso a los últimos GCC y LLVM, cada serie tiene disponibilidad documentada y la distribución incluye un sólido soporte para Rust, lo que convierte a Ubuntu en una base confiable para núcleos, controladores y servicios críticos para el rendimiento. Los desarrolladores de aplicaciones ven el mismo enfoque a nivel de marco: Spring devpacks para Java, devpacks y snaps para Golang, snaps oficiales de .NET y complementos y extensiones de Snapcraft, que convierten el empaquetado complejo y la gestión del tiempo de ejecución en una configuración declarativa.

Esta combinación significa que los equipos pueden estandarizar los devpacks y snaps compartidos para codificar sus mejores prácticas (complementos IDE, linters, opciones de compilación, versiones de tiempo de ejecución), de modo que la incorporación de nuevos desarrolladores se convierte en «instalar Ubuntu, instalar devpack/snap, clonar repositorio» en lugar de una guía de configuración de varias páginas. Esto también significa que las canalizaciones de CI/CD pueden apuntar a versiones de cadenas de herramientas compatibles y bien documentadas e instantáneas oficiales, mejorando la repetibilidad en computadoras portátiles, granjas de servidores y entornos de nube.

El camino por delante: GCC, LLVM, Rust y devpacks

En el futuro, el equipo de la cadena de herramientas aplicará los mismos conceptos que devpack-for-spring, devpack-for-go y .NET de manera más amplia en las cadenas de herramientas principales para C/C++ y Python. Mientras el equipo todavía está decidiendo qué significa esto en la práctica, podemos echar un vistazo a cómo será el futuro.

Para GCC y LLVM, las «pilas de desarrollo» dedicadas y las imágenes de contenedores que agrupan compiladores, enlazadores, depuradores, limpiadores y cadenas de herramientas cruzadas proporcionarán a los desarrolladores de sistemas y C/C++ la misma configuración de comando único que disfrutan hoy los desarrolladores de Spring y .NET. Para Rust, tener a Rustup como la ruta de desarrollo de primera clase en Ubuntu, ofrecer una selección de imágenes de Rust y una estrecha integración con LLD hará de Ubuntu la opción obvia para los proyectos Rust modernos a nivel de sistema.

En el lado de los devpack, el trabajo futuro podría incluir devpacks para otras pilas populares (marcos de Python como Conda, pilas web de Rust, motores de juegos, etc.), así como una coherencia más profunda entre los devpacks, los complementos de Snapcraft y la documentación oficial para que cada lenguaje y marco principal tenga un «camino dorado» claramente documentado en Ubuntu.

Con las bases establecidas por devpack-for-spring, devpack-for-go, .NET snaps y la historia en evolución de GCC/LLVM/Rust, estamos construyendo un Ubuntu que esperamos sirva como una base sólida, diseñada de forma segura y con soporte que sirva a Linux y a los desarrolladores de aplicaciones por igual.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba