A Plugin System in Rust

My LFX Mentorship with Tremor, written in Rust. I implement a Plugin System using dynamic loading, also investigating alternatives like WebAssembly or eBPF.

Preview image, with the logos of Lua, Wasm, Python, eBPF, and more

1.  Plugins in Rust: The Technologies

Welcome to the “Plugins in Rust” series! During the next months I’ll be involved in a project with Tremor, for which I need to implement a Plugin System. The goal is to maximize modularity and reduce Rust’s wild compilation times. The implementati...

Preview image, with Ferris reading various books and a question mark on top of it

2.  Plugins in Rust: Getting Started

Welcome to the second article of my “Plugins in Rust” series! Here I will try to actually write some simple code of what a plugin system might look like, and try to answer any questions that may arise while doing so. Even though the project is spe...

Preview image, with a diver finding Ferris deep under the water

3.  Plugins in Rust: Diving into Dynamic Loading

In the last article of this series I wrote some simple experiments of plugins both with WebAssembly and dynamic loading. After discarding Wasm for this specific plugin system, I wanted to try to get a more realistic example with dynamic loading an...

Preview image, with the logo of crates.io

4.  Plugins in Rust: Reducing the Pain with Dependencies

Previously in this series, I covered how the plugin system could be implemented from scratch. This is a lot of work if you’re dealing with a relatively large codebase and therefore a complex interface in your plugin system, so let’s see how we can...

Preview image, with two dirty hands being rubbed

5.  Plugins in Rust: Getting our Hands Dirty

Welcome to one of the last articles of this series! Previously, we covered how to use external dependencies to lessen the work necessary to implement our plugin system. Now that we know how to actually get started, we’ll implement it once and for ...

Preview image, with various burritos that contain Ferris inside of them

6.  Plugins in Rust: Wrapping Up

Welcome to the final article of this series! Here I’ll showcase some clean-ups and optimizations I may or may not have performed yet, so that our plugin system can get closer to production. I will also run benchmarks for some of these to ensure th...

Preview image, with multiple stickmen and Ferris partying

7.  [Talk] Rust, the best and worst thing to happen to Tremor

Hello! I’ve recently had the pleasure of giving a talk at this year’s TremorCon. I really enjoy public speaking, so this has been an excellent opportunity to get better at it (let me know your thoughts!). In case you missed it, you can check out t...

Preview image, with Ferris watering plants in a garden and a thief overlooking it from behind a fence

8.  Blindsided by Rust's Subtyping and Variance

Subtyping and variance is a concept that works in the background, making your life easier without you knowing about it. That is, until it starts making your life harder instead. It’s a good idea to know about it, in case you end up being a fool li...