Udgivelsen af linker Mold 3.0, udviklet af LLVM lld, er blevet lanceret.

Udgivelsen af linker Mold 3.0 er offentliggjort, som kan anvendes som en hurtigere, gennemsigtig erstatning for GNU linker på Linux-systemer. Projektet ledes af Rui Ueyama, skaberen af LLVM lld linkeren. En nøglefunktion ved Mold er den ekstremt høje hastighed til at sammenkæde objektfiler, der tydeligt overgår GNU gold og LLVM lld linkerne (sammenkoblingen i Mold udføres med en hastighed, der kun er dobbelt så langsom som simpel filkopiering med cp-værktøjet). Koden er skrevet i Rust og distribueres under MIT licensen.

Reduktion af tiden til sammenkobling muliggør en betydelig forbedring af udviklingskomforten ved store projekter ved at forkorte ventetiden under oprettelsen af eksekverbare filer til debugging og test af ændringer. Motivet til at skabe Mold var irritation over nødvendigheden af at vente på, at sammenkoblingen blev afsluttet efter hver ændring i koden, samt den lave effektivitet af eksisterende linkere på multicore-systemer og ønsket om at afprøve en helt anden sammenkoblingsarkitektur uden at ty til unødigt komplicerede modeller som inkrementel sammenkobling.

Den høje ydeevne ved sammenkoblingen af en eksekverbar fil fra et stort antal forberedte objektfiler i Mold opnås ved at bruge hurtigere algoritmer, aktivt parallelisere operationer mellem tilgængelige CPU-kerner og anvende mere effektive datastrukturer. For eksempel implementeres der i Mold en teknik til at udføre intensive beregninger samtidig med filkopiering, forudindlæsning af objektfiler i hukommelsen, brug af hurtige hash-tabeller til symbolopløsning, scanning af flytningstabeller i en separat tråd og deduplikering af gentagne sektioner i forskellige filer.

Mold 3.0-grenen er bemærkelsesværdig ved at genkode sin kodestamme fra C++ (C++20) til Rust-sproget. Mold 3.0 kan anvendes som en gennemsigtig erstatning for Mold 2.42.1, den seneste version skrevet i C++, og understøtter alle tidligere tilgængelige muligheder og målarkitekturer. Overgangen til Rust har gjort det muligt at sikre projektet mod potentielle problemer ved behandling af beskadigede objektfiler - i situationer, hvor C++-versionen lukkede ned på grund af adgang til hukommelsesområder uden for bufferen, stopper Rust-versionen arbejdet på grænsekontrolstadiet. Ydelsen på Rust-implementeringen er på niveau med C++-versionen.

Udover migreringen til Rust var en af de vigtigste mål ved udviklingen af version 3.0 at øge kompatibiliteten med GNU ld og forberede projektet til eventuel brug som standard linker i Linux-distributioner. Byggesystemet er blevet ændret fra CMake til Cargo, og testsystemet fra ctest til cargo test. OneTBB-biblioteket er blevet fjernet fra afhængighederne.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster