C/C++ वरून WebAssembly आणि JavaScript पर्यंत ओपन सोर्स कंपाइलरचा आनंद घ्या

आनंदी

चिअरप: वेबसाठी एक C++ कंपाइलर

त्याची घोषणा नुकतीच करण्यात आली चिअरप ३.० रिलीझ, एक संकलक की तुम्हाला वेबअसेंबली किंवा JavaScript मध्ये कोणताही C/C++ कोड संकलित करण्याची परवानगी देते. नवीन शाखा संकलक आणि सोबतच्या लायब्ररींना परवानगी देणारे Apache 2.0 आणि LLVM परवाने वापरण्यासाठी हलवण्याकरिता उल्लेखनीय आहे, पूर्वी लागू केलेल्या मर्यादित परवाना धोरणापेक्षा, जे गैर-व्यावसायिक प्रकल्पांसाठी GPLv2 परवाना पर्याय आणि व्यावसायिक प्रकल्पांसाठी परवाना मालक प्रदान करते.

ब्राउझरमध्ये चालण्यासाठी विद्यमान C/C++ अॅप्लिकेशन्स आणि लायब्ररी पोर्ट करण्यासाठी किंवा सुरवातीपासून उच्च-कार्यक्षमता वेब अॅप्लिकेशन्स आणि WebAssembly घटक तयार करण्यासाठी Cheerp चा वापर केला जाऊ शकतो.

Cheerp ( Cheerp 2.7 ) च्या मागील रिलीझला एक वर्षाहून अधिक काळ लोटला आहे आणि ही नवीन आवृत्ती नवीन वैशिष्ट्ये आणि ऑप्टिमायझेशनने भरलेली आहे जी पुन्हा एकदा, वेब ऍप्लिकेशन्ससाठी प्रोग्रामिंग भाषा म्हणून C++ वापरण्याच्या कलेची स्थिती बदलते. आणि खेळ

सर्वात महत्त्वाचे म्हणजे, या प्रकाशनासह आम्ही Cheerp च्या परवाना मॉडेलमध्ये महत्त्वपूर्ण बदल करत आहोत. Cheerp 3.0 नुसार, सर्व कोर कंपाइलर घटक आणि लायब्ररी आता Apache 2.0/LLVM परवान्याअंतर्गत परवानाकृत आहेत. हे आमच्या पूर्वीच्या GPLv2/ड्युअल कमर्शियल परवाना मॉडेलपासून मूलगामी निर्गमन दर्शवते, ज्यामुळे Cheerp 3.0 ला कोणत्याही हेतूसाठी, निर्बंधाशिवाय वापरता येते.

चिअरप बद्दल

प्रकल्प तुम्हाला वेब अॅप्लिकेशनमध्ये C/C++ कोड आणि JavaScript एकत्र करण्याची परवानगी देते JavaScript कोडपासून C/C++ मध्ये मूळतः विकसित केलेल्या फंक्शन्समध्ये प्रवेश करण्याची क्षमता आणि C/C++ कोडपासून JavaScript ऑब्जेक्ट्स, JavaScript लायब्ररी, वेब API आणि सर्व DOM वैशिष्ट्ये, तसेच तुम्हाला मिश्रित बिल्ड तयार करण्याची परवानगी देऊन, कोड जो JavaScript आणि भाग WebAssembly वर संकलित करतो. मानक libc आणि libc++ लायब्ररी वापरणाऱ्या बिल्ड प्रकल्पांना समर्थन देते.

एम्स्क्रिप्टेन कंपाइलरच्या तुलनेत, चीर्प अधिक अनुकूल आणि संक्षिप्त WebAssembly इंटरमीडिएट कोड व्युत्पन्न करते (सरासरी, परिणामी फाइल आकार 7% लहान आहेत.)

वैचारिकदृष्ट्या, मतभेद वस्तुस्थितीवर उकळतात साइन अप करा WebAssembly चे ऑब्जेक्ट फॉरमॅट म्हणून वापरले जाते आणि पोस्ट-प्रोसेसिंग स्टेजमध्ये बंधनकारक आणि ऑप्टिमायझेशन करते वेबअसॉबल (wasm-opt). चिरप लायब्ररी आणि ऑब्जेक्ट फाइल्ससाठी मध्यवर्ती प्रतिनिधित्व म्हणून LLVM बाइटकोड वापरते, पोस्ट-प्रोसेसिंगची आवश्यकता न ठेवता LLVM-स्तरीय मेटाडेटा वापरून विस्तृत प्रोजेक्ट-व्यापी ऑप्टिमायझेशनला अनुमती देते.

संबंधित लेख:
Emscripten 3.0, LLVM वापरून WebAssembly साठी एक बिल्ड टूलचेन

तसेच, Cheerp preemptively कोड कार्यान्वित करण्यासाठी PreExecuter ऑप्टिमायझर वापरते कंपाइलच्या वेळी, उदाहरणार्थ, ग्लोबल ऑब्जेक्ट्स इनिशियलाइज करण्यासाठी वापरल्या जाणार्‍या कन्स्ट्रक्टर्सना कॉन्स्टंटमध्ये रूपांतरित करण्यासाठी. याव्यतिरिक्त, PartialExecuter संकलित करताना वापरला जातो, जो फंक्शनच्या पॅरामीटर्सच्या पार्सिंगच्या आधारावर, अंमलबजावणीच्या वेळी वापरला जाणार नाही याची हमी दिलेला कोड काढून टाकतो.

चिरप मेमरीसह गतिमानपणे कार्य करण्यासाठी JavaScript कोड देखील तयार करू शकते. कचरा गोळा करणाऱ्याने झाकलेले. विशेषतः, टाइप केलेल्या अॅरेसह पारंपारिक अॅड्रेस स्पेसचे अनुकरण करण्याऐवजी, Cheerp C++ ऑब्जेक्ट्सवरून JavaScript ऑब्जेक्ट्सवर थेट मॅपिंग प्रदान करते, ज्यामुळे मेमरी वापर कमी होतो कारण JavaScript गार्बेज कलेक्टरमध्ये न वापरलेल्या वस्तू काढून टाकण्याची क्षमता असते. कार्यप्रदर्शन सुधारण्यासाठी, व्युत्पन्न केलेला WebAssembly इंटरमीडिएट कोड डेटा ऑपरेशन्सच्या समांतरीकरणासाठी SIMD विस्तार वापरतो.

एम्बेडेड वेब अॅप्लिकेशन्स तयार करण्यासाठी चिअरपचा वापर प्लॅटफॉर्म म्हणून केला जाऊ शकतो C++ मध्ये क्लायंट/सर्व्हर. सध्याच्या व्यवहारात, JavaScript मध्ये लिहिलेले वेगळे ब्राउझर-आधारित फ्रंट-एंड आणि PHP, Python, Ruby किंवा JavaScript/Node.js मध्ये लिहिलेले वेगळे बॅक-एंड विकसित करणे सामान्य आहे.

Cheerp संपूर्ण C++ वेब अॅप्लिकेशन्स तयार करण्याचे साधन पुरवते जे एकाच कोड बेसमध्ये बॅकएंड आणि फ्रंटएंड दोन्हीला सपोर्ट करते.

बिल्ड प्रक्रियेदरम्यान, सर्व्हर-साइड मूळ कोडमध्ये संकलित केला जातो आणि इंटरफेस JavaScript प्रतिनिधित्वामध्ये रूपांतरित केला जातो. JavaScript मध्ये रूपांतरित केलेल्या सर्व प्रकल्प घटकांचे डीबगिंग, स्त्रोत नकाशा तंत्रज्ञानाचा वापर करून C++ स्त्रोत मजकूर वापरून केले जाते.

शेवटी, आपल्याला त्याबद्दल अधिक जाणून घेण्यात स्वारस्य असल्यास, आपण मधील तपशील तपासू शकता खालील दुवा.

कंपाइलर कोड LLVM आणि Clang विकासांवर आधारित आहे आणि कार्यप्रदर्शन सुधारण्यासाठी आणि संकलित आउटपुटचा आकार कमी करण्यासाठी अतिरिक्त ऑप्टिमायझेशन समाविष्ट करते.


आपली टिप्पणी द्या

आपला ई-मेल पत्ता प्रकाशित केला जाणार नाही. आवश्यक फील्ड चिन्हांकित केले आहेत *

*

*

  1. डेटासाठी जबाबदार: AB इंटरनेट नेटवर्क 2008 SL
  2. डेटाचा उद्देशः नियंत्रण स्पॅम, टिप्पणी व्यवस्थापन.
  3. कायदे: आपली संमती
  4. डेटा संप्रेषण: कायदेशीर बंधन वगळता डेटा तृतीय पक्षास कळविला जाणार नाही.
  5. डेटा संग्रहण: ओकेन्टस नेटवर्क (EU) द्वारा होस्ट केलेला डेटाबेस
  6. अधिकारः कोणत्याही वेळी आपण आपली माहिती मर्यादित, पुनर्प्राप्त आणि हटवू शकता.