Lanzamento do enlazador Mold 1.1, desenvolvido por LLVM lld

Publicouse unha versión do enlazador Mold, que se pode usar como un substituto máis rápido e transparente para o enlazador GNU nos sistemas Linux. O proxecto está desenvolvido polo autor do enlace LLVM lld. Unha característica clave de Mold é a moi alta velocidade de vinculación de ficheiros de obxectos, notablemente por diante dos enlazadores GNU gold e LLVM lld (a ligazón en Mold realízase a unha velocidade só a metade que copiar ficheiros coa utilidade cp). O código está escrito en C++ (C++20) e distribúese baixo a licenza AGPLv3.

Na nova versión:

  • Engadido soporte para a optimización na fase de ligazón (LTO, Link Time Optimization). As optimizacións LTO difiren ao ter en conta o estado de todos os ficheiros implicados no proceso de compilación, mentres que os modos de optimización tradicionais optimizan cada ficheiro por separado e non teñen en conta as condicións para chamar ás funcións definidas noutros ficheiros. Mentres que anteriormente, cando se atopaban ficheiros de código intermedio (IR) GCC ou LLVM, chamábase aos correspondentes enlazadores ld.bfd ou ld.lld, agora Mold procesa os ficheiros IR de forma independente e utiliza a API do complemento Linker, que tamén se usa en GNU ld e GNU. enlazadores de ouro. Cando está activado, o LTO só é lixeiramente máis rápido que outros enlazadores porque a maior parte do tempo pásase realizando optimizacións de código en lugar de enlazar.
  • Engadido soporte para a arquitectura RISC-V (RV64) nas plataformas host e destino.
  • Engadiuse a opción "--emit-relocs" para permitir a copia de seccións de reubicación dos ficheiros de entrada aos ficheiros de saída para a posterior aplicación de optimizacións na fase posterior á vinculación.
  • Engadida a opción "--shuffle-sections" para aleatorizar a orde das seccións antes de fixar os seus enderezos no espazo de enderezos virtuais.
  • Engadíronse as opcións "--print-dependencies" e "--print-dependencies=full" para emitir información en formato CSV sobre dependencias entre ficheiros de entrada, que, por exemplo, poden usarse para analizar os motivos da conexión ao ligar determinados ficheiros de obxectos. ou cando se realizan traballos de minificación dependencias entre ficheiros.
  • Engadíronse as opcións "--warn-once" e "--warn-textrel".
  • Eliminouse a dependencia de libxxhash.

Fonte: opennet.ru

Engadir un comentario