A Plataforma Android oferece suporte ao desenvolvimento de componentes nativos do SO em Rust, uma linguagem de programação de sistemas moderna com garantias de segurança de memória e desempenho equivalente ao C/C++. O Rust usa uma combinação de verificações durante a compilação, que aplicam o ciclo de vida e a propriedade do objeto, e verificações durante a execução que garantem acessos válidos à memória, eliminando a necessidade de um coletor de lixo.
O Rust oferece uma série de recursos de linguagem modernos que permitem aos desenvolvedores serem mais produtivos e confiantes em relação ao próprio código:
- Programação simultânea segura: a facilidade com que os usuários podem escrever um código thread-safe e seguro deu origem ao slogan do Rust de Simultaneidade sem medo (link em inglês).
- Sistema de tipo expressivo: o Rust ajuda a evitar bugs de programação lógica, permitindo tipos altamente expressivos, como wrappers Newtype e variantes de tipo enumerado com conteúdo.
- Verificações durante a compilação mais eficientes: quanto mais bugs detectados durante a compilação, maior a confiança do desenvolvedor de que, quando o código for compilado corretamente, ele funcionará conforme o esperado.
- Framework de testes integrado: o Rust oferece um framework de teste integrado em que testes de unidade podem ser realizados com a implementação que será testada, facilitando a inclusão de testes de unidade.
- Aplicação do tratamento de erros: as funções com falhas recuperáveis podem
retornar um tipo de resultado (link em inglês),
que será uma variante bem-sucedida ou uma variante de erro. O compilador
exige que os autores de chamadas verifiquem e processem a variante de erro de um tipo enumerado
Result
retornado por uma chamada de função. Isso reduz o potencial de bugs resultantes de falhas não processadas. - Inicialização: o Rust exige que todas as variáveis sejam inicializadas em um membro legal do tipo dela antes de serem usadas, evitando uma inicialização não intencional com um valor não seguro.
- Processamento de números inteiros mais seguro: todas as conversões de tipo inteiro são casts explícitos. Os desenvolvedores não podem fazer casts acidentalmente durante uma chamada de função ao atribuir a uma variável ou ao tentar fazer aritmética com outros tipos. A verificação de overflow é ativada por padrão para o Rust no Android, o que exige que as operações de overflow sejam explícitas.
Para saber mais, consulte a série de postagens do blog sobre o suporte ao Rust no Android:
- Rust na Plataforma Android (link em inglês)
Oferece uma visão geral do motivo pelo qual a equipe do Android introduziu o Rust como uma nova linguagem da plataforma. - Integrar o Rust ao Android Open Source Project (link em inglês)
Descreve como o suporte ao Rust foi introduzido no sistema de build e porque algumas decisões de design foram tomadas. - Interoperabilidade Rust/C++ na Plataforma Android (link em inglês)
Discute a abordagem para a interoperabilidade entre Rust e C++ no Android.