Frigjøring av Mold 1.1-linker, utviklet av LLVM lld

En utgivelse av Mold-linkeren er publisert, som kan brukes som en raskere, gjennomsiktig erstatning for GNU-linkeren på Linux-systemer. Prosjektet er utviklet av forfatteren av LLVM lld-linkeren. En nøkkelfunksjon ved Mold er den svært høye hastigheten på kobling av objektfiler, merkbart foran GNU gold og LLVM lld-linkerne (kobling i Mold utføres med en hastighet som bare er halvparten så rask som å kopiere filer med cp-verktøyet). Koden er skrevet i C++ (C++20) og distribuert under AGPLv3-lisensen.

I den nye versjonen:

  • Lagt til støtte for optimalisering på koblingsstadiet (LTO, Link Time Optimization). LTO-optimaliseringer er forskjellige ved å ta hensyn til tilstanden til alle filene som er involvert i byggeprosessen, mens tradisjonelle optimaliseringsmoduser optimaliserer hver fil separat og ikke tar hensyn til betingelsene for å kalle funksjoner definert i andre filer. Mens tidligere, når GCC- eller LLVM-mellomkodefiler (IR) ble funnet, ble de tilsvarende ld.bfd- eller ld.lld-linkerne kalt, behandler Mould nå IR-filer uavhengig og bruker Linker Plugin API, også brukt i GNU ld og GNU gull linker. Når den er aktivert, er LTO bare marginalt raskere enn andre linkere fordi mesteparten av tiden brukes på å utføre kodeoptimaliseringer i stedet for å koble.
  • Lagt til støtte for RISC-V (RV64)-arkitektur på verts- og målplattformene.
  • Lagt til "--emit-relocs"-alternativet for å muliggjøre kopiering av flytteseksjoner fra inngangsfiler til utdatafiler for påfølgende bruk av optimaliseringer i post-linking-stadiet.
  • Lagt til alternativet "--shuffle-sections" for å randomisere rekkefølgen på seksjoner før de fikser adressene deres i det virtuelle adresserommet.
  • Lagt til alternativer "--print-dependencies" og "--print-dependencies=full" for å sende ut i CSV-format informasjon om avhengigheter mellom inndatafiler, som for eksempel kan brukes til å analysere årsakene til tilkoblingen ved kobling av bestemte objektfiler eller når du utfører minifiseringsarbeidsavhengigheter mellom filer.
  • Lagt til "--warn-once" og "--warn-textrel" alternativer.
  • Fjernet avhengighet av libxxhash.

Kilde: opennet.ru

Legg til en kommentar