Rust para Linux inclui vários aprimoramentos para oferecer suporte

Durante os últimos meses Os desenvolvedores Linux têm discutido a possibilidade de permitir o uso da linguagem Rust para escrever novos drivers de dispositivo para o kernel.

No ano passado, os desenvolvedores do kernel Linux eles parecem ter chegado a um acordo sobre o assunto, Apoiadores do Rust citaram trabalhos que mostram que cerca de dois terços das vulnerabilidades do kernel atribuídas CVEs no Android e Ubuntu estão relacionadas a problemas de segurança de memória.

Seguindo esta declaração, Linus Torvalds, engenheiro de software, criador líder e desenvolvedor do kernel Linux, disse em uma entrevista que as discussões sobre o assunto seriam muito mais importantes do que uma longa postagem do Google sobre a linguagem.

Quando questionado sobre a sugestão de usar Rust, ele indicou que, "A solução aqui é simples: basta usar C ++ em vez de Rust."

Depois disso em março foi lançado o primeiro suportee que permitiu que os drivers do Rust fossem colocados na árvore Linux-Next para testes adicionais antes de sua eventual inclusão no kernel principal.

Logo atrás disso estava um "pedido de comentário" reeditado na lista de discussão do kernel sobre a perspectiva do código Rust para o kernel Linux.

Miguel OjedaO desenvolvedor do kernel Linux iniciou uma proposta Request for Comments (RFC) na lista de e-mails do kernel Linux.

A postagem na lista de discussão delineou as crenças dos desenvolvedores envolvidos na adição de código Rust ao kernel, benefícios como segurança de memória aprimorada e muito mais.

“Alguns de vocês notaram nas últimas semanas e meses que uma tentativa séria está sendo feita para trazer um segundo idioma para o kernel. Finalmente chegamos, com um RFC que adiciona suporte Rust ao kernel Linux ”, disse Miguel Ojeja. “Sabemos que há enormes custos e riscos envolvidos na introdução de uma nova linguagem no kernel”, acrescentou.

Equipe do Projeto Rust for Linux mudou do compilador Rust beta para o uso de versões estáveis, migrando sempre que uma nova versão é lançada.

“Gostaríamos de agradecer ao Rust por trabalhar conosco nessas opções para que o kernel possa usá-las,” disse Miguel.

Ao atualizar o compilador, a equipe foi capaz de remover alguns recursos instáveis ​​da lista: const_fn_transmute, const_panic, const_unreachable_unchecked, core_panic e try_reserve.

Além disso, destaca-se que algumas opções de modularização foram adicionadas more para alocar para desabilitar algumas funções desnecessárias: no_rc e no_sync.

Upstream, para que o caso de uso do kernel seja bem suportado, ou mais precisamente, a "mistura" de opções que o kernel precisa, o Upstream core também adicionou no_fp_fmt_parse.

Por outro lado, o Rust habilitou uma série de diagnósticos adicionais para o compilador Rust e Clippy. Uma diferença de C é que os diagnósticos de Rust são um pouco mais fáceis de desabilitar no código, o que é mais rígido no caso geral.

também abstrações e atualizações de driver foram implementadas. A equipe adicionou abstrações para stream locks, callbacks de gerenciamento de energia, memória io (readX / writeX), chips irq e gerenciadores de stream de alto nível, chips gpio (incluindo chips irq), periféricos, periféricos amba e drivers.

O apoio do controlador é aprimorado com uma infraestrutura independente de barramento, Objetos revogáveis, mutexes revogáveis, iteradores de bits eficientes, melhores diagnósticos de pânico e wrappers de ponteiro simplificados. Além disso, ele melhorou e simplificou os objetos Ref (compatível com refcount_t) e substituiu todas as instâncias do Rust.

E um novo driver para dispositivos gpio PL061 foi implementado e enviado como patch RFC.

Finalmente, deve-se notar que O suporte à ferrugem ainda é considerado experimental. No entanto, o suporte é bom o suficiente para que os desenvolvedores do kernel trabalhem em abstrações Rust para escrever subsistemas e controladores e outros módulos. A série atual acaba de chegar no Linux-next, então a primeira execução será esta semana.

fonte: https://lkml.org/lkml


Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.