Lançamento do Mold Linker Versão 3.0.0 – Reescrito em Rust
Um linker ELF de alto desempenho, o mold, lançou a versão 3.0 após migrar sua base de código de C/C++ para Rust, supostamente com ajuda substancial de grandes modelos de linguagem. Comentadores ponderam os benefícios do Rust — segurança de memória, concorrência mais segura e suporte crescente do ecossistema — contra desvantagens como suporte mais fraco a arquiteturas obscuras e um bootstrapping significativamente mais complexo, o que é uma grande preocupação para distribuições Linux focadas em segurança que recompilam tudo a partir de código mínimo confiável. A mudança também gera comparações com outros linkers rápidos e linguagens de sistemas como Zig, além de preocupações mais amplas sobre a pegada de dependências do Rust e suas implicações para builds reproduzíveis e seguros contra ataques à cadeia de suprimentos.
Motivação para a Reescrita em Rust
- Alguns especulam que os principais motivos sejam segurança de memória, tratamento robusto de entradas corrompidas e, especialmente, concorrência mais segura e mais granular.
- Outros argumentam que endurecer C/C++ contra entradas malformadas é possível, mas vários participantes respondem que provar que grandes bases de código em C/C++ permanecem seguras ao longo do tempo é extremamente caro e propenso a erros.
Uso de IA/LLM na Reescrita
- Vários comentaristas observam commits que creditam um LLM e links para comentários onde o autor supostamente confirma o uso de assistência de LLM.
- Há debate sobre se isso é uma “reescrita” ou uma “transpilação”; o consenso tende a ser que Rust agora é a fonte principal, editada por humanos.
Rust vs C/C++/Zig e Segurança/Desempenho
- Muitos veem Rust como permitindo “concorrência sem medo” e eliminando classes inteiras de bugs (use-after-free, data races, double free).
- Alguns enfatizam que verificações de limites são apenas uma pequena parte das garantias de segurança do Rust.
- Zig é discutido como “C melhorado”, mas sem as garantias de memória em tempo de compilação do Rust; modos de build seguro vs rápido e UB por verificações desativadas são preocupações.
- Outros apontam fatores não técnicos: a maturidade do ecossistema do Rust, apoio da indústria e adoção, em contraste com a relativa juventude do Zig.
Suporte de Plataforma e Backend
- Discussão sobre a cobertura de plataforma do Rust: backends LLVM vs GCC.
- O LLVM não oferece suporte a várias arquiteturas legadas/obscuras que o GCC suporta (por exemplo, Alpha, Itanium, PA‑RISC, SuperH); o backend GCC do Rust é mencionado como uma resposta parcial a isso.
Comparação com o Wild Linker
- Wild é descrito como outro linker ELF muito rápido, focado principalmente em linking incremental (embora, segundo relatos, ainda não suporte linking incremental de fato).
- Os benchmarks são considerados próximos; o Wild costuma ser mais rápido, mas ambos “trocam golpes” e estão muito à frente dos linkers tradicionais.
Bootstrapping de Distribuições Linux e Segurança da Cadeia de Suprimentos
- Um co-mantenedor de uma distribuição altamente reproduzível, bootstrapada do zero, usava mold2 (C/C++) como linker inicial de bootstrap e está insatisfeito com a reescrita em Rust.
- O modelo deles: bootstrap de tudo a partir de código de máquina mínimo, passando por compiladores C pequenos → GCC/LLVM → Rust, com builds estritamente sem binários, determinísticos e herméticos.
- Rust é descrito como extremamente caro de bootstrapar (grande grafo de dependências: Python, Perl, OpenSSL, LLVM, etc.), então ter mold em Rust o coloca tarde demais na cadeia para acelerar o próprio Rust.
- Outros propõem soluções: usar binários pré-compilados, cache, compiladores Rust stage0/stage2, ou continuar usando mold2; o mantenedor da distribuição rejeita essas opções por enfraquecerem o modelo de ameaça (não confiar em binários anteriores).
Manutenção de Código Aberto e Compatibilidade Retroativa
- Tensão entre expectativas de downstream e liberdade de upstream:
- Alguns argumentam que mold “desresolveu” uma necessidade real dos usuários; queriam mais consulta e mudanças mais lentas.
- Outros enfatizam que os mantenedores não devem garantias além da licença, e que usuários podem fazer fork se dependem de comportamentos de nicho.
- Há debate sobre se grandes reescritas deveriam ser projetos novos em vez de grandes incrementos de versão.
Ferramentas de Bootstrap do Rust
- mrustc (compilador de bootstrap de Rust para C) é citado como uma forma de alcançar um Rust moderno o suficiente para então se auto-hospedar.
- Alguns se mostram intrigados com a “obsessão” por bootstrap completo; outros apontam o rápido aumento dos ataques à cadeia de suprimentos como justificativa.
Outras Observações
- Reações positivas à velocidade da reescrita e ao status consolidado do Rust como linguagem de sistemas.
- Observa-se que o Cargo.lock do mold3 é relativamente pequeno em comparação com alguns projetos em Rust, com preocupação de que o uso pesado de crates possa enfraquecer as alegações de segurança.