Tras dos meses de desarrollo, Linus Torvalds dio a conocer el lanzamiento del kernel Linux 6.12, versión en la cual se destaca la posibilidad de activar el modo en tiempo real, la incorporación de sched_ext para permitir la creación de planificadores de CPU utilizando eBPF, y un mecanismo que genera códigos QR en situaciones críticas.
Linux 6.12 incluye un total de 14,607 correcciones realizadas, se añadieron mas de 507,913 líneas de código y eliminando 234,083. Aunque el parche es más pequeño en comparación con versiones anteriores, representa una optimización sin precedentes.
Principales novedades de Linux 6.12
El kernel de Linux ahora puede construirse con la opción PREEMPT_RT integrada, eliminando la necesidad de parches externos para operación en tiempo real. Esto se logró al incluir soporte en la función printk. PREEMPT_RT y está disponible en arquitecturas como x86, x86_64, ARM64 y RISC-V.
En la compilación, el soporte para el compilador Clang se extendió a la biblioteca estándar nolibc, permitiendo optimizaciones como la de tiempo de enlace (LTO). También se agregó un sistema de rastreo en anillo, que conserva información de depuración en memoria tras reinicios, facilitando el análisis post-fallo.
Por la parte de Rust-for-Linux, este sigue avanzando con nuevos módulos como list y rbtree para listas enlazadas y red-black tree. Además de que se amplió el soporte en áreas clave como inicialización, sincronización y manejo de errores. Es posible compilar el kernel con Rust manteniendo protecciones avanzadas como Spectre y depuración con KASAN o kCFI. Además, se integró un controlador Ethernet PHY escrito en Rust.
Otra de las novedades que se destaca de esta nueva versión del Kernel de Linux 6.12 es la introduccion del mecanismo sched_ext (SCX), que permite usar eBPF para crear programadores de CPU personalizados. Con SCX, los desarrolladores pueden diseñar programadores dinámicos que optimicen la ejecución de tareas según el estado del sistema y las necesidades específicas de las aplicaciones, facilitando la experimentación y la implementación de estrategias en entornos de producción.
También se completó la integración del servidor SCHED_DEADLINE, una solución más eficiente para evitar la monopolización de la CPU por tareas de alta prioridad, mejorando la asignación de recursos a tareas de baja prioridad. Además, se reemplazó el programador CFS por el nuevo EEVDF (Earliest Eligible Virtual Deadline First), que asigna de forma más justa los recursos del procesador y elimina la necesidad de ajustes manuales, reduciendo retrasos en tareas críticas.
El controlador DRM Panic, encargado de manejar emergencias en el kernel, ahora puede mostrar un informe visual con logotipos y códigos QR que incluyen datos de diagnóstico comprimidos. Estos códigos QR facilitan el análisis de fallos, permitiendo redirigir a los usuarios a páginas configuradas por las distribuciones para reportar problemas.
En cuanto a ARM, se agregó soporte para la extensión POE (Permission Overlay Extension), que habilita mecanismos como las Claves de Protección de Memoria para restringir el acceso a áreas específicas de memoria sin necesidad de modificar tablas de páginas. Además, la optimización de la llamada al sistema getrandom() mediante vDSO incrementó la velocidad de generación de números aleatorios hasta 15 veces en arquitecturas Loongarch, ARM64, PowerPC y s390.
Un nuevo controlador USB permite usar el protocolo 9pfs para transferir datos entre dispositivos USB mediante el montaje de sistemas de archivos 9p. Esto es particularmente útil en dispositivos integrados, proporcionando una alternativa eficiente a NFS para arrancar particiones raíz.
El subsistema io_uring añadió soporte para tiempos de espera absolutos, activados en momentos específicos según el reloj del sistema. Esto mejora el control sobre operaciones asíncronas, brindando mayor precisión en su ejecución.
Para la biblioteca libcpupower, se incluyeron archivos de generación de enlaces mediante SWIG, lo que permite utilizar lenguajes como Python para ampliar su funcionalidad. Además, se mejoró la utilidad cpuidle, que ahora puede medir el tiempo mínimo necesario en estado inactivo para justificar los costos energéticos de transición.
En el ámbito de redes, una de las mejoras más destacadas es el mecanismo TCP para memoria de dispositivos, que permite transferencias directas de datos entre la memoria de dispositivos periféricos y la red sin pasar por la CPU, logrando una eficiencia notable. Además, se ampliaron las capacidades de numerosos controladores Ethernet y WiFi, como iwlwifi de Intel y rtw89 de RealTek, con soporte adicional para chips WiFi 6 y estándares IEEE avanzados. Para IPv6, se introdujeron nuevas funcionalidades para optimizar la asignación de direcciones utilizando DHCPv6-PD, mientras que MPTCP recibió mejoras en enrutamiento y detección de pérdidas de tráfico.
En el soporte de hardware, se añadió el soporte continuo para AMD RDNA4 en el controlador AMDGPU y mejoras en el controlador Xe DRM para las GPUs Intel Xe. También se añadió la compatibilidad con los procesadores Xeon Granite Rapids y las nuevas plataformas ARM, incluyendo el SoC Snapdragon X Elite.
Finalmente, si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.