Кленг

From Wikipedia, the free encyclopedia

Remove ads

Кленг (енгл. , /ˈklæŋ/)[3] преводилац је предњег дела за следеће програмске језике: C, C++, Objective-C и Objective-C++. Користи ВМНР као "задњи део" и део је ВМНР иклуса од ВМНР 2.6.

Укратко Програмер(и), Стабилно издање ...

Кленг је израђен да би заменио ГЦЦ. Отвореног је типа;[4] развио га је Епл, мада су у његовом стварању учествовали и Мајкрософт, Гугл, АРМ, Сони и Интел. Код је доступан по лиценци Универзитета у Илиноису; то је слободна софтвер лиценца

Пројекат Кленг садржи и предњи део Кленга и више врста кодова за статичко анализирање.[5]

Remove ads

Позадина

Епл је 2005. проширио употребу ВМНР на виже комерцијалних оперативних система,[6] у које се убрајају и опрема за развој иФона и Икскода 3.1.

Једна од првих примена ВМНР-а је била у OpenGL компајлеру за X оперативни систем. OpenGL је помоћу ВМНР конвертовао своје команде у основне команде за графичко обрађивање јединица (ГПУ) које не подржавају одређене карактеристике. То је дозволило Еплу да лансира подршку за све OpenGL апликације за програмирање интерфејса (АПИ) за рачунаре који користе Интелов ГМА чипсет, повећавајући њихове перформансе.[7] За довољно способан графички процесор код се преводи тако да максимално искористи основни хардвер, али ако рачунар користи ГМА, ВМНР преводи код у подпрограм како би било сигурно да ће радити.

ВМНР је у почетку користио предњи део ГЦЦ-а, али је то стварало проблеме у развоју, како ВМНР-у тако и Еплу. Изворни код ГЦЦ-а је превелик и незграпан систем да би се користио, чак је један од твораца ГЦЦ-а за њега прокоментарисао да "није нилски коњ за балет". [8]

Епл софтвер је углавном базиран на Објектном-Ц-у, али предњи део овог програмског језика у ГЦЦ-у се баш и не развија. Такође ГЦЦ није намењен за Епл.[9] Коначно, ГЦЦ је ГПЛ лиценцирана верзија 3, који захтева од програмера који дистрибуирају екстензије за (или модификоване верзије) ГЦЦ да њихов изворни код буде доступан, док ЛЛВМ има БСД-олику лиценцу[10] која дозвољава укључење извора у власнички софтвер.

Епл је ипак одлучио да направи нови предњи део компајлера, који ће подржавати C, Објектни-Ц и C++.[9] Пројекат "Кленг" је отвореног кода од јула 2007.[11]

Remove ads

Дизајн

Кленг је намењен да ради искључиво на ВМНР бази.[10] Комбинација Кленга и ВМНР даје велики избор алатки које вам омогућавају да у потпуности замените ГЦЦ конструкцију података. Кленг је лако уградити у апликације, као и остатак ВМНР-а, зато сто је његова конструкција слична библиотеци. То је један од разлога зашто је све везано за OpenGL израђено уз помоћ Кленга и ВМНР-а.

Један од примарних циљева Кленга јесте да боље подржи постепене преводилаце и да буду ближе повезани у интегрисаној развојној околини система. Супротно томе, ГЦЦ је направљен да ради на класичан преведи-повежи-дешифруј систем и иако нуди разне подршке и опције превођења, није баш лако укомпоновати га тако да ради са другим алаткама. На пример, ГЦЦ користи корак "фолд" која је кључ у целом процесу превођења кода, и који има тенденцију да преведе код у нешто што скоро уопште не личи на оригинални код. Ако се за време овог корака пронађе грешка било би скоро немогуће вратити тај исти код у почетно стање превођења. Поред тога, произвођачи користе ГЦЦ стек унутар ИДЕа и користе посебне алате за индексирање кода, да би обезбедили функције као што су синтаксно истицање и самозавршавање.

Кленг је дизајниран тако да у току превођења кода запамти више информација од ГЦЦ-а, и да у потпуности сачува облик примарног кода. Циљ овога је лакше детектовање грешака. Пријављивање грешака би такође требало бити детаљније и јасније, као и препознатљиво за рачунар, како би се грешке изоловале за време превођења кода. Модуларни дизајн компајлера као опцију нуди индексирање изворног кода, проверу синтаксе, и друге карактеристике које су најчешће повезане са апликацијом за брзи развој система. Стабло извођења подржава дефакторисање кода, при томе текс не губи своју форму никад.

Кленг је модуларизован, одлично документован, и скоро у потпуности базиран на библиотекама замењивих линкова. - за разлику од изворног кода модула који се преводи у времену превођења. У неким случајевима библиотеке имају више верзија и могу се мењати из рантајма; на пример анализатор долази са верзијом која нуди мерење перформанси процеса превођења.

Кленг је преводилац само за C и сличне C језике. Он не нуди преводилачке горње крајеве за друге језицима осим C, C++, Објектног-Ц, и Објектног-C++. За остале језике, укључујући Јаву, Фортран и Ада, ВМНР остаје зависан од ГЦЦ. У многим случајевима, Кленг може да се користи и као замена за ГЦЦ по потреби, без других ефеката на ланац алаткиу целини. Она подржава већину најчешће коришћених ГЦЦ опција.

Remove ads

Перформансе и компатибилност са ГЦЦ

Кленг је дизајниран да буде веома компатибилана са ГЦЦ.[12] Интерфејс командне линије Кленга су такође сличне са Кленг је дизајнирана да буде веома компатибилана са ГЦЦ као и многе заставе и опције. Кленг спроводи многе ГНУ језике екстензије и омогућава им да буду по дефаулту. Кленг спроводи многе ГЦЦ преводе битне искључиво за компатибилност. На пример, иако Кленг спроводи атомски битне преводе који одговарају управо са атомским Ц11, такође спроводи ГЦЦ-ов је __sync_* који је битан за компатибилност са ГЦЦ и libstdc++. Кленг такође одржава АБИ компатибилност са ГЦЦ-генерисаним објектом кода. У пракси Кленг се често може користити као замена за ГЦЦ.

Кленг творци раде на томе да смање количину меморије која се користи и да повећају брзину превођења и слагања информација. 2007 године објавили су да је Кленг дупло брже преводиo информације од ГЦЦ-а уз помоћ своје Карбон библиотеке, користећи при томе само шестину меморије која је потребна ГЦЦ-у за исту операцију.[13] Међутим од 2011. године напредак је стао.[14][15] До средине 2014.године перформансе система извршавања су се толико побољшале да Кленг утростручио своје оцене, али је ипак ГЦЦ у већини случајева имао више оцене.[16]

Иако још увек постоје неколико тестова у којима учинак Кленг програмског превођења и даље заостаје за перформансама ГЦЦ-програмског превођења, у великим факторима (до 5.5х)[16] , и даље се преноси да Кленг "наставља да се веома активно развија, "а нада је да ће и даље напредовати у будућности.[14]

Статус историје

Ова табела представља само значајне кораке и обајвљивање истих у историји Кленг преводиоца.

Више информација Датум, Најважније ...
Remove ads

Види још

  • ВМНР (дебаговање) 
  • Преносни С компајлер 

Референце

Спољашње везе

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads