Currently in an experimental stage, JSPI should not be used in production applications yet, the developers said. Eventually, it will become a standard, for implementation across major browsers, they said.
Introduced in a V8 blog post on January 19, JSPI bridges synchronous WebAssembly applications and asynchronous web APIs.
This is done by suspending the application when it issues a synchronous API call and resuming when the asynchronous I/O operation is concluded. And JSPI does this with very few changes to the application itself.
Many modern APIs on the web work asynchronously by splitting functionality into the initiation and resolution of an operation.
When the asynchronous API completes, the WebAssembly application is resumed so it can process results of the API call.
Working with Promises is difficult, particularly with WebAssembly, because direct manipulation of Promises in WebAssembly is not possible, the developers said. JSPI allows developers to craft WebAssembly applications using synchronous APIs and still participate in the web’s asynchronous ecosystem.
Use of the Chrome Canary channel is recommended. JSPI cannot yet be enabled for end users.
WebAssembly has been hailed as a breakthrough in web application performance. The binary instruction format enables many different programming languages including C/C++, C#, and Rust to be used for web programming.