Primeira versión estable do Mold builder desenvolvido por LLVM lld

Rui Ueyama, autor do enlazador LLVM lld e do compilador chibicc, presentou a primeira versión estable do novo enlazador Molde de alto rendemento, que é notablemente máis rápido que os enlazadores GNU gold e LLVM lld na velocidade de vinculación de ficheiros obxecto. O proxecto considérase listo para a implementación de produción e pódese usar como un substituto máis rápido e transparente para o enlazador GNU nos sistemas Linux. Os plans para a próxima versión importante inclúen completar o soporte para a plataforma macOS, despois de que comezará a traballar na adaptación de Mold para Windows.

Mold está escrito en C++ (C++20) e ten licenza AGPLv3, que é compatible con GPLv3, pero non é compatible con GPLv2, xa que require cambios abertos ao desenvolver servizos de rede. Esta elección explícase polo desexo de obter financiamento para o desenvolvemento: o autor está disposto a vender os dereitos do código para a re-licenza baixo unha licenza permisiva, como MIT, ou proporcionar unha licenza comercial separada para aqueles que non estean satisfeitos coa AGPL.

Mold admite todas as funcións do enlazador GNU e ten un rendemento moi alto: a ligazón realízase a unha velocidade só a metade que copiar ficheiros coa utilidade cp. Por exemplo, ao crear Chrome 96 (tamaño de código 1.89 GB), leva 8 segundos enlazar ficheiros executables con información de depuración nun ordenador de 53 núcleos usando GNU gold, LLVM lld - 11.7 segundos e Mold só 2.2 segundos (26 veces máis rápido que GNU gold). Ao ligar Clang 13 (3.18 GB), leva 64 segundos en GNU gold, 5.8 segundos en LLVM lld e 2.9 segundos en Mold. Ao crear Firefox 89 (1.64 GB), leva 32.9 segundos en GNU gold, 6.8 segundos en LLVM lld e 1.4 segundos en Mold.

Primeira versión estable do Mold builder desenvolvido por LLVM lld

Reducir o tempo de construción pode mellorar significativamente a comodidade de desenvolver proxectos grandes ao reducir a espera no proceso de xeración de ficheiros executables ao depurar e probar os cambios. A motivación para crear Mold foi a frustración de ter que esperar a que se complete a ligazón despois de cada cambio de código, o mal rendemento dos enlazadores existentes en sistemas multinúcleo e o desexo de probar unha arquitectura de enlace fundamentalmente diferente sen recorrer a modelos demasiado complicados como como enlace incremental.

O alto rendemento de ligar un ficheiro executable desde un gran número de ficheiros de obxectos preparados polo compilador en Mold conséguese mediante o uso de algoritmos máis rápidos, a paralelización activa das operacións entre os núcleos de CPU dispoñibles e o uso de estruturas de datos máis eficientes. Por exemplo, Mold implementa técnicas para realizar cálculos intensivos ao copiar ficheiros, cargar previamente ficheiros de obxectos na memoria, usar táboas hash rápidas para a resolución de caracteres, dixitalizar táboas de desprazamento nun fío separado e deduplicar seccións combinadas que se repiten en diferentes ficheiros.

Fonte: opennet.ru

Engadir un comentario