Infrarust v2.0.0-beta.1 - WASM Plugins
The headline of this beta is the plugin system. You can now write plugins in WebAssembly and load them into Infrarust. It's still rough around the edges, but the whole pipeline is there and working.
🧩 WASM Plugins
Plugins compile to WebAssembly (wasm32-wasip2) and run sandboxed inside the proxy. The SDK is Rust for now (infrarust-plugin-sdk), but any language that can target wasm32-wasip2 can technically be loaded.
What a plugin can do:
- React to events (lifecycle, connection, chat...). Some events can be denied, redirected or rewritten
- Register its own proxy commands with argument parsing
- Read and modify Minecraft packets through a codec filter
- Hold players in a Limbo (void world with titles/messages) while a backend boots or during auth
- Talk to the proxy: player registry, server manager, config and the ban system
Capabilities are opt-in. A plugin only gets ban, server-manage, codec-filter, limbo or raw-packet if you declare it in the config. The rest (events, commands, scheduler, config read) is on by default.
This is a beta, so expect some breakage. The plugin API is not frozen yet (contract is at 0.2.3) and will still change. Plugins run single-threaded and synchronous, there's no async runtime inside them yet. Transport filters stay native-only, and the Virtual Backend is planned but not in yet.
If you start building now, I'd really like your feedback, that's exactly what the beta is for :catJAM: (rip my nitro might add emoji here too)
📥 Release: https://github.com/Shadowner/Infrarust/releases/tag/v2.0.0-beta.1
📖 Docs: https://infrarust.dev/plugins/wasm/