После шест месеци развоја представљено је лансирање нове верзије ЛЛВМ 9.0 пројекта, који је ГЦЦ компатибилан алат (компајлери, оптимизатори и генератори кода), који компајлира програме у средњи битни код виртуелних инструкција налик на РИСЦ (виртуелна машина на ниском нивоу са системом за оптимизацију на више нивоа).
Дизајниран је за оптимизацију времена компајлирања, време везивања, време извршавања у било ком програмском језику који корисник жели да дефинише. Првобитно је имплементиран за компајлирање Ц и Ц ++, Језички агностички дизајн ЛЛВМ-а и успех пројекта изнедрили су широк спектар језика, укључујући Објецтиве-Ц, Фортран, Ада, Хаскелл, Јава бајт код, Питхон, Руби, АцтионСцрипт, ГЛСЛ, Цланг, Руст, Гамбас и друге.
Генерирани псеудо-код се може претворити помоћу ЈИТ компајлера у машинске инструкције директно у време извршења програма.
Главне нове карактеристике ЛЛВМ 9.0
Међу новим карактеристикама ЛЛВМ 9.0 пронашао подршку за уклањање експерименталне развојне ознаке са РИСЦ-В платформе, Подршка за Ц ++ за ОпенЦЛ.
Још једна новина која издваја се могућност поделе програма на динамички учитане делове у ЛЛД-у и примена конструкције »асм гото» која се користи у коду језгра Линук-а.
Поред тога, такође је истакнуто да је Либц ++ дошао са подршком за ВАСИ (ВебАссембли Систем Интерфаце) и ЛЛД је увео почетну подршку за ВебАссембли динамичко везивање. Додата је имплементација ГЦЦ специфичног израза »асм гото», који вам омогућава да пређете са склопљеног уграђеног блока на ознаку у Ц коду.
Ова функција је неопходна за изградњу Линук кернела у режиму »ЦОНФИГ_ЈУМП_ЛАБЕЛ = и« користећи Цланг на к86_64 системима. Узимајући у обзир промене додате у претходним верзијама, Линук језгро сада може да се изгради у Цлангу за архитектуру к86_64 (раније је било подржано само за арм, аарцх64, ппц32, ппц64ле и мипс архитектуре.
Додата је подршка за упутства за БТИ (Бранцх Таргет Индицатор) и ПАЦ (Поинтер Аутхентицатион Цоде) за ААрцх64 архитектуру. Значајно побољшана подршка за МИПС, РИСЦ-В и ПоверПЦ платформе.
Поред тога, Андроид и ЦхромеОС пројекти су већ прешли на коришћење Цланг-а за изградњу језгра и Гоогле тестира Цланг као примарна језгра платформе за изградњу за своје Линук системе.
У будућности, током процеса компајлирања језгра биће могуће користити друге компоненте ЛЛВМ, укључујући ЛЛД, ллвм-објцопи, ллвм-ар, ллвм-нм и ллвм-објдумп.
Експериментална функција партиције додата је у ЛЛД повезивач, што омогућава поделу програма на више делова, од којих је сваки смештен у засебну ЕЛФ датотеку. Ова функција вам омогућава да покренете главни део програма који ће по потреби учитати преостале компоненте у процесу (на пример, уграђени прегледник ПДФ можете одабрати као засебну датотеку која ће се преузети само када корисник отвара датотеку ПДФ).
С друге стране, истичу се и бројна побољшања у позадини. за архитектуре Кс86, ААрцх64, АРМ, СистемЗ, МИПС, АМДГПУ и ПоверПЦ.
На пример, додата је подршка за упутства СВЕ2 и МТЕ (Мемори Таггинг Ектенсионс) за архитектуру ААрцх64, подршка за архитектуру Армв8.1-М и МВЕ додата су у позадину АРМ-а.
У случају АМДГПУ, додата је подршка за ГФКС10 архитектуру (Нави), подразумевано је омогућено позивање функције и прослеђивање активираног комбинованог ДПП-а (Дата Примитиве-Параллел).
Исправљач ЛЛДБ увео је истицање трагова у боји уназад; додата подршка за ДВАРФ4 дебуг_типес и ДВАРФ5 дебуг_инфо блокове;
Услужни програми ллвм-објцопи и ллвм-стрип додали су подршку за извршне датотеке и објекте у формату ЦОФФ.
Заштита за РИСЦ-В архитектуру је стабилизована, који више није позициониран као експериментални и подразумевано је направљен. Пуна подршка за генерисање кода за варијанте скупа инструкција РВ32И и РВ64И са МАФДЦ екстензијама.
izvor: http://releases.llvm.org/