WasmEdge 0.12.0 and 0.12.1 are released. The two releases bring a host of new features, optimizations, and bug fixes that further enhance the performance, security, and versatility of WasmEdge.
Key features:
- New plugin system makes it easy for community to add features to WasmEdge
- New Wasm APIs for AI, observability and networking through plugins
- Advanced socket networking
- Better embedding through improved host SDKs
- Performance and compatibility enhancements
New plugin system
A WasmEdge plugin C API is introduced in WasmEdge 0.12.0. The WasmEdge plugin C API provides an easy way for the community to add, manage and package host functions into the runtime. All host capabilities, including WASI itself, are now plugins in WasmEdge. That means you can even swap in a new WASI implementation (eg for a real-time OS).
You can now write plugins in C, C++ and Rust! Now we have Tensorflow Lite plugin in C++, PyTorch plugin in C++, OpenVINO plugin in C++, ebpf plugin in C++, Rustls plugin in Rust.
Those plugins will be compatible with the component model making them future proof!
New Wasm APIs for AI, observability and networking through plugins
Through the new WasmEdge plugins, you can build Wasm apps for AI, observability and networking with new Wasm APIs.
- WasmEdge’s Tensorflow Lite plugin enables lightweight (1/10 the size of Linux containers) and fast (native GPU) AI inference apps for Tensorflow Lite models. See docs here.
- WasmEdge’s PyTorch plugin enables lightweight (1/10 the size of Linux containers) and fast (native GPU) AI inference apps for PyTorch models. See docs here.
- WasmEdge’s eBPF plugin enables developers to create secure and containerized eBPF tools and controllers in Kubernetes environments. See an ongoing doc PR here.
- WasmEdge’s Rustls plugin facilitates the creation and execution of HTTP services in WasmEdge, enabling seamless integration with the existing web ecosystem. Follow the tutorial to create a HTTP service in Rust.
These plugins, along with the support for other libraries like zlib, OpenCV, tesseract, and FFMPEG, provide developers with a comprehensive toolset for building complex WasmEdge applications, including those involving AI and multimedia processing such as Mediapipe on WasmEdge.
Advanced socket networking
WasmEdge sockets API is refactored in 0.12.1 to be compatible with the much more limited WASI socket proposal. Now you can run .net
program in WasmEdge. WasmEdge sockets have become a super set of WASI sockets.
The WasmEdge networking sockets got new features in version 0.12.1, such as DNS, network device binding and TLS. You will be able to create sophisticated microservices that require highly-efficient non-blocking network sockets.
Here are several complex networking applications that are possible with WasmEdge sockets.
WasmEdge is already one of the smallest and most efficient Wasm runtimes out there. It embeds into libsql(SQLite on the server!) to execute user definited functions to perform complex tasks like HTTPS web services and AI inference from SQL statements!
Better embedding through improved host SDKs
The WasmEdge C++ and Rust SDKs now allow host applications to embed Wasm functions asynchronously. It is critically important in many applications where the embedded Wasm function is simply not allowed to block the execution of the host applications.
Asynchronous host SDKs are complex and a lot of work still remains. We are continuously improving it with our end user and partner communities. Stay tuned! Preview here: https://github.com/L-jasmine/WasmEdge/tree/feat/async
Performance and compatibility enhancements
WasmEdge 0.12.0 and 0.12.1 include numerous bug fixes and performance improvements. Notably, WasmEdge 0.12.1 introduces an enhancement to the WebAssembly System Interface (WASI), enabling read-only access to files and folders within Wasm applications.
What's coming next?
The WasmEdge team is committed to continuous improvement and has an exciting roadmap for future releases. Some of the upcoming features include:
- Support plugins in our Docker and k8s integrations
- Wasm GC support for languages like Kotlin and Dart
- WASI thread
- Stack switching for coroutines
- Component model
- Support for inference on open source LLMs
- Better JS & Python support for AI
For more information on WasmEdge 0.12.0 and 0.12.1, check out the WasmEdge source code on GitHub. We value your feedback and encourage your participation in the WasmEdge community. Join usas we continue to push the boundaries of WebAssembly and unlock new possibilities with WasmEdge. Get started with WasmEdge today!