Lëshimi i kompozitorit Mold 3.0, i zhvilluar nga zhvilluesi LLVM lld

Është publikuar versioni 3.0 i lidhësit Mold, i cili mund të përdoret si një zëvendësim më të shpejtë dhe transparent për GNU linker në sistemet Linux. Projekti është duke u zhvilluar nga Rui Ueyama, krijuesi i lidhësit LLVM lld. Karakteristika kyçe e Mold është një shpejtësi shumë e lartë e lidhjes së skedarëve objekt, e cila tejkalon dukshëm lidhësit GNU gold dhe LLVM lld (lidhi në Mold bëhet me shpejtësi, vetëm dy herë më ngadalë se thjesht kopjimi i skedarëve me utilitarin cp). Kodi është shkruar në gjuhën Rust dhe shpërndahet nën licencën MIT.

Reduktimi i kohës së lidhjes lejon një rritje të dukshme të lehtësisë së zhvillimit të projekteve të mëdha duke reduktuar pritjet gjatë krijimit të skedarëve ekzekutivë gjatë debugimit dhe testimit të ndryshimeve. Motivimi për krijimin e Mold-it lindi nga irritimi për pritjen e përfundimit të lidhjes pas çdo ndryshimi në kod, si dhe nga efikasiteti i ulët i lidhësve ekzistues në sisteme shumëbërthamëshe dhe dëshira për të provuar një arkitekturë tërësisht të re lidhjeje, pa resortuar në modele tepër komplekse, siç është lidhja inkrementale.

Performanca e lartë e lidhjes së skedarëve ekzekutivë nga një numër i madh skedarësh objekt të përgatitur nga kompileri në Mold arrihet duke përdorur algoritme më të shpejtë, duke zhvilluar operacione paralelel mes bërthamave CPU të disponueshme dhe duke përdorur struktura të dhënash më efikase. Për shembull, në Mold është implementuar teknika e ekzekutimit të llogaritjeve intensive njëkohësisht me kopjimin e skedarëve, ngarkimi parashikues i skedarëve objekt në memorie, përdorimi i tabelave të shpejta të hash-it për zgjidhjen e simboleve, skanimi i tabelave të lëvizjeve në një proces të veçantë dhe deduplikimi i seksioneve të përsëritura në skedarë të ndryshëm.

Dega Mold 3.0 është e veçantë për rishkrimin e bazës së kodit nga C++ (C++20) në gjuhën Rust. Mold 3.0 mund të përdoret si një zëvendësim transparent për Mold 2.42.1, lëshimi më i fundit në gjuhën C++, dhe mbështet të gjitha mundësitë dhe arkitekturën e synuar që ishin në dispozicion më parë. Kalimi në Rust siguroi projektin nga problemet e mundshme gjatë trajtimit të skedarëve objekt të dëmtuar — në situatat kur versioni në C++ përfundonte me gabim për shkak të qasjes në zona memorjeje jashtë buferit, varianti në Rust ndalon punën në fazën e verifikimit të kufijve. Performanca e implementimit në Rust është në të njëjtin nivel me versionin në C++.

Përveç migrimit në Rust, qëllimi kryesor gjatë zhvillimit të degës 3.0 ishte të rritej kompatibiliteti me GNU ld dhe të përgatitej projekti për t'u përdorur si lidhës i paracaktuar në shpërndarjet Linux. Sistemi i ndërtimit është zëvendësuar nga CMake në Cargo, ndërsa sistemi i testeve nga ctest në cargo test. Biblioteka oneTBB është përjashtuar nga varësitë.

Burimi: opennet.ru

Blini hosting të besueshëm për faqe interneti me mbrojtje nga DDoS, serverë VPS VDS 🔥 Blini hosting të besueshëm për faqe interneti me mbrojtje nga DDoS, serverë VPS VDS | ProHoster