Frisättning av Mold 1.1-linker, utvecklad av LLVM lld

En release av Mold-linkern har publicerats, som kan användas som en snabbare, transparent ersättning för GNU-linkern på Linux-system. Projektet är utvecklat av författaren till LLVM lld-linkern. En nyckelfunktion hos Mould är den mycket höga hastigheten för att länka objektfiler, märkbart före GNU gold och LLVM lld-länkarna (länkning i Mould utförs med en hastighet som bara är hälften så snabb som att bara kopiera filer med cp-verktyget). Koden är skriven i C++ (C++20) och distribueras under AGPLv3-licensen.

I den nya versionen:

  • Lade till stöd för optimering i länkningsstadiet (LTO, Link Time Optimization). LTO-optimeringar skiljer sig åt genom att ta hänsyn till tillståndet för alla filer som är involverade i byggprocessen, medan traditionella optimeringslägen optimerar varje fil separat och inte tar hänsyn till villkoren för att anropa funktioner definierade i andra filer. Medan tidigare, när GCC- eller LLVM-mellankodfiler (IR) hittades, anropades motsvarande ld.bfd- eller ld.lld-länkar, bearbetar nu Mould IR-filer oberoende och använder Linker Plugin API, som också används i GNU ld och GNU guld länkar. När den är aktiverad är LTO bara marginellt snabbare än andra länkar eftersom den mesta tiden går åt till att utföra kodoptimeringar istället för att länka.
  • Tillagt stöd för RISC-V (RV64)-arkitektur på värd- och målplattformarna.
  • Lade till alternativet "--emit-relocs" för att möjliggöra kopiering av omlokaliseringssektioner från indatafiler till utdatafiler för efterföljande tillämpning av optimeringar vid efterlänkningsstadiet.
  • Lade till alternativet "--shuffle-sektioner" för att slumpvisa ordningen på sektioner innan de fixar deras adresser i det virtuella adressutrymmet.
  • Lade till alternativ "--print-dependencies" och "--print-dependencies=full" för att mata ut i CSV-format information om beroenden mellan indatafiler, som till exempel kan användas för att analysera orsakerna till anslutningen vid länkning av vissa objektfiler eller när du utför minifieringsarbete beroenden mellan filer.
  • Lade till alternativen "--warn-once" och "--warn-textrel".
  • Borttaget beroende av libxxhash.

Källa: opennet.ru

Lägg en kommentar