Развеселите компајлер отвореног кода са Ц/Ц++ на ВебАссембли и ЈаваСцрипт

цхеерп

Цхеерп: Ц++ компајлер за веб

Недавно је објављено Цхеерп 3.0 издање, компајлер који омогућава вам да преведете било који Ц/Ц++ код у ВебАссембли или ЈаваСцрипт. Нова грана је значајна по премештању компајлера и пратећих библиотека да користе дозвољене Апацхе 2.0 и ЛЛВМ лиценце, уместо раније примењене политике ограничене лиценце, која нуди опцију ГПЛв2 лиценце за некомерцијалне пројекте и власника лиценце за комерцијалне пројекте.

Цхеерп се може користити и за пренос постојећих Ц/Ц++ апликација и библиотека за покретање у претраживачу или за креирање веб апликација високих перформанси и ВебАссембли компоненти од нуле.

Прошло је више од годину дана од претходног издања Цхеерп-а ( Цхеерп 2.7), а ова нова верзија је препуна нових функција и оптимизација које још једном померају стање уметности коришћења Ц++ као програмског језика за веб апликације. и игрице.

Оно што је најважније, овим издањем правимо значајну промену у Цхеерповом моделу лиценцирања. Од Цхеерп-а 3.0, све основне компоненте компајлера и библиотеке су сада дозвољено лиценциране под лиценцом Апацхе 2.0/ЛЛВМ. Ово означава радикално одступање од нашег претходног модела ГПЛв2/двоструке комерцијалне лиценце, омогућавајући Цхеерп 3.0 да се користи у било коју сврху, без ограничења.

О Цхеерпу

Пројекат омогућава вам да комбинујете Ц/Ц++ код и ЈаваСцрипт у веб апликацији са могућношћу приступа са ЈаваСцрипт кода функцијама које су првобитно развијене у Ц/Ц++, и са Ц/Ц++ кода ЈаваСцрипт објектима, ЈаваСцрипт библиотекама, веб АПИ-јима и свим ДОМ функцијама, као и омогућавајући вам да креирате мешовите верзије, део код који се компајлира у ЈаваСцрипт и дели у ВебАссембли. Подржава пројекте изградње који користе стандардне библиотеке либц и либц++.

У поређењу са компајлером Емсцриптен, Цхеерп генерише оптимизованији и компактнији ВебАссембли међукод (У просеку, резултујућа величина датотеке је 7% мања.)

Концептуално, разлике се своде на то да Емсцриптен се користи као објектни формат ВебАссембли-а и врши везивање и оптимизацију у фази накнадне обраде ВебАссембли (васм-опт). Цхеерп користи ЛЛВМ бајт-код као средњу репрезентацију за библиотеке и објектне датотеке, омогућавајући шире оптимизације на нивоу пројекта користећи метаподатке на нивоу ЛЛВМ без потребе за накнадном обрадом.

Повезани чланак:
Емсцриптен 3.0, ланац алата за прављење ВебАссембли-а користећи ЛЛВМ

Поред тога, Цхеерп користи ПреЕкецутер оптимизатор за превентивно извршавање кода у време компајлирања, на пример, за конвертовање конструктора који се користе за иницијализацију глобалних објеката у константе. Поред тога, ПартиалЕкецутер се користи током компилације, који, на основу рашчлањивања параметара функције, уклања код за који је гарантовано да се неће користити при извршавању.

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

Цхеерп се може користити као платформа за прављење уграђених веб апликација клијент/сервер у Ц++. У тренутној пракси, уобичајено је да се развије посебан фронт-енд заснован на претраживачу написан у ЈаваСцрипт-у и посебан бацк-енд написан у ПХП-у, Питхон-у, Руби-у или ЈаваСцрипт/Ноде.јс.

Цхеерп пружа средства за изградњу комплетних Ц++ веб апликација које подржавају и позадину и фронтенд у једној бази кода.

Током процеса изградње, серверска страна се компајлира у изворни код, а интерфејс се конвертује у ЈаваСцрипт репрезентацију. Отклањање грешака свих компоненти пројекта, укључујући оне конвертоване у ЈаваСцрипт, врши се коришћењем Ц++ изворних текстова коришћењем технологије Соурце Мап.

Коначно, ако сте заинтересовани да сазнате више о томе, детаље можете погледати у следећи линк.

Код компајлера је заснован на развоју ЛЛВМ-а и Цланг-а и укључује додатне оптимизације за побољшање перформанси и смањење величине преведеног излаза.


Оставите свој коментар

Ваша емаил адреса неће бити објављена. Обавезна поља су означена са *

*

*

  1. Odgovorni za podatke: AB Internet Networks 2008 SL
  2. Сврха података: Контрола нежељене поште, управљање коментарима.
  3. Легитимација: Ваш пристанак
  4. Комуникација података: Подаци се неће преносити трећим лицима, осим по законској обавези.
  5. Похрана података: База података коју хостује Оццентус Нетворкс (ЕУ)
  6. Права: У било ком тренутку можете ограничити, опоравити и избрисати своје податке.