A Workaround to WebAssembly’s Endpoint Compatibility Issues?
A new WebAssembly player Loophole Labs has joined the WebAssembly module provider fold with its open source platform Scale. Most recently, it announced during KubeCon + CloudNativeCon support for deploying WebAssembly functions to the cloud as well as serverless environments.
Scale’s creators also say Scale’s Signature technology offers a workaround around endpoint-compatibility issues ahead of when — if ever — component modules are standardized. Eventually, a common component standard would allow — in theory — code and applications running in a Wasm module to be deployed across different and various endpoints, including edge devices and servers. This would be done without the hassle of specifying interfaces and painstakingly reading memory across module boundaries for higher-level types, Loophole Labs says. “Better higher-level, non-serializing interfaces would allow for much less tedious configuration work, and more reusability and even less host dependence,” Trezy Who, a principal software engineer at the company, told The New Stack during KubeCon+CloudNativeCon. But until that day happens, Loophole Labs says Scale’s Signature offers a workaround before a standard component model for deployment of Wasm modules beyond WebAssembly’s current limitations beyond the browser and backend (more about this below) is developed.
Scale Signatures help to ensure compatibility of the endpoints where applications and code are deployed within a Scale module. Signatures are used with Scale Functions to help define the inputs and outputs of a function using declarative syntax, according to Scale’s documentation.
Fast and Easy
The startup is also touting what it says are impressive benchmarks that are achieved measured by runtime performance and latency specs for the deployment of application and code within Scale WebAssembly modules.
Loophole Labs is attempting to capitalize on WebAssemby’s key concepts and strengths: For developers to be able to create applications that are loaded into a WebAssembly module and are deployed without the developer having to worry about configuring their applications or code for the Wasm module or for deployment across any environment or device that is able to process a CPU instruction set. What’s running underneath the hood should not be a concern for a developer working with a Wasm module, security features notwithstanding, since the code inside a Wasm module remains in a closed loop or in a so-called sandbox.
“Our goal is to turn Wasm into the default target development environment,” Who said.“In order to do that, we want to abstract away WebAssembly so that all anybody has to think about is if you’re going to build an application write the code and you don’t worry about the Wasm module.”
Loophole Labs’ creators say it takes about “20 seconds” to write, build and begin running a Scale module with the Scale CLI with the curl command. This means the code running in the Scale Wasm module is compiled and running locally within that 20-second time frame.
WebAssembly-powered Scale function can process hundreds of thousands of requests per second with ~30ms latencies from different endpoints worldwide, the company says. The benchmarks ran on a 48-Core Ryzen CPU with 192GB of RAM using 16KB payloads for five minutes reproducible with this GitHub repository, the company says.
The low latency specs make a good case for relying on the Scale Wasm module versus a container, in addition to the security benefits of deploying applications and code in a closed environment, Shivansh Vij, CEO and founder of Loophole Labs, told The New Stack during KubeCon+CloudNativeCon.
“Often overlooked, many people do not realize that I can ship applications anywhere in the world much faster and cheaper than it would be possible with a container,” Vij said.
While — like all Wasm module providers — Loophole Labs says Scale should eventually be polyglot to incorporate all languages that WebAssembly is designed to support, the Scale presently offers support for Go and Rust, with runtimes for Go and TypeScript.