WebAssembly - это бинарный язык, который намерен, помимо прочих целей, разрушить барьеры между языками программирования.
В настоящее время достаточно просто скомпилировать код C ++ в WebAsm и включить его вКод JavaScriptЕсть даже предложение и Webpack polyfill , чтобы сделать его так же просто, как import { foo } from 'bar.wasm'
.
Более того, WebAssembly поддерживает файлы wasm, которые перечисляют свои собственные зависимости, вформа деклараций импорта.
Существует ли какой-либо инструмент для сборки polyfill, который позволяет пользователям включать модуль webasm в модуль компиляции C ++ в процессе его компиляции в wasm?Например, допустим, у меня есть модуль Rust, который я хочу использовать внутри модуля C ++, оба из которых я компилирую в wasm.Есть ли способ написать код, эквивалентный этому:
#include "node_modules/some_rust_utility/index.wasm"
int someCppFunction(const std::string& data) {
return some_rust_utility::foobar(data.c_str());
}
и скомпилировать его или нет, в зависимости от того, определен ли foobar
с совпадающим типом в some_rust_utility
?
Примечание: я ожидаю, что ответ на этот вопрос может со временем измениться, когда появится поддержка WebAssembly.Если вы видите этот вопрос спустя годы и ответ изменился, не стесняйтесь добавлять обновление.