Frigivelse af Mold 1.1-linker, udviklet af LLVM lld

En udgivelse af Mold-linkeren er blevet offentliggjort, som kan bruges som en hurtigere, gennemsigtig erstatning for GNU-linkeren på Linux-systemer. Projektet er udviklet af forfatteren af ​​LLVM lld-linkeren. En nøglefunktion ved Mold er den meget høje hastighed af sammenkædning af objektfiler, mærkbart foran GNU gold- og LLVM lld-linkerne (linkning i Mold udføres med en hastighed, der kun er halvt så hurtig som blot at kopiere filer med cp-værktøjet). Koden er skrevet i C++ (C++20) og distribueret under AGPLv3-licensen.

I den nye version:

  • Tilføjet understøttelse af optimering på linkningsstadiet (LTO, Link Time Optimization). LTO-optimeringer adskiller sig ved at tage højde for tilstanden for alle filer involveret i byggeprocessen, mens traditionelle optimeringstilstande optimerer hver fil separat og ikke tager højde for betingelserne for at kalde funktioner defineret i andre filer. Mens tidligere, da GCC- eller LLVM-mellemkode-filer (IR) blev fundet, blev de tilsvarende ld.bfd- eller ld.lld-linkere kaldt, behandler Mould nu IR-filer uafhængigt og bruger Linker Plugin API, der også bruges i GNU ld og GNU guld linkere. Når den er aktiveret, er LTO kun marginalt hurtigere end andre linkere, fordi det meste af tiden bruges på at udføre kodeoptimeringer i stedet for at linke.
  • Tilføjet understøttelse af RISC-V (RV64) arkitektur på værts- og målplatformene.
  • Tilføjet muligheden "--emit-relocs" for at muliggøre kopiering af flyttesektioner fra inputfiler til outputfiler for efterfølgende anvendelse af optimeringer på post-linking-stadiet.
  • Tilføjet muligheden "--shuffle-sections" for at randomisere rækkefølgen af ​​sektioner, før de fikserer deres adresser i det virtuelle adresserum.
  • Tilføjede muligheder "--print-dependencies" og "--print-dependencies=full" for at udlæse i CSV-format information om afhængigheder mellem inputfiler, som f.eks. kan bruges til at analysere årsagerne til forbindelse ved sammenkædning af bestemte objektfiler eller når du udfører minifikationsarbejde afhængigheder mellem filer.
  • Tilføjet "--warn-once" og "--warn-textrel" muligheder.
  • Fjernet afhængighed af libxxhash.

Kilde: opennet.ru

Tilføj en kommentar