Як компилятори кушодаасосро аз C/C++ то WebAssembly ва JavaScript дастгирӣ кунед

шодоб

Cheerp: Компилятори C++ барои веб

Ба наздикй эълон карда шуд Нашри Cheerp 3.0, як компилятор, ки ба шумо имкон медиҳад, ки ҳама гуна рамзи C/C++-ро ба WebAssembly ё JavaScript тартиб диҳед. Филиали нав бо интиқол додани компилятор ва китобхонаҳои ҳамроҳ барои истифодаи литсензияҳои иҷозаи Apache 2.0 ва LLVM, ба ҷои сиёсати маҳдуди литсензияи қаблан истифодашуда, ки варианти литсензияи GPLv2-ро барои лоиҳаҳои ғайритиҷоратӣ ва соҳиби иҷозатнома барои лоиҳаҳои тиҷоратӣ пешниҳод мекунад, намоён аст.

Cheerp-ро ҳам барои интиқоли замимаҳои мавҷудаи C/C++ ва китобхонаҳо барои кор дар браузер истифода бурдан мумкин аст ва ё барои сохтани веб-барномаҳои баландсифат ва ҷузъҳои WebAssembly аз сифр.

Аз нашри қаблии Cheerp (Cheerp 2.7) зиёда аз як сол гузашт ва ин версияи нав бо хусусиятҳо ва оптимизатсияҳои нав пур карда шудааст, ки бори дигар ҳолати санъати истифодаи C++-ро ҳамчун забони барномасозӣ барои барномаҳои веб бармеангезад. бозихо.

Муҳимтар аз ҳама, бо ин нашр мо ба модели иҷозатномадиҳии Cheerp тағироти назаррас ворид мекунем. Аз Cheerp 3.0, ҳама ҷузъҳо ва китобхонаҳои асосии компилятор ҳоло тибқи иҷозатномаи Apache 2.0/LLVM иҷозатнома доранд. Ин як дурии радикалиро аз модели қаблии GPLv2/литсензияи тиҷоратии мо нишон медиҳад, ки имкон медиҳад Cheerp 3.0 барои ҳама гуна мақсад бидуни маҳдудият истифода шавад.

Дар бораи Cheerp

Лоиҳа ба шумо имкон медиҳад, ки рамзи C/C++ ва JavaScript-ро дар як барномаи веб муттаҳид кунед бо қобилияти дастрасӣ аз коди JavaScript ба функсияҳое, ки дар ибтидо дар C/C++ таҳия шудаанд ва аз рамзи C/C++ ба объектҳои JavaScript, китобхонаҳои JavaScript, Web APIҳо ва ҳама хусусиятҳои DOM, инчунин ба шумо имкон медиҳанд, ки сохторҳои омехта эҷод кунед, қисми коде, ки ба JavaScript ва қисмҳои WebAssembly тартиб медиҳад. Лоиҳаҳои бунёдиро дастгирӣ мекунад, ки китобхонаҳои стандартии libc ва libc++-ро истифода мебаранд.

Дар муқоиса бо таҳиягари Emscripten, Cheerp рамзи мобайнии WebAssembly бештар оптимизатсияшуда ва паймонро тавлид мекунад (Ба ҳисоби миёна, андозаи файли натиҷавӣ 7% хурдтар аст.)

Консепсия, тафовутҳо аз он иборатанд, ки қайд кардан ҳамчун формати объекти WebAssembly истифода мешавад ва ҳатмӣ ва оптимизатсияро дар марҳилаи пас аз коркарди WebAssembly (васм интихоб). Cheerp байткоди LLVM-ро ҳамчун намояндагии фосилавӣ барои китобхонаҳо ва файлҳои объектӣ истифода мебарад, ки имкон медиҳад, ки оптимизатсияи васеътари лоиҳа бо истифода аз метамаълумотҳои сатҳи LLVM бидуни ниёз ба коркарди баъдӣ.

Мақолаи марбут:
Emscripten 3.0, як асбоби сохтани WebAssembly бо истифода аз LLVM

Ҳамчунин, Cheerp оптимизатори PreExecuter-ро барои пешгирикунанда иҷро кардани код истифода мебарад дар вақти тартибдиҳӣ, масалан, барои табдил додани конструкторҳое, ки барои оғоз кардани объектҳои глобалӣ ба доимӣ истифода мешаванд. Илова бар ин, PartialExecuter ҳангоми компиляция истифода мешавад, ки он дар асоси таҳлили параметрҳои функсия кодеро хориҷ мекунад, ки ҳангоми иҷроиш кафолат дода намешавад.

Cheerp инчунин метавонад рамзи JavaScript-ро тавлид кунад, то бо хотираи динамикӣ кор кунад. бо хошоктайёркунй фаро гирифта шудааст. Махсусан, ба ҷои тақлид кардани фазои суроғаи анъанавӣ бо массивҳои чопшуда, Cheerp харитасозии мустақимро аз объектҳои C++ ба объектҳои JavaScript пешниҳод мекунад, ки истеъмоли хотираро коҳиш медиҳад, зеро коллектори партовҳои JavaScript қобилияти нест кардани объектҳои истифоданашударо дорад. Барои беҳтар кардани кор, рамзи мобайнии WebAssembly тавлидшуда васеъшавии SIMD-ро барои ташкили параллелизатсияи амалиёти додаҳо истифода мебарад.

Cheerp метавонад ҳамчун платформа барои сохтани барномаҳои веб истифода шавад муштарӣ/сервер дар C++. Дар амалияи кунунӣ маъмул аст, ки як интерфейси алоҳидаи ба браузер асосёфта, ки дар JavaScript навишта шудааст ва пуштибонии алоҳида дар PHP, Python, Ruby ё JavaScript/Node.js навишта шудааст.

Cheerp воситаҳоеро барои сохтани барномаҳои мукаммали веби C++ таъмин мекунад, ки ҳам пуштибонӣ ва ҳам фронталиро дар як пойгоҳи код дастгирӣ мекунанд.

Дар ҷараёни сохтан, тарафи сервер ба рамзи аслӣ тартиб дода мешавад ва интерфейс ба намояндагии JavaScript табдил дода мешавад. Ислоҳоти ҳамаи ҷузъҳои лоиҳа, аз ҷумла онҳое, ки ба JavaScript табдил дода шудаанд, бо истифода аз матнҳои сарчашмаи C++ бо истифода аз технологияи Source Map анҷом дода мешавад.

Дар охир, агар шумо ба донистани бештар дар бораи он манфиатдор бошед, шумо метавонед тафсилотро дар истиноди зерин.

Рамзи компилятор ба таҳаввулоти LLVM ва Clang асос ёфтааст ва оптимизатсияҳои иловагиро барои беҳтар кардани кор ва кам кардани андозаи баромади тартибдодашуда дар бар мегирад.


Мазмуни мақола ба принсипҳои мо риоя мекунад ахлоқи таҳрирӣ. Барои гузориш додани хато клик кунед ин ҷо.

Аваллин эзоҳро диҳед

Назари худро бинависед

Суроғаи почтаи электронии шумо нест, нашр карда мешавад. Майдонҳои талаб карда мешавад, бо ишора *

*

*

  1. Масъул барои маълумот: AB Internet Networks 2008 SL
  2. Мақсади маълумот: Назорати СПАМ, идоракунии шарҳҳо.
  3. Қонунӣ: Розигии шумо
  4. Иртиботи маълумот: Маълумот ба шахсони сеюм расонида намешавад, ба истиснои ӯҳдадориҳои қонунӣ.
  5. Нигоҳдории маълумот: Пойгоҳи додаҳо аз ҷониби Occentus Networks (ИА) ҷойгир карда шудааст
  6. Ҳуқуқҳо: Ҳар лаҳза шумо метавонед маълумоти худро маҳдуд, барқарор ва нест кунед.