На каких языках можно скомпилировать WebAssembly (Wasm)?
Я считаю, что прямо сейчас C, C ++ и Rust (экспериментальные) могут быть скомпилированы в WebAssembly с бэкэндом компилятора llvm, с такими языками, как Java, Swift и C #, которые в настоящее время не поддерживаются, но являются возможными кандидатами для будущей разработки.
Я не верю, что JavaScript можно скомпилировать в Wasm. https://github.com/WebAssembly/design/issues/219
llvm
programming-languages
webassembly
Джордан Стюарт
источник
источник
Ответы:
Поддержка WebAssembly постоянно развивается. Сейчас он поддерживается на следующих языках:
D - подмножество D "betterC" может быть скомпилировано в WebAssembly через LDC (компилятор LLVM).
TypeScript - через AssemblyScript , очень экспериментальный, но набирающий обороты.
Также существуют коммерческие решения:
Что касается JavaScript, то вряд ли он получит поддержку, поскольку WebAssembly - это статически типизированный язык ассемблера.
Существуют также различные более малоизвестные / любительские языки, поддерживающие WebAssembly. Более подробную информацию можно найти в более исчерпывающем списке языков Awesome WebAssembly .
источник
См. Https://github.com/mbasso/awesome-wasm#compilers - пока только C / C ++, другие экспериментальные, но количество «экспериментальной» части растет.
В настоящее время WebAssembly поддерживает только плоскую линейную память. Это подходит для C / C ++ / Rust и многих других языков, но для работы большинства популярных современных языков требуется сборщик мусора. Это «пост-MVP-функция» WebAssembly (см. Https://github.com/WebAssembly/design/issues/1079 ). На данный момент единственный вариант - реализовать сборщик мусора внутри wasm с помощью некоторого настраиваемого кода.
источник
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. Тем не менее, можно выполнять вызовы вверх / вниз с JS на WASM и обратно, используя некоторые уловки JS, как показано в упомянутых демонстрациях.
источник
Это репо
Содержит список языков, которые в настоящее время компилируются или имеют свои виртуальные машины в WebAssembly (wasm)
Особенности:
источник