Kotlin is a relatively new language, designed and initially released by JetBrains around 10 years ago. It is a JVM language (i.e. uses the same runtime as Java), and was designed to have some of the modern / functional feel of Scala whilst still allowing multi-paradigm development. It has become the language of choice for most Android developers.
This blog post, which is an adaptation of a recent conference talk, tells the story of brining Kotlin to WebAsssembly. It is a fantastic read, I love hearing about what motivates people to take on these projects.
Kotlin/Wasm reached experimental status in early 2023, this post gives an overview of some of the design decisions and implementation details. They also share details of the upcoming WebAssembly proposal that most interest them. Finally, they talk about KoWasm, which brings Kotlin to the server-side via WASI and the Component Model.
Announcing WCGI: WebAssembly + CGI
Common Gateway Interface (CGI) is a simple standard for allowing HTTP servers to invoke executables. It was very popular in the 1990s-2000s as a way to create dynamic web content, where previously most web sites were served as a static HTML pages from the filesystem. WCGI takes a very similar approach, but in this case using wasm modules, rather than native executables, which yields a number of advantages. I do like the simplicity of this approach, the team at Fermyon are also exploring a similar concept with WAGI. If this becomes popular, hopefully a standard will emerge.
How WebAssembly is accelerating new web functionality
Much of the attention WebAssembly has received recently is for non-browser applications (serverless, embedded, plugin runtime), it’s good to see browser-based applications getting a bit of love. This is a relatively short blogpost, but includes a few examples of things that simply wouldn’t have been possible within wasm.
Unexpectedly Useful: A Real World Use Case For WebAssembly System Interface (WASI)
The team at LeaningTech have been concentrating on browser-based wasm applications, as a critical component of their cross-platform framework. They admit to being somewhat skeptical of server-side wasm! This blog post highlights how their opinions have changed, after finding a very useful application of wasm and WASI for the purposes of building font configuration databases.
Online 8086 Emulator
What more can I say, it’s nostalgia time! I have to say, as well as being a fun little emulator, this has a fantastic user experience, I love the little hints and clear instructions.
WebAssembly tail calls
Tail calls are, to quote Wikipedia, “a subroutine call performed as the final action of a procedure”. With a tail call, there is the opportunity to optimise the way a function is executed, replacing recursive calls, which result in additional (and costly) stack frames, with simple jump operations. To support this, the WebAssembly specification has been extended to add a
return_call instruction - with the implementation recently having shipped in V8 / Chrome.