Um engenheiro da Microsoft introduziu correções para melhorar a implementação do Rust no Linux

Rust Linux

A integração do Rust no Linux teve um alto nível de aceitação pela comunidade e desenvolvedores

Hoje, a contribuição da Microsoft para o Kernel Linux não é brincadeira, E depois de ver o Linux como um inimigo mortal durante décadas e contra o qual travou uma guerra suja, a Microsoft tornou-se um dos principais contribuintes.

E ainda que muitos podem desaprovar os movimentos da Microsoft a favor do Linux e do código aberto, eles não podem negar que grande parte de suas contribuições foram bastante interessantes e até certo ponto benéficas para projetos de código aberto.

Deve-se notar que no igcomo outros contribuintes do Linux, digamos Google, Intel, IBM, Oracle, entre outros, o trabalho da Microsoft no Linux principalmente está focada em seus produtos e como repito, assim como fazem os outros pesos pesados ​​​​e não é ruim, porque no final das contas o Kernel Linux é o resultado de tudo isso e claro da supervisão do chefe, Linus Torvalds, pois se você não gosta de algo ou acredita que não é necessário, não está introduzido no Linux e pronto.

A razão para mencionar isso é que recentemente Wedson Almeida, engenheiro da Microsoftt envolvido no desenvolvimento de Rust para Linux, anunciou a introdução de patches importantes que melhoram significativamente a inicialização de módulos Rust no kernel.

Atualmente temos um box fork com alterações em `Vec`; outras mudanças foram incorporadas (ao projeto Rust). Esta série elimina bifurcação e expõe todas as funcionalidades como recursos de extensão. Além disso, também introduz parâmetros de sinalização de atribuição para todas as funções que podem resultar em atribuições.

Uma Uma das principais melhorias é a eliminação da bifurcação alloc e o uso do recurso instável allocator_api, Que simplifica o código e reduz a carga de manutenção a longo prazo. Além disso, foram introduzidos sinalizadores para alocações, como GFP_KERNEL e GFP_ATOMIC, para melhorar o gerenciamento de memória e otimizar o desempenho do módulo.

Mudanças na v2:
– Descrição atualizada da caixa `alloc`.
– Alterados os nomes dos módulos vecext e boxext para vec_ext e box_ext.
– Adicionada diretiva de bypass a “AllocError”.
– Comentário de segurança atualizado em `BoxExt::new`.
– Atualizados `VecExt::push` e `VecExt::extend_from_slice` para usar
`spare_capacity_mut`
– Adicionar diretiva para não compilar `deestrutura` e `reconstruir` durante `teste` ou
`testlib` estão configurados. Caso contrário, teremos um aviso porque `push` e
`extend_from_slice` não os use mais.
– Indentação atualizada em `Arc::new_uninit`
– Movida a remoção do elenco `TryReserveError` para `Error` no patch 7, onde
O uso de `TryReserveError` foi realmente removido.

Essas correções refinar APIs de mapeamento para código do kernel Rust e introduzem um novo conceito: inicializar módulos diretamente no local de memória pretendido. Isso elimina a necessidade de alocações desnecessárias de memória e permite que os módulos gerenciem com competência estruturas de dados complexas, como bloqueios.

Filho mencionou que este desenvolvimento permite ter módulos cujo estado contém objetos que devem ser inicializados e também que permite que registos (por exemplo, registos de condutores) sejam implementados no local e tornados semelhantes aos seus homólogos em C, onde não são necessários novos mapeamentos.

Anteriormente, a inicialização do módulo envolvia a alocação de memória para uma instância que seria então movido para o local designado. Porém, Com os novos patches, os módulos podem ser inicializados diretamente no local de memória pretendido, eliminando alocações desnecessárias e permitindo um gerenciamento mais eficiente de estruturas de dados complexas, como bloqueios. Isso tem um impacto significativo na otimização do uso de memória e na eficiência geral dos módulos Rust no kernel Linux.

Além de melhorar a eficiência e o gerenciamento de memória, esta etapa alinha ainda mais os módulos alimentados por Rust com seus equivalentes em C, estreitando a lacuna e abrindo caminho para o desenvolvimento do Rust.

Se você interessado em saber mais sobre o assunto, você pode verificar os detalhes em o seguinte link.