Mold 1.1 უკვე გამოვიდა, იცოდეთ ახალი ამბები ამ თანამედროვე Linker-ის შესახებ, რომელიც აღემატება GNU ოქროს და LLVM-ს

რამდენიმე დღის წინ გამოცხადდა თანამედროვე Linker Mold 1.1-ის ახალი ვერსიის გამოშვება, რომელიც შეიძლება გამოყენებულ იქნას როგორც უფრო სწრაფი გამჭვირვალე ჩანაცვლება Linux სისტემებზე GNU ლინკერისთვის.

ამ ახალ ვერსიაში mold 1.1 არის ვერსია, რომელიც შეიცავს ახალ ფუნქციებს, შეცდომების გამოსწორებას და მუშაობის გაუმჯობესებას.

Mold-ის შესახებ

Mold მხარს უჭერს GNU ლინკერის ყველა მახასიათებელს და მას აქვს ძალიან მაღალი შესრულება, რადგან მის მიერ გაკეთებული ბმულები მხოლოდ ორჯერ უფრო ნელია, ვიდრე უბრალოდ ფაილების კოპირება cp უტილიტაში.

ამ გზით შედგენის დროის შემცირება მნიშვნელოვნად აუმჯობესებს დიდი პროექტების შემუშავების მოხერხებულობას ლოდინის დროის შემცირებით შესრულებადი ფაილის გენერირების პროცესში შეცდომების გამართვისა და ცვლილებების ტესტირებისას.

Mold-ის შექმნის მოტივაცია იყო გაღიზიანება იმის გამო, რომ უნდა დაველოდოთ ბმულის დასრულებას ყოველი კოდის ცვლილების შემდეგ, ასევე არსებული ლინკერების დაბალი ეფექტურობა მრავალბირთვიან სისტემებში და ფუნდამენტურად განსხვავებული ბმული არქიტექტურის გამოცდის სურვილი ზედმეტად რთული მოდელების გამოყენების გარეშე, როგორიცაა დამატებითი ბმული.

Mold-ში შემდგენლის მიერ მომზადებული ობიექტების ფაილებიდან შემდგენელი ფაილის დაკავშირების მაღალი შესრულება მიიღწევა უფრო სწრაფი ალგორითმების გამოყენებით, ოპერაციების აქტიური პარალელიზებით CPU-ს არსებულ ბირთვებს შორის და მონაცემთა სტრუქტურების უფრო ეფექტური გამოყენების გზით.

მაგალითად Mold ახორციელებს ტექნიკას ინტენსიური გამოთვლების ერთდროულად შესასრულებლად ფაილის კოპირებით, ობიექტების ფაილების პროაქტიულად ჩატვირთვით მეხსიერებაში, სწრაფი ჰეშის ცხრილების გამოყენებით სიმბოლოების გადაჭრისას, გადატანის ცხრილების სკანირება ცალკე ნაკადში და სექციების დუბლიკატი რომლებიც მეორდება სხვადასხვა ფაილში.

Mold 1.1-ის ძირითადი სიახლეები

Mold 1.1-ის ამ ახალ ვერსიაში, რომელიც წარმოდგენილია, ხაზგასმულია, რომ ბმულის ეტაპის ოპტიმიზაციის მხარდაჭერა (LTO, Link Time Optimization).

LTO ოპტიმიზაცია განსხვავდება აგების პროცესში ჩართული ყველა ფაილის მდგომარეობის გათვალისწინებით, ხოლო ტრადიციული ოპტიმიზაციის რეჟიმები ოპტიმიზაციას უკეთებს თითოეულ ფაილს ინდივიდუალურად და არ ითვალისწინებს სხვა ფაილებში განსაზღვრულ ფუნქციების გამოძახების პირობებს.

ადრე, როდესაც ხვდებოდნენ GCC ან LLVM შუალედური კოდის (IR) ფაილებს, გამოიყენებოდა შესაბამისი ld.bfd ან ld.lld ლინკერები, მაგრამ ახლა Mold ამუშავებს IR ფაილებს დამოუკიდებლად და იყენებს Linker plugin API-ს, რომელიც ასევე გამოიყენება GNU ld-ში და. GNU ოქროს ლინკერები. სიჩქარე, როდესაც LTO ჩართულია, მხოლოდ ოდნავ უფრო სწრაფია, ვიდრე სხვა ლინკერები, რადგან დროის უმეტესი ნაწილი იხარჯება კოდის ოპტიმიზაციაზე და არა ბმულზე.

ხაზგასმულია ისიც, რომ პარამეტრები დამატებულია „–print-dependencies“ და „–print-dependencies=full“ pCSV ფორმატში ინფორმაციის გენერირება დამოკიდებულებების შესახებ შეყვანის ფაილებს შორის, რომლებიც, მაგალითად, შეიძლება გამოყენებულ იქნას კავშირის მიზეზების გასაანალიზებლად, როდესაც აკავშირებს გარკვეულ ობიექტურ ფაილებს ან მუშაობს ფაილებს შორის დამოკიდებულების შესამცირებლად.

კიდევ ერთი ცვლილება, რომელიც გამოირჩევა ახალი ვერსიიდან, არის ის RISC-V არქიტექტურის მხარდაჭერა (RV64) მასპინძელ და სამიზნე პლატფორმებზე.

გარდა ამისა, ჩვენ შეგვიძლია ისიც ვიპოვოთ დაამატა „–emit-relocs“ ოფცია მისამართის გადატანის სექციების კოპირების გასააქტიურებლად შეყვანის ფაილებიდან საბოლოო ფაილებამდე შემდგომი ოპტიმიზაციისთვის, რომელიც გამოყენებული იქნება ბმულის შემდგომ ეტაპზე.

სხვა ცვლილებებიდან, რომლებიც გამოირჩევა:

  • დამატებულია „–shuffle-sections“ ვარიანტი სექციების თანმიმდევრობის რანდომიზაციისთვის, სანამ მათ მისამართებს დააფიქსირებთ ვირტუალურ მისამართთა სივრცეში.
  • დამატებულია „–warn-once“ და „–warn-textrel“ პარამეტრები.
  • ამოღებულია დამოკიდებულება libxxhash-ზე.

საბოლოოდ თუ გაინტერესებთ ამის შესახებ მეტი იცოდეთ, დეტალების შემოწმება შეგიძლიათ აქ შემდეგი ბმული.

როგორ დავაყენოთ Mould?

მათთვის, ვინც დაინტერესებულია Mold-თან მუშაობაში, მათ შეუძლიათ მიიღონ პროგრამა საწყისი კოდის ჩამოტვირთვისა და შედგენით. ამისათვის უბრალოდ გახსენით ტერმინალი და ჩაწერეთ შემდეგი:

git clone https://github.com/rui314/mold.git
cd mold
git checkout v1.1.1
make -j$(nproc) CXX=clang++
sudo make install

Mould-ის გამოყენების გასაგებად, შეგიძლიათ გაეცნოთ დოკუმენტაციას ამ ბმულზე.


სტატიის შინაარსი იცავს ჩვენს პრინციპებს სარედაქციო ეთიკა. შეცდომის შესატყობინებლად დააჭირეთ ღილაკს აქ.

იყავი პირველი კომენტარი

დატოვე კომენტარი

თქვენი ელფოსტის მისამართი გამოქვეყნებული არ იყო. აუცილებელი ველები აღნიშნულია *

*

*

  1. მონაცემებზე პასუხისმგებელი: მიგელ ანგელ გატონი
  2. მონაცემთა მიზანი: სპამის კონტროლი, კომენტარების მართვა.
  3. ლეგიტიმაცია: თქვენი თანხმობა
  4. მონაცემთა კომუნიკაცია: მონაცემები არ გადაეცემა მესამე პირებს, გარდა სამართლებრივი ვალდებულებისა.
  5. მონაცემთა შენახვა: მონაცემთა ბაზა, რომელსაც უმასპინძლა Occentus Networks (EU)
  6. უფლებები: ნებისმიერ დროს შეგიძლიათ შეზღუდოთ, აღადგინოთ და წაშალოთ თქვენი ინფორმაცია.