WebAssembly (Wasm) को किन भाषाओं में संकलित किया जा सकता है?


116

WebAssembly (Wasm) को किन भाषाओं में संकलित किया जा सकता है?

मेरा मानना ​​है कि अभी C, C ++, और Rust (प्रायोगिक) को WebAssembly के साथ संकलित किया जा सकता है, जो llvm संकलक बैकएंड के साथ, जावा, स्विफ्ट और C # जैसी भाषाओं के साथ वर्तमान में समर्थित नहीं है, लेकिन भविष्य के विकास के लिए संभावित उम्मीदवार हैं।

मुझे नहीं लगता कि जावास्क्रिप्ट को वास में संकलित किया जा सकता है। https://github.com/WebAssembly/design/issues/219


1
बस इसे पढ़ने वाले किसी भी व्यक्ति के लिए एक नोट के रूप में, मैंने हाल ही में ई -स्क्रिप्ट के माध्यम से C और C ++ को WASM में उपयोग किया है और यह बहुत अच्छी तरह से काम करता है।
कॉफीटेबल एस्प्रेसो

जवाबों:


121

WebAssembly समर्थन कभी विकसित हो रहा है। अभी यह निम्नलिखित भाषाओं द्वारा समर्थित है:

वाणिज्यिक समाधान भी हैं:

जावास्क्रिप्ट के बारे में, इसे समर्थन प्राप्त करने की संभावना नहीं है क्योंकि WebAssembly एक सांख्यिकीय रूप से टाइप की गई विधानसभा भाषा है।

कई और भी अस्पष्ट / शौक़ीन भाषाएँ हैं जो WebAssembly का समर्थन करती हैं। अधिक विस्तृत विवरण पर पाया जा सकता है और अधिक भयानक WebAssembly भाषाएँ सूची।


1
वाणिज्यिक सी # / जावा / स्विफ्ट कार्यान्वयन: blogs.remobjects.com/2018/01/12/… । इसके अलावा: github.com/appcypher/awesome-wasm-langs
एंड्रियास रॉसबर्ग

अच्छा बिंदु - मैंने रेमोबजेक्ट्स को एक श्रेणी के रूप में जोड़ा है क्योंकि यह बहु-भाषा और वाणिज्यिक है
कोलिन

1
लेकिन पायथन गतिशील रूप से टाइप किया गया है!
रिचर्ड

17

Https://github.com/mbasso/awesome-wasm#compilers देखें - अभी के लिए यह केवल C / C ++ है, अन्य प्रयोगात्मक हैं, लेकिन "प्रयोगात्मक" भाग की मात्रा बढ़ती है।

वर्तमान में WebAssembly सिर्फ फ्लैट लीनियर मेमोरी का समर्थन करता है। यह C / C ++ / Rust और कई अन्य भाषाओं के लिए उपयुक्त है, लेकिन अधिकांश लोकप्रिय आधुनिक भाषाओं को चलाने के लिए कचरा संग्रहकर्ता की आवश्यकता होती है। वह WebAssembly की "पोस्ट-एमवीपी सुविधा" है ( https://github.com/WebAssembly/design/issues/1079 देखें )। अभी के लिए एकमात्र विकल्प कुछ कस्टम कोड के साथ wasm के अंदर कचरा कलेक्टर को लागू करना है।


2
यह जोड़ने योग्य है कि asm.js को wasm और asm.js पर आसानी से संकलित किया जा सकता है । कहा कि, जावास्क्रिप्ट को संकलित करना अधिक कठिन होगा क्योंकि इसमें आमतौर पर तत्काल उपलब्ध प्रासंगिक जानकारी का अभाव होता है।
क्यूलेक्स

11

TeaVM का उपयोग JVM bytecode को WebAssembly में बदलने के लिए किया जा सकता है। आप https://github.com/konsoletyper/teavm पर प्रोजेक्ट होमपेज देख सकते हैं ।

इसके मूल में TeaVM JVM bytecode को JS और WebAssembly के लिए प्रेषित कर सकता है। WebAssembly समर्थन एक प्रारंभिक चरण में है, लेकिन GWT, TeaVM (JS आउटपुट) और TeaVM (WASM आउटपुट) के साथ एक साधारण JBox2D सिमुलेशन के प्रदर्शन की तुलना करने के लिए डेमो उपलब्ध हैं, जो काफी प्रभावशाली हैं।

कृपया ध्यान दें कि WebAssembly का वर्तमान में DOM या अन्य JavaScript API तक कोई सीधी पहुँच नहीं है। वर्तमान एमवीपी में भी अपारदर्शी डेटाटिप्स या यहां तक ​​कि जीसी के लिए कोई समर्थन नहीं है। हालांकि, जेएस से डब्ल्यूएएसएम तक अप / डाउनकॉल करना संभव है और कुछ जेएस ट्रिकरी का उपयोग करके वापस, जैसा कि उल्लिखित डेमो में देखा गया है।


8

यह रेपो

उन भाषाओं की एक सूची सम्‍मिलित करता है जो वर्तमान में WebAssembly (wasm) में अपने VMs के लिए संकलित हैं या हैं

विशेषताएं:

  • वर्तमान में प्रत्येक भाषा कितनी परिपक्व है, यह दिखाने के लिए इमोजी का उपयोग करता है
  • प्रत्येक भाषा के नाम और विकल्प के लिए लिंक प्रदान करता है

3
"प्रत्येक भाषा वर्तमान में कितनी परिपक्व है, यह दिखाने के लिए इमोजीज़ का उपयोग करता है" जो कि एक-दो बार खुद को पढ़ता है ... यह एक बहुत गहरा कथन है।
ipatch

हाँ, सरल सहज स्पष्टीकरण मूर्खतापूर्ण भाव के साथ युग्मित।
जसोनलोनहार्ड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.