systemd adota Rust para novos módulos

systemd adota Rust para novos módulos

O projeto responsável pelo sistema de inicialização e gerenciamento de serviços padrão da maioria das distribuições Linux acaba de cruzar um marco em sua engenharia: o suporte à linguagem Rust foi oficialmente aceito e integrado ao repositório upstream.

A mudança de diretriz foi documentada e revisada no Pull Request #44324 do systemd no GitHub, liderada pelo desenvolvedor do kernel Christian Brauner e acolhida pelos mantenedores do projeto. O objetivo é permitir que novas ferramentas auxiliares usufruam das garantias de segurança de memória e concorrência nativas do Rust sem colocar em risco a base já consagrada da plataforma.

Sem reescrita geral: apenas “programas folha”

Ao contrário do que os entusiastas mais afoitos poderiam imaginar, o systemd não passará por uma reescrita massiva de sua base em C. A política definida pelos mantenedores é conservadora e pragmática:

  • Núcleo em C permanece intocado: O gerenciador de processos PID 1, bibliotecas fundamentais como a libsystemd, módulos de autenticação PAM e provedores NSS continuam desenvolvidos integralmente em C;
  • Exclusivo para componentes periféricos: O Rust só poderá ser adotado em novos executáveis isolados (chamados de “programas folha”), que atuam nas bordas do sistema e não possuem dependências internas vinculadas a outras partes vitais do projeto;
  • O pioneiro systemd-keyring-setup: O primeiro utilitário arquitetado dentro desse novo modelo é o responsável pelo provisionamento de anéis de chaves de criptografia e inscrição de certificados X.509 durante o boot.

Integração via Meson sem dependência do Cargo

Outro detalhe arquitetural relevante é a postura do projeto em relação à cadeia de suprimentos (supply chain). Para preservar o controle rigoroso sobre os artefatos de compilação exigido por mantenedores de distribuições como Debian, Fedora e Arch Linux, o systemd não utiliza o gerenciador Cargo nem baixa dependências externas de crates.io.

Toda a compilação é orquestrada diretamente pelas regras nativas de Rust do Meson (meson.build), operando em modo no_std (sem depender da biblioteca padrão pesada do Rust) e gerando amarrações seguras via bindgen para chamar funções das bibliotecas em C existentes.

A estratégia segue uma tendência da indústria de sistemas operacionais abertos, como já vimos com o suporte a Rust no kernel Linux e o Ubuntu 25.10. O suporte ao Rust no systemd é opcional por meio da flag de compilação -Drust=auto e fará sua estreia formal com o lançamento do systemd 263.

Fique por dentro das principais novidades da semana sobre tecnologia e Linux: receba nossa newsletter!