Over the past weeks, I've had the pleasure of diving back into the world of WebAssembly. I had some opportunities to get the taste of WASM at Asquera years ago, but I never got a serious chance to dig in. That time seems to have come though, as Vector is adding WASM plugin support. Thankfully, it would seem that WASM is a bit like a fine wine, and gets better with age. Today, let's do some wine tasting.

In this post we'll take a look at WASM outside of the browser where it's solving real world problems. We'll dig into some industrial use cases, then we'll explore the Lucet WASM compiler & runtime, how to tame the Foreign Function Interface, and what an ergonomic API looks like for both sides.

https://images.unsplash.com/photo-1549880338-65ddcdfd017b?ixlib=rb-1.2.1&q=85&fm=jpg&crop=entropy&cs=srgb

The frontier is everywhere

Vector isn't some laboratory research project or some toy experiment. It's a practical tool for real people to use to solve real problems. It's designed to be simple, practical, and adaptable.

That means, of course, we had a plugin/module/extension system to it.

There are a number of reasons for Vector to need to be extensible:

As an observability router, we have some technical constraints, desires, and expectations:

we measured a roughly 4 μs overhead