2017-04-21 8 views
33

वेब असेंबली (या wasm) में कौन सी भाषाएं संकलित की जा सकती हैं?वेब असेंबली (या wasm) में कौन सी भाषाएं संकलित की जा सकती हैं?

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

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

उत्तर

5

टीएवीएम का उपयोग WebAssembly पर जेवीएम बाइटकोड को पार करने के लिए किया जा सकता है। आप प्रोजेक्ट होमपेज को https://github.com/konsoletyper/teavm पर चेकआउट कर सकते हैं।

इसके मूल पर टीएवीएम जेएस और वेबसाइस्प्लर्स में जेवीएम बाइटकोड को पारदर्शी कर सकता है। WebAssembly समर्थन प्रारंभिक चरण में है, लेकिन जीडब्ल्यूटी, टीएवीएम (जेएस आउटपुट) और टीएवीएम (डब्ल्यूएएसएम आउटपुट) के साथ एक साधारण जेबॉक्स 2 डी सिमुलेशन के प्रदर्शन की तुलना करने के लिए डेमो उपलब्ध हैं, जो काफी प्रभावशाली हैं।

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

8

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

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

+2

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

27

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

  • C/C++ - फिर using Emscripten under-the-hood, हालांकि recently they have moved to LLVM - EmScripten के माध्यम से बहुत अच्छा (उत्पादन के लिए तैयार) समर्थन, या अन्य minimal LLVM-based toolchains
  • जंग है।
  • सी # - Blazor के माध्यम से प्रयोगात्मक समर्थन है, हालांकि वर्तमान में इसे WASM में .NET रनटाइम एम्बेड करने की आवश्यकता है।
  • टाइपप्रति - AssemblyScript के माध्यम से, अत्यधिक प्रयोगात्मक
  • जावा - के माध्यम से TeaVM या Bytecoder
  • Haxe - just announced support
  • Kotlin - Kotlin/मूल निवासी 0।WebAssembly के 4 gained experimental support और TeaVM

वहाँ निम्न भाषाओं के लिए प्रगति में सक्रिय काम है के माध्यम से:

  • जाओ - this tracking issue पर हाल ही में अद्यतन के साथ।

जावास्क्रिप्ट के संबंध में, वेबएस्क्रिप्ट्स एक दृढ़ता से टाइप की गई असेंबली भाषा के रूप में समर्थन प्राप्त करने की संभावना नहीं है।

संबंधित मुद्दे

 संबंधित मुद्दे