
Houbo certa controversia na comunidade do núcleo de Linux sobre a integración da linguaxe de programación Rust. Christoph Hellwig, mantedor dos subsistemas de arquitectura DMA, KVM, Slab Allocator e PowerPC no núcleo de Linux, antes membro do comité de dirección técnica da Linux Foundation e demandante na demanda relacionada coa GPL contra VMware, rexeitou aprobar parches relacionados co soporte para o desenvolvemento de controladores Rust.
Os parches propostos que engaden envoltorios para as funcións do subsistema DMA suscitaron preocupacións sobre o aumento do mantemento do código e a posibilidade de reducir a calidade do software. Algúns desenvolvedores prefiren manter as súas API en C para evitar unha complexidade adicional.
Os motivos citados para a negativa foron a maior complexidade do mantemento do código ante a presenza de enlaces noutros idiomas e o desexo de preservar as interfaces de software a DMA nunha forma lexible en linguaxe C, sen espallarse en enlaces incomprensibles. Christophe propuxo acceder directamente á API C DMA nativa en cada controlador Rust, para non crear abstraccións adicionais das que terían que depender os mantedores do núcleo.
A pesar da intención expresada polos desenvolvedores do proxecto Rust para Linux de manter de forma totalmente independente o código base escrito en Rust, vetouse a aceptación de parches.
Christoph observou que se os desenvolvedores queren facer que Linux sexa insostible mesturando diferentes linguaxes de programación na mesma base de código, deberían facelo no seu controlador, en lugar de pulverizar este "tumor canceroso" no núcleo principal.
O núcleo do problema de mantemento é que os enlaces Rust fan que os mantedores dependan do código Rust. A primeira vista, parece que os enlaces son só complementos sobre estruturas e funcións C que non afectan de ningún xeito ao desenvolvemento e mantemento do código C. Pero isto non é así. En presenza de tales enlaces, os desenvolvedores de subsistemas escritos en C deben ter en conta o impacto dos seus cambios na funcionalidade continuada das ligazóns. Calquera cambio nas estruturas de datos ou nas funcións internas en C pode requirir cambios no código de vinculación, polo que os cambios no código C que afectan á vinculación deben ser rastreados e sincronizados co código Rust. Moitos mantedores non están dispostos a asumir a responsabilidade adicional de solucionar os problemas que xorden no código Rust e non están dispostos a gastar o seu tempo controlando o estado das ligazóns de Rust.
Fonte: linux.org.ru
