WebAssembly (Wasm) için hangi diller derlenebilir?


116

WebAssembly (Wasm) için hangi diller derlenebilir?

Şu anda C, C ++ ve Rust'un (deneysel), llvm derleyici arka ucuyla, Java, Swift ve C # gibi diller şu anda desteklenmiyor, ancak gelecekteki geliştirme için olası adaylar olarak WebAssembly için derlenebileceğine inanıyorum.

JavaScript'in Wasm'a derlenebileceğine inanmıyorum. https://github.com/WebAssembly/design/issues/219


1
Bunu okuyan herkese bir not olarak, son zamanlarda emscripten aracılığıyla WASM için C ve C ++ kullandım ve çok güzel çalışıyor.
CoffeeTableEspresso

Yanıtlar:


121

WebAssembly desteği sürekli gelişiyor. Şu anda aşağıdaki diller tarafından desteklenmektedir:

Ticari çözümler de var:

JavaScript ile ilgili olarak, WebAssembly durağan olarak yazılmış bir assembly dili olduğundan destek alınması olası değildir.

Ayrıca, WebAssembly’ı destekleyen daha belirsiz / meraklı diller de vardır. Daha ayrıntılı Başar WebAssembly Dilleri listesinde daha fazla ayrıntı bulunabilir .


1
Ticari C # / Java / Swift uygulamaları: blogs.remobjects.com/2018/01/12/… . Ayrıca: github.com/appcypher/awesome-wasm-langs
Andreas

İyi bir nokta - Çok dilli ve ticari olduğu için RemObjects'i kendi kategorisi olarak ekledim
ColinE

1
Ancak Python dinamik olarak yazılmıştır!
Richard Eng

17

Bkz. Https://github.com/mbasso/awesome-wasm#compilers - şimdilik yalnızca C / C ++, diğerleri deneysel, ancak "deneysel" bölümün miktarı artıyor.

Şu anda WebAssembly yalnızca düz doğrusal belleği desteklemektedir. Bu, C / C ++ / Rust ve diğer birçok dil için uygundur, ancak çoğu popüler modern dilin çalışması için çöp toplayıcıya ihtiyacı vardır. Bu, WebAssembly'nin "MVP sonrası özelliği" dir (bkz. Https://github.com/WebAssembly/design/issues/1079 ). Şimdilik tek seçenek, bazı özel kodlarla wasm içinde çöp toplayıcı uygulamaktır.


2
Bu asm.js kolayca wasm ve asm.js derlenebilir sözlerine ekledi değer olduğunu javascript. Bununla birlikte, javascript'i derlemek çok daha zordur, çünkü genellikle hemen elde edilebilen bağlamsal bilgi içermez.
Culex

11

TeaVM, JVM bayt kodunu WebAssembly'a aktarmak için kullanılabilir. Proje ana sayfasını https://github.com/konsoletyper/teavm adresinden kontrol edebilirsiniz .

TeaVM, özünde JVM bayt kodunu JS'ye ve WebAssembly'a aktarabilir. WebAssembly desteği erken bir aşamadadır, ancak basit bir JBox2D simülasyonunun performansını oldukça etkileyici olan GWT, TeaVM (JS çıkışı) ve TeaVM (WASM çıkışı) ile karşılaştırmak için demolar mevcuttur.

Lütfen WebAssembly’ın şu anda DOM veya diğer JavaScript API’lerine doğrudan erişimi olmadığını unutmayın. Ayrıca mevcut MVP'de opak veri türleri ve hatta GC için destek yoktur. Bununla birlikte, söz konusu demolarda görüldüğü gibi, JS'den WASM'ye yukarı / aşağı çağrı yapmak ve bazı JS hilelerini kullanarak tekrar geri çağırmak mümkündür.


8

Bu depo

Şu anda sanal makinelerinde derlenen veya WebAssembly (wasm) 'de bulunan dillerin bir listesini içerir

Özellikleri:

  • Her dilin şu anda ne kadar olgun olduğunu göstermek için emojiyi kullanır
  • Her dil proje adlarına ve seçeneklerine bağlantılar sağlar

3
"Her dilin şu anda ne kadar olgun olduğunu göstermek için emojiler kullanıyor" bunu birkaç kez kendinize okuyun ... bu oldukça derin bir ifade.
ipatch

Evet, saçma ifadelerle birleştirilmiş basit sezgisel açıklamalar.
jasonleonhard
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.