HeadlinesBriefing HeadlinesBriefing.com

GitHub headstart acelera Rust 54%

Hacker News •
×

Iniciar crates dependentes antes que suas dependências terminem a verificação de tipos. Cada crate espera que os crates dos quais depende sejam totalmente verificados, incluindo corpos de funções, antes de começar. Ele não precisa desses corpos para verificar seus próprios tipos. Ele compila contra a interface da dependência, os metadados em seu arquivo .rmeta. Headstart faz o rustc escrever um arquivo de metadados precoce assim que a interface é verificada, e faz o cargo iniciar os dependentes com base nele. Os corpos de cada crate são então verificados enquanto os crates downstream já estão compilando.

cargo check: dependentes executam até a conclusão com metadados precoces. cargo build: dependentes fazem toda sua análise com metadados precoces, depois aguardam os metadados completos da dependência antes de gerar código. Enquanto aguardam, eles devolvem seu slot de trabalho. Se um corpo tiver um erro, a compilação ainda falha com esse erro, com os mesmos diagnósticos e status de saída de hoje; apenas as linhas de progresso e a ordem entre crates das mensagens JSON podem diferir.

Os custos são trabalho downstream que é descartado, erros relatados um pouco mais tarde e mais memória em uso de uma só vez (veja docs/design.md). No frontend padrão do rustc, headstart torna compilações limpas de 13 projetos reais (rust-analyzer, zed, bevy, lemmy, polars e outros) até 54% mais rápidas para cargo check, e até 42% para cargo build. Nenhum é mais lento. Com o frontend paralelo (-Zthreads=8), que cobre parte do mesmo terreno, adiciona até 25%. Esses são números de 16 núcleos.

Fonte: Hacker News · Resumido por HeadlinesBriefing