Подтвердить что ты не робот

Какие языки можно скомпилировать в WebAssembly (или wasm)?

Какие языки могут быть скомпилированы для веб-сборки (или wasm)?

Я считаю, что сейчас C, С++ и ржавчина (экспериментальная) могут быть скомпилированы в веб-сборку с использованием компилятора llvm с такими языками, как Java, Swift и С#, которые в настоящее время не поддерживаются, а являются возможными кандидатами на будущую разработку.

Я не верю, что javascript может быть скомпилирован в wasm. https://github.com/WebAssembly/design/issues/219

4b9b3361

Ответ 1

Поддержка WebAssembly постоянно развивается. Прямо сейчас это поддерживается следующими языками:

Есть также коммерческие решения:

Что касается JavaScript, он вряд ли получит поддержку, поскольку WebAssembly - это статически типизированный язык ассемблера.

Существуют также более неясные/увлеченные языки, которые поддерживают WebAssembly. Более подробную информацию можно найти в более исчерпывающем списке языков Awesome WebAssembly.

Ответ 2

См. https://github.com/mbasso/awesome-wasm#compilers - пока это только C/С++, другие экспериментальные, но количество "экспериментальной" части возрастает.

В настоящее время WebAssembly поддерживает только плоскую линейную память. Это подходит для C/С++/Rust и многих других языков, но большинству популярных современных языков нужен сборщик мусора для запуска. Эта функция "после MVP" WebAssembly (см. https://github.com/WebAssembly/design/issues/1079). На данный момент единственным вариантом является реализация сборщика мусора внутри арены с некоторым пользовательским кодом.

Ответ 3

TeaVM может использоваться для пересылки байт-кода JVM в WebAssembly. Вы можете проверить домашнюю страницу проекта на https://github.com/konsoletyper/teavm.

TeaVM по своему ядру может передавать байт-код JVM в JS и WebAssembly. Поддержка WebAssembly находится на ранней стадии, но есть демонстрации для сравнения производительности простого JBox2D-моделирования с GWT, TeaVM (выход JS) и TeaVM (выход WASM), которые весьма впечатляют.

Обратите внимание, что WebAssembly в настоящее время не имеет прямого доступа к DOM или другим API-интерфейсам JavaScript. Также в текущем MVP нет поддержки непрозрачных типов данных или даже GC. Тем не менее, можно сделать up/downcalls от JS до WASM и вернуться снова, используя некоторые трюки JS, как видно из упомянутых демонстраций.

Ответ 4

Это репо

Содержит список языков, которые в настоящее время компилируются или имеют свои виртуальные машины в WebAssembly (wasm)

Особенности:

  • Использует смайлики, чтобы показать, насколько зрелым является каждый язык
  • Предоставляет ссылки на названия и параметры проекта для каждого языка.