Lanseringen av kompilatorn Mold 3.0, utvecklad av utvecklaren LLVM lld.

Mold 3.0 har släppts, en snabbare transparent ersättning för GNU linker på Linux-system. Projektet utvecklas av Rui Ueyama, skaparen av LLVM lld-linkern. En nyckelfunktion i Mold är den mycket höga hastigheten för att koppla objektfiler, vilket överträffar GNU gold och LLVM lld (kopplingen i Mold sker i en hastighet som bara är dubbelt så långsam som en enkel filkopiering med cp-verktyget). Koden är skriven i Rust och distribueras under MIT-licensen.

Genom att minska tiden för länkning kan man avsevärt öka bekvämligheten i utvecklingen av stora projekt genom att minska väntan under skapandet av körbara filer vid felsökning och testning av ändringar. Motivet till att skapa Mold var irritation över att behöva vänta på att länkningen skulle slutföras efter varje kodändring, samt den låga effektiviteten hos befintliga länkare på flertrådade system och en önskan att pröva en helt annan länkarkitektur utan att använda sig av överdrivet komplicerade modeller som incrementell länkning.

Den höga prestandan för länkning av ett körbart program från många förberedda objektfiler i Mold uppnås genom att använda snabbare algoritmer, aktivt parallellisera operationer mellan tillgängliga CPU-kärnor och tillämpa mer effektiva datatyper. Till exempel tillämpas i Mold en teknik för att utföra beräkningstunga operationer samtidigt som filer kopieras, förhandsladdning av objektfiler till minnet, användning av snabba hash-tabeller vid symbolupplösning, skanning av förflyttningstabeller i en separat tråd och deduplicering av upprepande sammanslagna sektioner i olika filer.

Mold 3.0-grenen är anmärkningsvärd för omskrivningen av kodbasen från C++ (C++20) till språket Rust. Mold 3.0 kan användas som en transparent ersättning för Mold 2.42.1, den senaste versionen på C++, och stöder alla tidigare tillgängliga alternativ och målarkitekturer. Övergången till Rust har gjort projektet mer säkert mot potentiella problem vid hantering av skadade objektfiler — i situationer där C++-versionen kraschade på grund av åtkomst till minnesområden utanför bufferten, stoppar Rust-versionen arbetet vid granskning av gränser. Prestandan på Rust-implementeringen ligger på samma nivå som C++-versionen.

Utöver migrationen till Rust var ett huvudmål vid utvecklingen av version 3.0 att öka kompatibiliteten med GNU ld och förbereda projektet för att bli den föreslagna länkaren som standard i Linux-distributioner. Byggsystemet har bytts ut från CMake till Cargo, och testsystemet från ctest till cargo test. OneTBB-biblioteket har tagits bort som beroende.

Källa: opennet.ru

Köp pålitlig webbhotell med DDoS-skydd, VPS VDS-servrar 🔥 Köp pålitlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster