O Rust chegou ao kernel do Linux e tem ganhado cada vez mais espaço em grandes projetos de software livre. Vejamos alguns detalhes da história dessa linguagem de programação que há anos é apontada como a preferida pelos desenvolvedores.
A linguagem Rust e o kernel Linux
A maioria de vocês deve saber que uma linguagem de programação é uma forma de escrever o código dos softwares e que Linux é um kernel, a parte central de todo sistema operacional ou distribuição que gerencia a comunicação com cada parte do hardware dos dispositivos.
O próprio Linux é escrito em várias linguagens:
Linguagem | % de participação no código |
C | 98,5% |
Assembly | 0,8% |
Shell | 0,3% |
Makefile | 0,2% |
Python | 0,1% |
Perl | 0.1% |
Rust | <0.1% |
O principal desenvolvedor do Linux é Linus Torvalds, mas, há mais de 13 mil contribuintes ao código. Como você vê na tabela, ele é basicamente escrito na linguagem C, que surgiu no início dos anos 70.
Com o avanço da tecnologia, um dos pontos fracos da linguagem C foi ficando evidente: o modo como é feito o gerenciamento da memória (RAM) que, consequentemente, abriu brechas para potenciais falhas de segurança.
Por que abrir espaço para o Rust no kernel?
A linguagem C, 50 anos após ter sido lançada, não contém em si o poder de evitar vulnerabilidades na gestão da memória e, por estar presente em muitíssimos servidores, é alvo de organizações criminosas que desejam invadir e roubar dados de empresas por todo o mundo.
Segundo Mark Russinovich, Chief Tecnology Officer (CTO) do Azure na Microsoft, afirmou que cerca de 70% das falhas de segurança que geram alertas (os conhecidos CVE) são ocasionadas pelo mau gerenciamento de memória e o Rust faria com que a maioria delas (70%) simplesmente deixasse de existir.
Ele promete ser uma solução para acomodar novas tecnologias e segurança dentro do kernel, da mesma forma como foi feita uma tentativa anos atrás de incorporar o C++, que acabou não prosperando. Ele é extremamente rápido, integra-se facilmente a outras linguagens, e gerencia eficientemente a memória (sem runtime nem garbage collector) melhorando o desempenho de serviços críticos.
A popularidade do Rust
O Rust começou a ser desenvolvido por um funcionário da Mozilla, Graydon Hoare, e a empresa começou a apoiar o projeto em 2009. Projetado para ser seguro, versátil, prático e confiável, a primeira versão estável do Rust foi lançada em 2015.
Todos os anos, o site Stack Overflow faz uma pesquisa para saber quais são as linguagens mais utilizadas pelos desenvolvedores. Pelo sétimo ano consecutivo, ele aparece como o “queridinho” de 87% dos mais de 70 mil desenvolvedores que responderam à seguinte pergunta:
“Em quais linguagens de programação, script e marcação você fez um extenso trabalho de desenvolvimento no ano passado e em quais deseja trabalhar no próximo ano?”
Apenas cerca de 40% dos desenvolvedores preferem programar em C, considerada por muitos como uma linguagem complexa, ainda que muito eficiente em cenários específicos. O Rust, por outro lado, é uma linguagem que se adapta a muitos propósitos e atrai a atenção de mais desenvolvedores, também pelo volume de oportunidades profissionais que se abrem para quem sabe programar em Rust.
Projetos desenvolvidos com o Rust
Não basta uma linguagem ser poderosa, é preciso que ela seja utilizada; além do kernel Linux, ele faz parte de um número crescente de projetos, como mostra o estudo da RedMonk, que cruza a popularidade de uma linguagem no Stack Overflow com o número de projetos onde ela se faz presente no GitHub.
Alguns dos projetos mais populares desenvolvidos em Rust são:
Renderização
- Gecko: o motor de renderização do Firefox (e também o Servo, ainda sendo testado);
- librsvg: motor de renderização de arquivos svg no GNOME e no MediaWiki;
- Prime Video: o serviço de streaming de vídeo sob demanda utiliza ferramentas em Rust via WebAssembly;
Rede
- cURL: utiliza a ferramenta hyper;
- Discord: utiliza Rust em ferramentas nos seus servidores e nos aplicativos;
- Figma: o editor de desenhos vetoriais para prototipagem de interfaces gráficas já foi apresentado no nosso blog e usa o Rust no seu servidor multiplayer;
- Fractal: mensageiro baseado no protocolo Matrix;
- Magic Pocket: o sistema de armazenamento do Dropbox está escrito em Rust;
- npm Registry: o serviço de hospedagem (e instalação) de dependências para JavaScript e Node.js;
- OpenDNS: o serviço de DNS usa várias ferramentas em Rust;
- Pingora: o novo proxy da Cloudflare é escrito em Rust e substitui o nginx;
- Tor: a rede anônima utiliza Rust em alguns componentes.
Sistemas operacionais e componentes
Além do Android e do Linux, que oferecem suporte experimental para desenvolvimento de drivers e módulos secundários, ele já aparece em alguns componentes de diversos sistemas operacionais como o Windows, o Google Fuchsia, o Redox, além do sistema de arquivos Stratis, utilizado pelo Fedora e RHEL.
O COSMIC, a interface gráfica utilizada pelo Pop!_OS, está sendo reescrito em Rust a partir do zero pela System76 e utilizará o Iced como toolkit, um kit de ferramentas para a geração da interface gráfica que substituirá o atual GTK.
Outros aplicativos e ferramentas
- 1Password: gerenciador de senhas;
- Cargo: gerenciador de pacotes da linguagem Rust que baixa as dependências, compila e instala ferramentas e aplicativos; também utilizado para criar pacotes de instalação nos formatos app, deb, msi, rpm e apk.
- ripgrep: ferramenta de linha de comando que substitui o grep e utilizada pelo Visual Studio Code;
- Starship: prompt de customização para vários shell;
- Topgrade: ferramenta que detecta o que está instalado no seu sistema e executa automaticamente todas as rotinas para atualizar tudo, incluindo os pacotes de sistema, os Flatpaks, os aplicativos em Rust e Python, os contêineres e até o firmware do seu computador.
Você usa ou desenvolve alguma ferramenta em Rust? Não deixe de apoiar esse importante projeto e receba semanalmente notícias sobre tecnologia e open source através da nossa newsletter.