WebAssembly Today ✍️ #19
Updates & commentaries on WebAssembly related technologies, including Rust, serverless, cloud, blockchain, and AI. Focused on the server-side.
Editorial: WebAssembly continues to rise with more languages, more tools, and more use cases.
Emscripten 2.0.4 was released this week. New features:
First release with Bazel support.
freeby default. If you need access to them from JS, you must export them manually using
-s EXPORTED_FUNCTIONS=['_malloc', ..].
Stop running Binaryen optimizations in
-O1. This makes
-O1builds a little larger but they compile a lot faster, which makes more sense in a "compromise" build (in between
-O0and higher optimization levels suitable for release builds).
ERROR_ON_WASM_CHANGES_AFTER_LINKoption that errors if we need to do any work in
wasm-optafter linking. This can verify the link is maximally fast and also does no DWARF rewriting.
Blazor recently published anew Release Candidate (RC) for .NET 5. From the performance benchmarks, Blazor WebAssembly in .NET 5 is 2-3x faster than before. That is due to optimizations in the core framework libraries and improvements to the .NET IL interpreter. The Blazor achieved such performance without using AOT optimization.
Do you remember the project Video-Transcoder we wrote about in the past? The project has recently rebranded as modfy.video. It also reached a stable release. Its new features and improvements since our last story include the following.
Much Lower Data Consumption(Max 25 MB)
Support video from any format
Complete Modular Design with the CLUI
Add documentation and API reference.
The Line team recently shared their experience with server-side WebAssembly. This idea is to support user supplied Decaton processors. WebAssembly supports multiple languages and allows the user code to run safely.
The first part of this blog post introduced how to integrate WebAssembly runtime into a Java application.The second part of this blog post discussed how to extend WASI APIs and Rust’s standard library to add support for sockets.
The author said, “In terms of WebAssembly applied outside of browsers, I think it has a very promising future.”
Developer Peter Salomonsen explained why he wants WebAssembly to stay focused as a compute engine instead of providing access to the entire system (eg UI) -- WebAssembly's value proposition is security first. He also raised a good point about using WebAssembly on the server side. It allows code reuse between browser and server.
Alex Dixon discussed how he ported a game engine to WebAssembly to run WebGL games in browsers.
Low-Level Academy 👩🎓
The Low-Level academy will teach systems programming course with Rust and WebAssembly. It starts with network programming. You will learn how to work with the UDP and TCP internet protocols.
Google's Martina Kraus shares her slides at the WebAssembly Live conference on how to optimize WebAssembly bytecode for size and startup time.
The first chart of WebAssembly In Action is now freely available. Check it out to learn what WebAssembly is and how it works.
To grow Rust and increase adoption among mainstream developers, we must lower the barriers to learn and use Rust. This article gives some suggestions.
Install experience is good - could it be better?
Documentation is good - could it be better? More easily discoverable? For example, is the excellent Rust cookbook widely known? Could it be updated with the latest recommendations for error handling? Translated into more languages?
Tutorials and learning materials are good - could they be better? Could there be more video tutorials or tutorials specific to a certain area like embedded programming?
Compiler errors are good - could they be better, like this recent PR shows?
The language war between Go and Rust is just warming up. The good news is that WebAssembly is language agnostic!
Dropbox open sourced the
pb-jelly，a protobuf code generation frame work for Rust. It is currently used in several parts of Dropbox, including Sync Engine, and the Magic Pocket.
Bevy 0.2 is released. We have written about this refreshingly simple data-driven game engine in the previous issues.
Async task system. The CPU usage wins have been huge.
Support initial Web platform using WebAssembly.
Rewrite transform system
improve Bevy ECS performance
Comparing Rust with Python from ever-changing requirements, including readability, testability, feedback, and toolchain.
This article is informative. We will get a full understanding of serverless from this article. It will tell you
the concept of Serverless,
how to classify Serverless,
the advantage of serverless over virtual machine,
the differences between serverless containers and serverless functions,
how to scale serverless functions.
Enjoyed reading this newsletter? Please subscribe to make sure that you do not miss a future issue. ❤️
This newsletter is a collaborative effort. Don’t forget to leave comments! Suggest topics or projects you would like to see we cover next week via contact at webassembly dot today. Thanks!
Until then, stay safe, stay healthy! 😷