Pull to refresh

Mozilla собирается использовать WASI для всех устройств, компьютеров и операционных систем

Reading time 3 min
Views 7.3K
Original author: Thomas Claburn

Всем привет! На связи TestMace и мы продолжаем знакомить вас с самыми горячими новостями из мира JavaScript. На очереди перевод статьи о WASI — технологии, которая позволит использовать WebAssembly вне браузеров


Один формат, чтоб править всеми



Компания Mozilla на этой неделе представила проект под названием WASI (WebAssembly System Interface), призванный стандартизировать взаимодействие WebAssembly-кода с операционной системой. Если проект окажется успешным, он будет выполнять те же функции, что и виртуальная машина Oracle Java, но гораздо эффективнее и с расширенным функционалом.


WebAssembly (WASM) — это бинарный формат инструкций для виртуальной машины, который может выполняться на различных аппаратных архитектурах. Код, написанный на многих языках вроде C/C++, Go, Rust может быть скомпилирован в WASM-код.


Многие веб-браузеры ввели поддержку WebAssembly, но до этого момента не существовало стандарта, позволяющего работать с ним вне браузера. А теперь появился WASI.
"Необходим способ взаимодействия кода с системой за пределами браузера, то есть системный интерфейс", — объяснил разработчик компании Mozilla Лин Кларк в этом посте блога Mozilla Hacks. "У платформы WebAssembly такого способа пока нет".


WASM+WASI


С помощью WASI WASM-код может быть запущен в браузере или любой другой совместимой среде, что предоставляет возможность кроссплатформенной разработки, независимой от языка. В то время как переносимый интерфейс операционных систем (POSIX) направлен на обеспечение переносимости исходного кода программ между UNIX-подобными операционными системами, WASI предназначен для поддержки совместимости скомпилированных бинарных файлов на разных устройствах и операционных системах. Стандарт предоставляет универсальную среду выполнения, скорость работы которой близка к нативной.


Виртуальная машина Java (JVM) делает всё то же самое, но для запуска Java-кода в браузере необходим плагин. Несмотря на то, что гибкость языка, подобная предлагаемой платформой WebAssembly, может быть достигнута в Java с помощью GraalVM, экосистема Java всё ещё находится в тени из-за событий, связанных с претензиями компании Oracle по нарушению их интеллектуальной собственности.


Формат WASM, обеспечивая безопасность доступа к памяти и удобную валидацию, имеет преимущество над Java-апплетами по части безопасности, хотя и может подвергаться атакам, направленным на изменение изначального потока управления программой. А ещё он отлично ладит с языками C/C++ и Rust.


Лидер команды, занимающейся WebAssembly в компании Mozilla, Тилль Шнайдерайт объясняет разницу между WebAssembly и Java в Твиттере следующим образом: "WebAssembly был спроектирован чтобы масштабироваться с миниатюрных устройств на огромные группы серверов или CDN. Формат куда более независим от языка, чем Java, да и реализация куда менее требовательна к ресурсам".


Если вам еще не очевидны потенциальные преимущества WASI, то вот что сказал о нём один из создателей Docker Соломон Хайкс: "Если бы WASM+WASI существовали в 2008, нам и не пришло бы в голову создавать Docker. WebAssembly на стороне сервера — за этим будущее вычислений. Нам так не хватало стандартизированного системного интерфейса. Надеюсь, WASI решит эту проблему!"


На этой волне оптимизма компания Fastly в четверг выпустила Lucet — нативный компилятор и среду для выполнения WASM-кода WebAssembly в облачных средах. Он дополняет Mozilla Wasmtime — среду выполнения WASM-кода за пределами браузера.


Конечно, WASI ещё далек от идеала. WebAssembly также было бы неплохо подвергнуть дальнейшей доработке, например, добавить возможность получения доступа к DOM браузера. Хотя разработчики уже отлично постарались, предоставив единый платформонезависимый бинарный формат. А пока желаю вам удачного опыта с Java.

Tags:
Hubs:
+16
Comments 10
Comments Comments 10

Articles