Christoph Hellwig, mantenedor dos subsistemas DMA, KVM, Slab Allocator e arquitetura PowerPC no núcleo Linux, que se recusou principlamente a aceitar as ligações Rust para o subsistema DMA, juntou-se à discussão sobre as regras de manutenção do Rust como parte do núcleo, publicadas pelo projeto Rust for Linux. Na opinião de Christoph, tais regras são inúteis, a menos que sejam acordadas com a comunidade e incluídas na documentação do núcleo.
Christoph também observou que as regras contêm informações incorretas sobre o fato de que os mantenedores podem tomar decisões por conta própria sobre a inclusão de código relacionado ao Rust em seus subsistemas. Segundo Christoph, em uma conversa particular, Linus Torvalds declarou que está determinado a aceitar o código Rust no núcleo, independentemente das objeções dos mantenedores. Assim, desenvolvedores e mantenedores do núcleo terão que lidar com o Rust, quer queiram ou não.
Christoph também comparou novamente a disseminação das ligações Rust a um tumor cancerígeno, que se espalhará por todos os subsistemas do núcleo e resultará em fragmentação. De um todo coeso, o núcleo se transforma em um projeto escrito em várias linguagens, sem uma definição clara de quando cada linguagem deve ser utilizada. Segundo Christoph, trabalhar com uma base de código tão misturada se tornou seu pior pesadelo, pois em tais condições, a reescrita do código de uma linguagem para outra e depois de volta é constante.
Cristoph pede que lhe expliquem o objetivo da implementação do Rust no núcleo. Se o objetivo é resolver problemas de segurança que surgem ao trabalhar em níveis baixos com a memória, é necessário modernizar primeiro o código existente. Considerando que os mantenedores reagem de forma dolorosa até mesmo a coisas triviais, como verificações de estouro de inteiros, é incompreensível como se pode superar a lacuna entre uma parte do núcleo que não aceita nem mesmo regras simples de segurança e outra parte que se mantém em conformidade com regras rigorosas. Se o objetivo é simplificar o desenvolvimento de drivers, a introdução do suporte a mais uma linguagem apenas aumentará a carga de trabalho e sobrecarregará ainda mais as pessoas que já sustentam a infraestrutura do núcleo em funcionamento.
Quanto aos defensores da implementação do Rust no núcleo, eles mencionam os seguintes objetivos:
- Escrever novo código na linguagem Rust reduzirá o risco de erros ao lidar com memória e condições de corrida, além de eliminar alguns erros lógicos.
- Será mais fácil para os mantenedores revisar alterações e fazer refatorações de módulos considerando as garantias oferecidas pela linguagem Rust.
- A presença de abstrações que utilizam recursos avançados da linguagem Rust facilitará a criação de novos drivers e módulos.
- O suporte a uma linguagem moderna atrairá novos participantes para o desenvolvimento do núcleo.
- A aplicação das capacidades da ferramenta Rust simplificará o cumprimento das exigências de documentação do código. Por exemplo, no projeto Rust for Linux, foi introduzida a exigência de documentação obrigatória para APIs públicas, requisitos de segurança, blocos unsafe e invariantes de tipos.
Fonte: opennet.ru
