LLVM нь хөрвүүлэгчийг хөгжүүлэх, шинэ програмчлалын хэлийг бий болгох, одоо байгаа хэлийг сайжруулахад туслах хүрээ юм.
Зургаан сар хөгжүүлсний дараа LLVM 17.0-ийн шинэ хувилбарыг танилцууллаа, Clang 17.0-д янз бүрийн сайжруулалт, өөрчлөлт, алдаа засвар, юуны түрүүнд янз бүрийн чухал талуудыг хэрэгжүүлсэн.
LLVM-ийг мэдэхгүй хүмүүсийн хувьд та үүнийг мэдэж байх ёстой нь GCC нийцтэй хөрвүүлэгч юм Программуудыг RISC шиг виртуал зааврын завсрын бит код (олон түвшний оновчлолын систем бүхий доод түвшний виртуал машин) болгон хөрвүүлдэг (эмхэтгэгчид, оновчтой болгогчид, код үүсгэгчид).
Үүсгэсэн псевдокодыг JIT хөрвүүлэгч программыг гүйцэтгэх үед машины заавар болгон хувиргаж болно.
LLVM 17.0-ийн үндсэн шинэ шинж чанарууд
Танилцуулж буй LLVM 17.0-ийн энэхүү шинэ хувилбарт анхааралдаа авах шаардлагатай янз бүрийн холбогдох талууд байгаа бөгөөд үүнд жишээ нь: X86 арын хэсгийн сайжруулалт, тэр нэмсэнo өргөтгөлүүдийг дэмжих зааврын багц архитектур ISA SHA512, ISA SM3, ISA SM4 болон ISA AVX-VNNI-INT16.
Үүнээс гадна, энэ нь бас онцлон тэмдэглэж байна сайжруулалт архитектурт зориулсан backend боломжууд RISC-V оноос хойш ихээхэн өргөжсөн байна sifive-x280 процессорын нэмэлт дэмжлэг.
Бидний олж мэдэх өөр нэг өөрчлөлт бол XTH процессорын өргөтгөлүүдийн дэмжлэгийг хэрэгжүүлсэн*, түүнчлэн өргөтгөлүүдтэй нийцтэй байх LSX, LASX, LVZ болон LBT ISA LoongArch архитектурын арын хэсэгт.
AArch64, ARM, WebAssembly, MIPS, PowerPC, AMDGPU архитектуруудад зориулсан арын хэсгүүдийг сайжруулж, LLD холбогчийн чадавхийг өргөжүүлж, бичлэгийн талаарх бүх мэдэгдэж буй мэдээллийг харуулахын тулд LLDB дибагерт шинэ "бүртгэх мэдээлэл" командыг нэмсэн.
Clang 17.0-ийн сайжруулалтын тухайд, ирээдүйд C-стандарт C2x-д тодорхойлсон bool, static_assert, aligns, alignof, thread_local гэсэн түлхүүр үгс, мөн "{}" гэсэн хоосон хаалтуудыг зааж өгөх боломжууд хэрэгжсэнийг онцлон тэмдэглэв. тэг утгыг эхлүүлэх.
Кодo C нь "goto" илэрхийллийг дамжуулах боломжийг олгодог "asm" блок дотор шууд бусаар сонгогдсон хаягуудаар дамжуулан C өргөтгөлийн дэмжлэгийг нэмсэн бөгөөд энэ нь "_Generic"-ийн эхний операнд болгон илэрхийлэлийн оронд төрлийг ашиглах боломжийг олгохоос гадна Си хэл дээрх тогтмол илэрхийлэлд бүтэц, нэгдлийг ашиглах боломжийг олгодог. мөн "const" атрибутаар зарласан массивууд.
C++ 20 стандарттай холбоотой сайжруулалтын тухайд одоо дурьдсан Windows-аас бусад бүх платформ дээр Coroutines-ийг бүрэн дэмждэг. Үүнээс гадна тогтмол илэрхийллийн харьцуулалтын үйлдлүүдийн нэмэлт шаардлагыг хэрэгжүүлсэн.
Үүнийг ч одоо онцолж байнаЛамбда загваруудыг зөв задлан шинжлэх нь баталгаатай Загварын параметрийн дараа шууд зааж өгсөн бөгөөд блок дахь хамааралтай төрөл бүхий хувьсагчийг агуулсан. Хэрэглэгчийн үг хэллэгт давхар доогуур зураас ашиглахыг хориглосон бөгөөд нэрэнд нөөцлөгдсөн танигчтай функцийн тодорхойлолтод "оператор" түлхүүр үгийг ашиглахыг хориглосон.
Хувьд нь C++ 23 стандарттай холбоотой сайжруулалт хийх , энэ нь ISO батлах эцсийн шатанд байна гэж дурдсан байна, оноос хойш lambda функцууд дахь эцсийн буцах төрлийн хамрах хүрээг өөрчилсөн эхлээд дэгээ, дараа нь эргэн тойрон дахь текстийг харах.
Нь бусад өөрчлөлтүүд тодорсон:
- ашиглан олон хэмжээст массивыг тодорхойлох чадварыг нэмсэн
- "-O0" оновчлолын горимыг ашиглан C++ програмуудыг эмхэтгэх үед дуудлага хийх код үүсгэх нь сайжирсан.
- Гаралтын өнгийг идэвхгүй болгохын тулд NO_COLOR орчны хувьсагчдад дэмжлэг нэмсэн.
- Статик шинжилгээ, оношилгооны хэрэгслүүд ихээхэн өргөжсөн, тухайлбал, шинэ тэмдэгт бүхэл тоон халих шалгалт, lambda загварын залруулга, constexpr илэрхийлэл, тэг заагчийн харьцуулалт, эхлээгүй бүтцийг ашиглах гэх мэтийг нэмсэн.
- Libc++ номын сан нь C++20 болон C++23 стандартуудын чадавхийг дэмжих ажлыг үргэлжлүүлэн хэрэгжүүлж байгаа бөгөөд C++26 техникийн үзүүлэлтэд дэмжлэг үзүүлэх ажлыг эхлүүлсэн.
- Толгой файлууд болон модулиудын хоорондох холболтын тайлбарт "cplusplus23 шаардлагатай" гэсэн илэрхийлэлд дэмжлэг нэмсэн.
Эцэст нь, хэрэв та энэ талаар илүү ихийг мэдэхийг хүсч байвал дэлгэрэнгүй мэдээллийг авах боломжтой дараах холбоос.