API Google V8 объединяет WebAssembly и асинхронный Интернет

автор vadim


Разработчики движка Google V8 JavaScript/WebAssembly представили API JavaScript Promise Integration (JSPI), позволяющий приложениям WebAssembly, предполагающим синхронный доступ к внешним функциям, плавно функционировать в асинхронных средах.

По словам разработчиков, в настоящее время JSPI находится на экспериментальной стадии и не должен использоваться в производственных приложениях. По их словам, в конечном итоге он станет стандартом для реализации в основных браузерах.

Представленный в блоге V8 от 19 января, JSPI объединяет синхронные приложения WebAssembly и асинхронные веб-API. Это делается путем приостановки приложения, когда оно выдает синхронный вызов API, и возобновления работы, когда асинхронная операция ввода-вывода завершена. И JSPI делает это с очень небольшими изменениями в самом приложении.

Многие современные API в Интернете работают асинхронно, разделяя функциональность на инициирование и разрешение операции. JSPI перехватывает обещание JavaScript, возвращенное из асинхронного вызова API, приостанавливая основную логику приложения WebAssembly и возвращая обещание из экспорта, используемого для входа в приложение WebAssembly. Когда асинхронный API завершается, приложение WebAssembly возобновляет работу, чтобы оно могло обрабатывать результаты вызова API.

По словам разработчиков, работать с промисами сложно, особенно с WebAssembly, поскольку прямое манипулирование промисами в WebAssembly невозможно. JSPI позволяет разработчикам создавать приложения WebAssembly с использованием синхронных API и при этом участвовать в асинхронной экосистеме Интернета.

JSPI разрабатывается для архитектур Intel и ARM64. Он доступен для Linux, Windows, macOS и ChromeOS. Разработчики могут протестировать JSPI локально, перейдя на chrome://flags в Chrome, выполнив поиск «Experimental WebAssembly JavaScript Promise Integration (JSPI)» и установив флажок. Рекомендуется использовать канал Chrome Canary. JSPI пока нельзя включить для конечных пользователей.

WebAssembly был провозглашен прорывом в производительности веб-приложений. Двоичный формат инструкций позволяет использовать множество различных языков программирования, включая C/C++, C# и Rust, для веб-программирования.

Related Posts

Оставить комментарий