Cheerp 3.0، C/C++ جاوا اسڪرپٽ ڪمپلر ڏانهن، اپاچي 2.0 ۽ LLVM لائسنس ڏانهن لڏي ويا

Cheerp 3.0 ڪمپلر متعارف ڪرايو ويو آهي، جيڪو توهان کي ڪنهن به C/C++ ڪوڊ کي WebAssembly يا JavaScript تي گڏ ڪرڻ جي اجازت ڏئي ٿو. نئين برانچ قابل ذڪر آهي مرتب ڪندڙ کي منتقل ڪرڻ ۽ ان سان گڏ لائبريرين کي اجازت ڏيڻ واري Apache 2.0 ۽ LLVM لائسنس استعمال ڪرڻ لاءِ، اڳ ۾ لاڳو ٿيل محدود لائسنسنگ پاليسي جي بدران، غير تجارتي منصوبن لاءِ GPLv2 لائسنس جو اختيار ۽ تجارتي منصوبن لاءِ هڪ مالڪي وارو لائسنس پيش ڪري ٿو. گڏ ڪرڻ وارو ڪوڊ LLVM ۽ ڪلانگ جي ترقي تي ٻڌل آھي، ۽ ڪارڪردگي کي بھتر ڪرڻ ۽ مرتب ڪيل نتيجن جي سائيز کي گھٽائڻ لاءِ اضافي اصلاحون شامل آھن.

Cheerp ٻنهي کي استعمال ڪري سگھجي ٿو موجوده C/C++ لائبريرين ۽ ايپليڪيشنن کي پورٽ ڪرڻ لاءِ برائوزر ۾ هلائڻ لاءِ، ۽ اعليٰ ڪارڪردگي واريون ويب ايپليڪيشنون ۽ WebAssembly اجزاء ٺاهڻ لاءِ شروع کان. پروجيڪٽ توهان کي اجازت ڏئي ٿو C / C ++ ۽ JavaScript ڪوڊ کي هڪ ويب ايپليڪيشن ۾ گڏ ڪرڻ جي صلاحيت سان جاوا اسڪرپٽ ڪوڊ مان رسائي حاصل ڪرڻ جي صلاحيت اصل ۾ C / C ++ ۾ ترقي ڪئي وئي، ۽ C / C ++ ڪوڊ کان جاوا اسڪرپٽ شيون، JavaScript. لائبريريون، ويب API ۽ سڀ خاصيتون DOM. ان کي گڏيل اسيمبليون ٺاهڻ جي اجازت آهي، ڪجهه ڪوڊ جنهن ۾ جاوا اسڪرپٽ ۾ مرتب ڪيو ويو آهي، ۽ ڪجهه WebAssembly ۾. اهو تعميراتي منصوبن کي سپورٽ ڪري ٿو جيڪي معياري libc ۽ libc++ لائبريريون استعمال ڪن ٿيون.

Emscripten compiler جي مقابلي ۾، Cheerp وڌيڪ بهتر ۽ ڪمپيڪٽ WebAssembly وچولي ڪوڊ ٺاهي ٿو (اوسط طور، نتيجن واري فائلن جي سائيز 7٪ ننڍو آهي). تصوراتي طور تي، اختلاف ان حقيقت تائين پهچن ٿا ته Emscripten WebAssembly آبجیکٹ فارميٽ طور استعمال ٿئي ٿو ۽ WebAssembly پوسٽ-پروسيسنگ اسٽيج (wasm-opt) تي پابند ۽ اصلاح کي انجام ڏئي ٿو. Cheerp LLVM bytecode استعمال ڪري ٿو لائبريرين ۽ اعتراض فائلن لاءِ وچولي نمائندگي جي طور تي، وسيع پروجيڪٽ جي وسيع اصلاحن جي اجازت ڏئي ٿو جيڪي پوسٽ پروسيسنگ جي ضرورت کان سواءِ LLVM-سطح جي ميٽا ڊيٽا کي استعمال ڪن ٿيون.

اضافي طور تي، Cheerp استعمال ڪري ٿو PreExecuter آپٽمائزر، جيڪو مهيا ڪري ٿو اڳڀرائي واري ڪوڊ تي عملدرآمد وقت تي، مثال طور، ڪنسٽرڪٽرز کي تبديل ڪرڻ لاءِ استعمال ٿيل ڪنسٽرڪٽرز کي عالمي شين کي مستقل ۾ شروع ڪرڻ لاءِ. انهي سان گڏ، جڏهن گڏ ڪرڻ، PartialExecuter استعمال ڪيو ويندو آهي، جيڪو، فنڪشنل پيٽرولن جي تجزيي جي بنياد تي، ڪوڊ کي هٽائي ٿو جيڪو عمل جي دوران استعمال نه ٿيڻ جي ضمانت آهي.

چيئر پڻ ٺاهي سگھي ٿو جاوا اسڪرپٽ ڪوڊ متحرڪ طور تي ڪم ڪرڻ لاءِ ميموري سان ڍڪيل ڪچري جي ڪليڪٽر طرفان. خاص طور تي، ٽائپ ڪيل صفن سان روايتي ايڊريس اسپيس کي نقل ڪرڻ بدران، چيرپ جاوا اسڪرپٽ جي شين کي C++ شين جي سڌي ميپنگ مهيا ڪري ٿي، جيڪا ميموري جي استعمال کي گھٽائي ٿي ڇو ته جاوا اسڪرپٽ گاربيج ڪليڪٽر وٽ غير استعمال ٿيل شيون هٽائڻ جي صلاحيت آهي. ڪارڪردگي کي بهتر ڪرڻ لاء، ٺاهيل WebAssembly وچولي ڪوڊ استعمال ڪري ٿو SIMD ايڪسٽينشن کي منظم ڪرڻ لاءِ ڊيٽا آپريشنز جي متوازي ترتيب.

Cheerp C++ ۾ مربوط ڪلائنٽ/سرور ويب ايپليڪيشنن جي تعمير لاءِ پليٽ فارم طور استعمال ٿي سگھي ٿو. موجوده مشق ۾، اهو عام آهي ته هڪ الڳ برائوزر تي ٻڌل فرنٽ-اينڊ جاوا اسڪرپٽ ۾ لکيل آهي ۽ هڪ الڳ پٺاڻ-اينڊ PHP، Python، Ruby، يا JavaScript/Node.js ۾ لکيل آهي. Cheerp مڪمل C++ ويب ايپليڪيشنون ٺاهڻ جا وسيلا مهيا ڪري ٿو جيڪي هڪ واحد ڪوڊ بيس ۾ پس منظر ۽ فرنٽ اينڊ کي سپورٽ ڪن ٿيون. تاليف جي عمل دوران، سرور جي پاسي کي اصلي ڪوڊ ۾ مرتب ڪيو ويو آهي، ۽ انٽرفيس کي جاوا اسڪرپٽ جي نمائندگي ۾ تبديل ڪيو ويو آهي. پروجيڪٽ جي سڀني حصن جي ڊيبگنگ، بشمول جاوا اسڪرپٽ ۾ تبديل ٿيل، سي ++ سورس ٽيڪسٽ استعمال ڪندي ڪيو ويندو آهي Source Map ٽيڪنالاجي استعمال ڪندي (جيڪڏهن ڪو غلطي ٿئي ٿي، توهان ڏسي سگهو ٿا C++ ڪوڊ جو هڪ سيڪشن، سيٽنگ بريڪ پوائنٽس C++ ڪوڊ ۾ ۽ لائن-بي-لائن قدم سي ++ ڪوڊ جي قدم قدم تي عمل ڪرڻ جي حمايت ڪئي وئي آهي).

جو ذريعو: opennet.ru

تبصرو شامل ڪريو