A lightweight WebAssembly runtime that is fast, secure, and standards-compliant - bytecodealliance/wasmtime
A case for why Wasm is neither Web nor Assembly
Memory in WebAssembly is one of the topics that creates confusion for newcomers, particularly for those with experience in languages with memory management features like garbage collection, such as JavaScript, Go, or Java. In this article we explore using memory in WebAssembly in various scenarios - passing JavaScript arrays to Rust and AssemblyScript modules, checking for some basic memory leaks using Valgrind, or exchanging strings between runtimes and modules using Wasmtime.
Wasm 3.0 brought GC and Memory64, hit 5.5% Chrome page loads, and edge computing broke out as Akamai acquired Fermyon.
Cross-compiling to ARM MacOS with Zig is Easy.
From microcontrollers to full-blown Linux systems, Rust has you covered!
You won't believe the outcome
Read the "Extensible Language Support in Zed - Part 1" blog post.
This blog posts shares the results of the third annual State of WebAssembly survey, where we found that Rust and JavaScript usage continues to increase, but there is a growing desire for Zig and Kotlin. The use of wasm as a plugin environment continues to climb, with developers hoping it will deliver of the “write once and run anywhere” promise.
Lin Clark introduces the Bytecode Alliance, and uses Code Cartoon illustrations to share their vision of a WebAssembly ecosystem that is secure by default, fixing cracks in today’s software foundations. ...
Read in Japanese thanks to the folks at POSTD.
Emscripten now supports standalone Wasm files, which do not need JavaScript.
WebAssemblyは今、転換点にあります。今後数年間で、コンテナ化からプラグインシステムやサーバレス・コンピューティング・プラットフォームに至るまで、IT業界全体でWebAssemblyの導入が…
WebAssembly (Wasm) is named to evoke “assembly language” but really it’s more of a portable bytecode format, ran by a virtual machine. There’s multiple independent implementations - V8, SpiderMonkey and JavaScriptCore all have their own, and there’s projects like wasmtime for running outside the browser.
Running WebAssemblies in VS Code for the Web.
WebAssembly has gone through quite a transformation this last year, while the wasm language landscape is slowly shifting, the more notable change is in what people are using WebAssembly for. The use of wasm for serverless, containerisation and as a plug-in technology has leapt considerably, with WebAssembly System Interface (WASI) becoming ever more important.
A few week ago, I finished implementing support for the WebAssembly referencetypes proposal in Wasmtime. Wasmtime is a standalone,outside-the-Web WebAssembly runtime, and the reference types proposal isWebAssembly’s first foray beyond si...
In this episode, we talk to Micah Wylde, Co-founder and CEO of Arroyo, about how they simplified stream processing for data engineers with Rust.
I am currently working on a few projects that involve leveraging WebAssembly (WASM) modules, particularly with WebAssembly System Interface (WASI) support. While WASI is still in its early stages, support has already been added to the Rust compiler and Clang, as well as runtimes such as wasmtime and WAMR. However, getting an environment setup to compile arbitrary C programs to WASM can still be challenging. I recently updated to Clang 17, which was first released as 17.
Developers typically choose between porting the code or dynamic linking to run native code on the JVM. This article examines these approaches, using SQLite as an example, and introduces a third option: Chicory Wasm runtime. This alternative combines the advantages of traditional methods while addressing their limitations, potentially offering a more secure solution to integrate native code.
Today we announce the formation of the Bytecode Alliance, a new industry partnership coming together to forge WebAssembly’s outside-the-browser future by collaborating on implementing standards and proposing new ones. Our founding member...
The WebAssembly (Wasm) ecosystem is transforming. Developers can look forward to a modular, virtualizable, and robust environment for building applications, libraries, and services.We are excited to be working towards this with implement...
Continuing the tradition of a year-end progress report from last year, we are excited to report that this year has also been quite a productive one for the Cranelift project! Cranelift is our optimizing compiler backend that provides the...
Welcome to the Bytecode Alliance
After many months of research, development and QA, Wasmi’s most significant update ever is finally ready for production use. Wasmi is an efficient and versatile WebAssembly (Wasm) interpreter with a focus on embedded environments. It is an excellent choice for plugin systems, cloud hosts and as smart contract execution engine. Wasmi intentionally mirrors the Wasmtime API on a best-effort basis, making it an ideal drop-in replacement or prototyping runtime. Install Wasmi’s CLI tool via cargo install wasmi_cli or use it as library via the wasmi crate.
JavaScript in the browser runs many times faster than it did two decades ago. And that happened because the browser vendors spent that time working on intensive performance optimizations.
As of today, the Wasmtime WebAssembly runtime is now at 1.0! This means that all of us in the Bytecode Alliance agree that it is fully ready to use in production.
Traditionally, microcontrollers are known to be able to run only C code. Firmware developers will usually have an Eclipse-based IDE as well as a custom compiler toolchain to compile the code against the target. This has been changing a lot. For example, MicroPython has become popular recently. RaspberryPi Pico, ExpressIf’s ESP32 are some microcontrollers that have fairly good support for MicroPython. See antirez’s talk32 project, which attempts to improve the MicroPython tooling and developer workflow for ESP32.
In a project I’ve been playing around with recently, we’ve encountered the dilemma where you want to make it easy for users to write their own application logic using the system but at the same time want to keep that logic decoupled from the implementation details of whatever platform the application is running on. If you’ve been programming for any amount of time your immediate reaction is probably “why bother mentioning this, doesn’t it just fall out of good library design?”, and normally I would totally agree with you, except I forgot to mention a couple of important details…
Maxime Chevalier-Boisvert requested resources for learning about fuzzingprogramming language implementations on Twitter:
Notes on what I had to do to get Wasm and Web Workers playing together to let me run some Go code in the browser.
Discussions around memory safety often focus on choice of language, and how the language can provide memory safety guarantees. Unfortunately, choosing a language is a decision made at the start of a project. Migrating an existing C or C++ project to a safer language is much harder than starting a new project in a safe language1. I’m not going to say this is impossible, or that you can’t or shouldn’t migrate existing programs to safer languages. And sometimes people just do things in open-source, and that’s part of the fun of it.
Most WebAssembly tutorials and examples you will find online focus on using it inside the browser in order to accelerate various functionality of a website or web app. However, there is an area where WebAssembly is really powerful but not talked too much about: outside the browser usage scenarios. That is what we’ll focus on in this series of posts.
In part 1 we have learned how to set up WebAssembly VM to run a simple rust program that can add two numbers and print the result to stdout. In part 2 we will go over Debugging and Binary size.
Cross-compiling to ARM MacOS with Zig is Easy.
JavaScript in the browser runs many times faster than it did two decades ago. And that happened because the browser vendors spent that time working on intensive performance optimizations.
How we used WASM and some Go runtime modifications to run deterministic simulation tests against FrostDB
Python bindings for the [Wasmtime project] …
TL,DR: if you’d like to quickly call Rust code from Python, TypeScript or Node.
WebAssembly I ran a demo on WebAssembly at Presentations last Friday. I had to gloss over a number of details given the 5-minute format, so I did an extended version today. As per Lin Clark's...
WebAssembly I was preparing slides on WebAssembly today when I came across Lin Clark's cartoon intros. It's spectacular. I wished it was the first thing I read on the topic; it appears l'esprit de...
Learn how to package your Ruby application into a WebAssembly module and run it right in a web browser. Get Ruby Next without leaving your browser and share your experiments with others simply by sending a link.