Crisis en el lenguaje de programación Rust se traslada al kernel de Linux

Crisis en el lenguaje de programación Rust se traslada al kernel de Linux

Ha habido cierta controversia en la comunidad del kernel de Linux sobre la integración del lenguaje de programación Rust. Christoph Hellwig, mantenedor de los subsistemas de arquitectura DMA, KVM, Slab Allocator y PowerPC en el kernel de Linux, ex miembro del comité directivo técnico de la Fundación Linux y demandante en la demanda relacionada con la GPL contra VMware, se ha negado a respaldar parches relacionados con el soporte para el desarrollo de controladores Rust.

Los parches propuestos que agregan envoltorios para las funciones del subsistema DMA han generado inquietudes sobre el aumento del mantenimiento del código y la posible reducción de la calidad del software. Algunos desarrolladores prefieren mantener sus API en C para evitar complejidad adicional.

Las razones citadas para el rechazo fueron la mayor complejidad del mantenimiento del código en presencia de enlaces en otros lenguajes y el deseo de preservar las interfaces de software para DMA en una forma legible en el lenguaje C, sin que se propaguen a través de enlaces incomprensibles. Christophe propuso acceder directamente a la API C DMA nativa en cada controlador de Rust, para no crear abstracciones adicionales de las que los mantenedores del kernel tendrían que depender.

A pesar de la intención expresada por los desarrolladores del proyecto Rust para Linux de mantener de forma completamente independiente la base de código escrita en Rust, la aceptación de parches fue vetada.

Christoph señaló que si los desarrolladores quieren hacer que Linux sea imposible de mantener mezclando diferentes lenguajes de programación en la misma base de código, deberían hacerlo en su controlador, en lugar de rociar este "tumor canceroso" sobre el núcleo principal.

El núcleo del problema de mantenibilidad es que los enlaces de Rust hacen que los mantenedores dependan del código de Rust. A primera vista, parece que los enlaces son simplemente complementos sobre las estructuras y funciones de C que no afectan de ninguna manera el desarrollo y mantenimiento del código C. Pero esto no es así. En presencia de tales enlaces, los desarrolladores de subsistemas escritos en C deben tener en cuenta el impacto de sus cambios en la funcionalidad continua de los enlaces. Cualquier cambio en las estructuras de datos o funciones internas en C puede requerir cambios en el código de enlace, por lo que los cambios en el código C que afectan el enlace deben rastrearse y sincronizarse con el código de Rust. Muchos mantenedores no están dispuestos a asumir la responsabilidad adicional de solucionar los problemas que surgen en el código de Rust y no están dispuestos a dedicar su tiempo a monitorear el estado de los enlaces de Rust.

Fuente: linux.org.ru

Añadir un comentario