Lançamento do vinculador Mold 1.1, desenvolvido por LLVM lld

Foi publicada uma versão do vinculador Mold, que pode ser usado como um substituto mais rápido e transparente para o vinculador GNU em sistemas Linux. O projeto é desenvolvido pelo autor do vinculador LLVM lld. Uma característica importante do Mold é a velocidade muito alta de vinculação de arquivos de objeto, visivelmente à frente dos vinculadores GNU gold e LLVM lld (a vinculação no Mold é executada a uma velocidade apenas metade da velocidade de simplesmente copiar arquivos com o utilitário cp). O código é escrito em C++ (C++20) e distribuído sob a licença AGPLv3.

Na nova versão:

  • Adicionado suporte para otimização na fase de vinculação (LTO, Link Time Optimization). As otimizações LTO diferem por levar em consideração o estado de todos os arquivos envolvidos no processo de construção, enquanto os modos de otimização tradicionais otimizam cada arquivo separadamente e não levam em consideração as condições de chamada de funções definidas em outros arquivos. Enquanto anteriormente, quando os arquivos de código intermediário (IR) GCC ou LLVM eram encontrados, os linkers ld.bfd ou ld.lld correspondentes eram chamados, agora o Mold processa arquivos IR de forma independente e usa a API Linker Plugin, também usada no GNU ld e GNU ligantes de ouro. Quando ativado, o LTO é apenas um pouco mais rápido do que outros vinculadores porque a maior parte do tempo é gasto na execução de otimizações de código em vez de vinculação.
  • Adicionado suporte para arquitetura RISC-V (RV64) nas plataformas host e de destino.
  • Adicionada a opção “--emit-relocs” para permitir a cópia de seções de realocação de arquivos de entrada para arquivos de saída para aplicação subsequente de otimizações no estágio pós-vinculação.
  • Adicionada a opção “--shuffle-sections” para randomizar a ordem das seções antes de fixar seus endereços no espaço de endereço virtual.
  • Adicionadas opções “--print-dependencies” e “--print-dependencies=full” para gerar em formato CSV informações sobre dependências entre arquivos de entrada, que, por exemplo, podem ser usadas para analisar os motivos da conexão ao vincular determinados arquivos objeto ou ao realizar trabalhos de minificação de dependências entre arquivos.
  • Adicionadas opções "--warn-once" e "--warn-textrel".
  • Dependência removida de libxxhash.

Fonte: opennet.ru

Adicionar um comentário