NetBSD e o debate sobre Rust no Kernel: Por que não vai acontecer agora

Rust no Kernel do NetBSD? Por que a "portabilidade extrema" barra a linguagem do momento!

Escrito por
Emanuel Negromonte
Emanuel Negromonte é Jornalista, Mestre em Tecnologia da Informação e atualmente cursa a segunda graduação em Engenharia de Software. Com 14 anos de experiência escrevendo sobre...
  • Freio na hype: Enquanto FreeBSD e Linux caminham para integrar Rust, o NetBSD explicou por que isso é tecnicamente inviável (hoje) para eles.
  • O muro do legado: O Rust simplesmente não existe para arquiteturas antigas (como VAX, Alpha e Amiga) que o NetBSD faz questão de suportar.
  • O pesadelo do bootstrap: Compilar Rust exige binários prévios, o que viola a regra de ouro de "compilação pura via código-fonte" do NetBSD.
  • Lua > Rust? Ironicamente, o NetBSD já aceita scripts no kernel, mas usa Lua pela leveza e facilidade de integração em qualquer hardware.
  • Ritmo incompatível: Com updates a cada 6 semanas, uma versão do Rust integrada ao sistema ficaria obsoleta muito antes do fim da vida útil de uma versão do NetBSD.

O NetBSD é um sistema operacional Unix-like conhecido por uma característica definidora: portabilidade extrema. Seu lema “Of course it runs NetBSD” não é exagero; ele roda em desde servidores modernos até torradeiras inteligentes e computadores dos anos 80 (como VAX e Amiga). Enquanto o mundo Linux e, mais recentemente, o FreeBSD começam a adotar a linguagem Rust no núcleo (kernel) para garantir segurança de memória e reduzir bugs, o NetBSD reafirmou sua postura conservadora — mas por motivos puramente técnicos e logísticos, não por teimosia.

Principais novidades (O ponto central)

A discussão surgiu após um desenvolvedor questionar se o NetBSD seguiria os passos do FreeBSD, que está considerando aceitar código Rust no kernel para “atrair desenvolvedores mais jovens”. A resposta oficial da equipe do NetBSD esclarece a situação:

  • O mito da “atração de jovens”: A equipe refuta a ideia de que Rust serve apenas para marketing. A adoção seria por mérito técnico (segurança de memória), mas os custos atuais superam os benefícios para o projeto.
  • A decisão “estranha” que já existe: Ironicamente, o NetBSD já possui uma linguagem de alto nível no kernel: Lua. Diferente do Rust, o Lua é utilizado hoje para prototipagem rápida de drivers e filtragem de pacotes, permitindo scriptar o kernel sem recompilá-lo.
  • O bloqueio da arquitetura: O NetBSD suporta arquiteturas de hardware antigas ou obscuras onde o compilador de Rust (que depende do LLVM) sequer existe. Adotar Rust quebraria a promessa de portabilidade universal do sistema.

Impacto e repercussão (O que descobrimos)

Analisando o cenário além do anúncio, identificamos dois gargalos críticos que tornam o Rust incompatível com a filosofia “tradição e estabilidade” do BSD:

  1. O Pesadelo do Bootstrap: O NetBSD se orgulha de ser “autocontido” — você pode compilar o sistema inteiro apenas com o código-fonte. O Rust, porém, exige uma versão binária anterior dele mesmo para ser compilado (bootstrapping). Isso introduz uma dependência de binários externos (“blobs”) que a comunidade BSD historicamente rejeita por questões de auditabilidade e pureza.
  2. Conflito de Ciclos de Vida: O NetBSD mantém suporte a versões por anos (ex: NetBSD 9 saiu em 2020). O Rust lança versões a cada 6 semanas. Se o NetBSD incluísse o Rust 1.41 (vigente em 2020) no sistema base, hoje esse compilador seria inútil para qualquer software moderno, criando um “lixo digital” dentro do sistema operacional.

Enquanto o Linux aceita descartar suporte a hardware antigo (como processadores i486) para avançar, o NetBSD prioriza manter o hardware legado vivo, o que torna o Rust inviável no core do sistema atualmente.

Resumo técnico (Por que não Rust?)

Aqui estão os impedimentos técnicos listados pelos mantenedores:

  • Suporte a Arquiteturas: O compilador Rust (rustc) não suporta targets Tier-2/Tier-3 cruciais para o NetBSD (ex: m68k, VAX, Alpha).
  • Dependência Cíclica: O processo de build do Rust exige binários pré-compilados, violando a política de source-only build do NetBSD.
  • Custo de Manutenção: Manter o Rust atualizado no pkgsrc (gerenciador de pacotes) já consome recursos escassos da equipe; integrá-lo ao sistema base multiplicaria esse esforço.
  • Bloatware: Trazer o toolchain do Rust para o sistema base aumentaria drasticamente o tamanho do código-fonte e da instalação padrão.

Disponibilidade

Embora não esteja no kernel, o Rust é totalmente suportado no espaço de usuário (userland) do NetBSD. Desenvolvedores podem instalar versões modernas do Rust via pkgsrc para criar aplicações.

  • Para instalar Rust no NetBSD:pkgin install rust
  • Para experimentar Lua no Kernel (já disponível):Consulte as man pages man 4 lua e man 9 lua no seu sistema NetBSD atual.
Compartilhe este artigo