Согласно проведенному недавно опросу, чаще всего для создания приложений WebAssembly используется язык программирования Rust. При этом популярность WebAssembly, языка программирования низкого уровня для стековой виртуальной машины, спроектированного как портативная цель компиляции для высокоуровневых языков, продолжает расти.
Эти и другие выводы были представлены в отчете State of WebAssembly 2022, который был опубликован 20 июня по итогам опроса 299 разработчиков приложений консалтинговой компанией Scott Logic. При ответе на вопрос, какой язык используется для разработки на WebAssembly, победителем оказался Rust – 45% респондентов сообщили, что обращаются к Rust регулярно или время от времени. По итогам первого опроса, проводившегося в прошлом году, лидирующие позиции также занимал Rust.
В отчете отмечается тесная взаимосвязь между Rust и WebAssembly (Wasm), поскольку большинство приложений Wasm написано на Rust. На втором месте после Rust оказался язык JavaScript. При этом в код Wasm компилировались либо сама программа на JavaScript, либо движок JavaScript. Наивысшие темпы роста в очередном опросе продемонстрировали Blazor и Python, а наибольшее относительное сокращение – AssemblyScript.
О частом использовании WebAssembly сообщили 67% опрошенных, в то время как в прошлом году таковых насчитывалось 47%. Среди других результатов можно выделить следующие:
— Чаще всего Wasm применяется для разработки веб-приложений (на это указали почти 70% респондентов). Далее следуют бессерверная разработка (35%), контейнеризация (25%), среда расширения (23%) и Интернет вещей (10%). Все результаты округлены.
— Лучшими исполняемыми средами для WebAssembly названы Wasmtime, Wasmer и Wasm3.
— Наиболее востребованными функциями Wasm в ближайшей перспективе должны стать интерфейсы API, не имеющие отношения к браузерам, улучшенная поддержка отладки и улучшенные инструменты сборки.
— Предложения WASI (WebAssembly System Interface), сильнее всего интересующие респондентов, связаны с вводом-выводом, сокетами, файловой системой, потоками и HTTP.