После нешто више од шест месеци развоја, лансирање нова верзија пројекта ЛЛВМ КСНУМКС, верзија у којој је имплементиран велики број измена и побољшања.
За оне који нису упознати са ЛЛВМ-ом, требало би да знате да је ово је ГЦЦ компатибилан компајлер (компајлери, оптимизатори и генератори кода) који компајлирају програме у РИСЦ-сличан виртуелни инструкцијски међубит код (виртуелна машина ниског нивоа са вишестепеним оптимизационим системом).
Генерисани псеудокод може бити конвертован од стране ЈИТ компајлера у машинске инструкције само у време извршавања програма.
Главне нове карактеристике ЛЛВМ 16.0
У овој новој верзији која је представљена можемо пронаћи неколико важних побољшања у цланг 16.0, од којих се издваја подразумевани Ц++/ОбјЦ++ стандард који је постављен на гну++17 (раније гну++14), који подразумева подршку за Ц++17 функције са ГНУ екстензијама подразумевано. Употреба елемената дефинисаних у Ц++17 стандарду је дозвољена у ЛЛВМ коду.
Још једна од промена која се истиче јесте да је додат подршка за Цортек-А715, Цортек-Кс3 и Неоверсе ЦПУ В2, Армв8.3 екстензије и функције више верзија за ААрцх64 бацкенд.
La компатибилност платформе Армв2, Армв2А, Армв3 и Армв3М су укинути у позадини АРМ архитектуре, за коју није било гарантовано исправно генерисање кода. Додата је могућност генерисања кода за упутства за рад са сложеним бројевима и додата подршка за архитектуре скупова инструкција (ИСА) АМКС-ФП16, ЦМПЦКСАДД, АВКС-ИФМА, АВКС-ВННИ-ИНТ8, АВКС-НЕ-ЦОНВЕРТ у Кс86 бацкенд.
Поред тога, повећани су захтеви за изградњу ЛЛВМ, Такође, буилд би сада требало да буде компатибилан са стандардом Ц++17, тј. за изградњу је потребан најмање ГЦЦ 7.1, Цланг 5.0, Аппле Цланг 10.0 или Висуал Студио 2019 16.7.
С друге стране, то такође наглашава побољшана позадина за МИПС, ПоверПЦ и РИСЦ-В архитектуре, као и подршку за отклањање грешака у 64-битним извршним датотекама за архитектуру ЛоонгАрцх у ЛЛДБ дебугер и побољшано руковање ЦОФФ симболима за отклањање грешака.
Од осталих промена који се истичу:
- У библиотеци Либц++ главни рад је био усмерен на имплементацију подршке за нове карактеристике стандарда Ц++20 и Ц++23.
- Време везе је значајно смањено у ЛДД линкеру паралелизовањем скенирања премештања адресе и операција иницијализације секција. Додата подршка за компресију секција помоћу ЗСТД алгоритма.
- Напредне функције имплементиране са Ц++20 стандардом су такође истакнуте.
- ухвати структуриране везе у ламбда функцијама.
- Оператор једнакости унутар израза.
- Способност да се не наведе кључна реч типа име у неким контекстима,
- Допуштеност иницијализације додата између заграда („Аггр(вал1, вал2)“).
- Имплементиране функције дефинисане у будућем Ц++2б стандарду.
- Подршка је обезбеђена са типом цхар8_т,
- Проширен опсег знакова дозвољених за употребу у „\Н{…}“,
- Додата је могућност коришћења променљивих декларисаних као "статички цонстекпр" у функцијама декларисаним као цонстекпр.
- Имплементиране функције дефинисане у будућем Ц2к Ц стандарду:
- Додата подршка за учитавање више конфигурационих датотека (прво се учитавају подразумеване конфигурационе датотеке, а затим оне наведене преко „–цонфиг=“ заставице, која се сада може специфицирати више пута).
- Промењен редослед учитавања подразумеваних конфигурационих датотека: цланг прво покушава да учита датотеку - .цфг и ако не може да га пронађе, покушава да учита две датотеке .цфг анд .цфг.
- Додата је нова заставица израде „-фцоро-алигнед-аллоцатион“ за рутинску дистрибуцију усклађену са оквиром.
- Додата је ознака "-фмодуле-оутпут" да би се омогућио једнофазни модел израде стандардних Ц++ модула.
- Додат је режим „-Рпасс-аналисис=стацк-фраме-лаиоут“ за дијагностиковање проблема са распоредом оквира стека.
- Додао је нови __аттрибуте__((таргет_версион("цпу_феатурес"))) атрибут и проширио функционалност атрибута __аттрибуте__((таргет_цлонес("цпу_феатурес1″,"цпу_феатурес2",…))) да би изабрао специфичне верзије функција које обезбеђује ЦПУ ААрцх64 .
- Побољшани дијагностички алати:
- Додато је упозорење „-Всингле-бит-битфиелд-цонстант-цонверсион“ да би се ухватило имплицитно скраћивање када се једнобитно поље додељује једном битном пољу.
- Проширена дијагностика за неиницијализоване цонстекпр варијабле.
- Додата упозорења "-Вцаст-фунцтион-типе-стрицт" и "-Винцомпатибле-фунцтион-поинтер-типес-стрицт" да бисте ухватили потенцијалне проблеме са типовима функција за пребацивање.
Коначно Ако сте заинтересовани да сазнате више о томе, детаље можете проверити у следећи линк.