LLVM 17.0 უკვე გამოვიდა და ეს მისი სიახლეებია

LLVM ლოგო

LLVM არის ჩარჩო კომპილატორების შემუშავებისთვის, ასევე ახალი პროგრამირების ენების შესაქმნელად და არსებული ენების გასაუმჯობესებლად.

განვითარების ექვსი თვის შემდეგ წარმოდგენილია LLVM 17.0-ის ახალი ვერსია, რომელშიც სხვადასხვა გაუმჯობესება, ცვლილებები, შეცდომების გამოსწორება და, უპირველეს ყოვლისა, სხვადასხვა მნიშვნელოვანი ასპექტები განხორციელდა Clang 17.0-ში.

მათთვის, ვინც არ იცნობს LLVM-ს, უნდა იცოდეთ, რომ ეს არის GCC თავსებადი შემდგენელი (შემდგენელები, ოპტიმიზატორები და კოდის გენერატორები), რომელიც აკომპლექტებს პროგრამებს RISC-ის მსგავსი ვირტუალური ინსტრუქციის შუალედურ ბიტკოდში (დაბალი დონის ვირტუალური მანქანა მრავალდონიანი ოპტიმიზაციის სისტემით).

გენერირებული ფსევდოკოდი შეიძლება გარდაიქმნას JIT შემდგენლის მიერ მანქანის ინსტრუქციებად მხოლოდ პროგრამის შესრულების დროს.

LLVM 17.0 ძირითადი ახალი მახასიათებლები

LLVM 17.0-ის ამ ახალ ვერსიაში, რომელიც წარმოდგენილია, გასათვალისწინებელია სხვადასხვა შესაბამისი ასპექტი, რომელთაგან, მაგალითად, X86 backend-ის გაუმჯობესება, კარგად დაამატაo გაფართოებების მხარდაჭერა ინსტრუქციის ნაკრების არქიტექტურა ISA SHA512, ISA SM3, ISA SM4 და ISA AVX-VNNI-INT16.

გარდა ამისა, იგი ასევე ხაზს უსვამს გაუმჯობესება backend შესაძლებლობები არქიტექტურისთვის RISC-V რომლებიც მნიშვნელოვნად გაფართოვდა მას შემდეგ დაამატა მხარდაჭერა sifive-x280 პროცესორისთვის.

კიდევ ერთი ცვლილება, რომელიც ჩვენ შეგვიძლია ვიპოვოთ არის განხორციელებული მხარდაჭერა XTH პროცესორის გაფართოებებისთვის*, ასევე თავსებადობა გაფართოებებთან LSX, LASX, LVZ და LBT ISA LoongArch არქიტექტურის უკანა მხარეს.

გაუმჯობესებული backends AArch64, ARM, WebAssembly, MIPS, PowerPC, AMDGPU არქიტექტურებისთვის, გაფართოებული LLD ლინკერის შესაძლებლობები და დაემატა ახალი "რეგისტრაციის ინფორმაციის" ბრძანება LLDB debugger-ზე, რათა აჩვენოს ყველა ცნობილი ინფორმაცია ჩანაწერის შესახებ.

Clang 17.0-ის გაუმჯობესებებთან დაკავშირებით, ხაზგასმულია, რომ დანერგილია მომავალი C-სტანდარტის C2x-ში განსაზღვრული ფუნქციები, როგორიცაა bool, static_assert, aligns, alignof და thread_local საკვანძო სიტყვები, ისევე როგორც ცარიელი ფრჩხილების მითითების შესაძლებლობა «{} » ნულოვანი მნიშვნელობების ინიციალიზაციისთვის.

Კოდიo C უზრუნველყოფს "goto" გამოხატვის გადამისამართების შესაძლებლობას "asm" ბლოკებში არაპირდაპირ შერჩეული ტეგების მეშვეობით, დაემატა მხარდაჭერა C გაფართოებისთვის, რომელიც საშუალებას იძლევა გამოიყენოს ტიპი გამოხატვის ნაცვლად, როგორც პირველი ოპერანდი "_Generic", გარდა იმისა, რომ C ენაში მუდმივი გამონათქვამები საშუალებას აძლევს გამოიყენონ სტრუქტურები, გაერთიანებები. და მასივები გამოცხადებული "const" ატრიბუტით.

რაც შეეხება C++20 სტანდარტთან დაკავშირებულ გაუმჯობესებებს, აღნიშნულია, რომ ახლა ყველა პლატფორმაზე Windows-ის გარდა, არის სრული მხარდაჭერა Coroutines-ისთვის, გარდა ამისა, დანერგილია დამატებითი მოთხოვნები მუდმივი გამოხატვის შედარების ოპერაციებისთვის.

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

როგორც C++23 სტანდარტთან დაკავშირებული გაუმჯობესებები , აღნიშნულია, რომ ISO-ს მიერ დამტკიცების დასკვნით ეტაპზეა, ვინაიდან შეიცვალა საბოლოო დაბრუნების ტიპის ფარგლები ლამბდა ფუნქციებში ჯერ კაუჭებს შევხედოთ და შემდეგ მიმდებარე ტექსტს.

Of სხვა ცვლილებები რომ გამოირჩევა:

  • დამატებულია მრავალგანზომილებიანი მასივების გამოყენებით განსაზღვრის შესაძლებლობა
  • C++ აპლიკაციების შედგენისას "-O0" ოპტიმიზაციის რეჟიმის გამოყენებით, გაუმჯობესდა ზარებისთვის კოდის გენერირება.
  • დამატებულია NO_COLOR გარემოს ცვლადის მხარდაჭერა გამომავალი ფერის გამორთვისთვის.
  • მნიშვნელოვნად გაფართოვდა სტატიკური ანალიზი და დიაგნოსტიკური ხელსაწყოები, მაგალითად, დაემატა ახალი ხელმოწერილი მთელი რიცხვების გადადინების შემოწმება, ლამბდა შაბლონის კორექტირება, constexpr გამონათქვამები, ნულური მაჩვენებლის შედარება, არაინიციალიზებული სტრუქტურების გამოყენება და ა.შ.
  • Libc++ ბიბლიოთეკა აგრძელებს C++20 და C++23 სტანდარტების შესაძლებლობების მხარდაჭერას და ასევე დაიწყო მუშაობა C++26 სპეციფიკაციის მხარდაჭერისთვის.
  • დამატებულია მხარდაჭერა გამოთქმისთვის "მოითხოვს cplusplus23" სათაურის ფაილებსა და მოდულებს შორის კავშირების აღწერილობაში.

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


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

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

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

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

*

*

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