In version 0.10.0, WasmEdge provides a brand new plug-in mechanism to make native extensions easier to develop and install, improves compatibility with LLVM 14, and supports new WebAssembly specs, proposals, and features.
- New plug-in system for native host functions
- Many enhancements to the WasmEdge socket API (e.g., microservices and web service clients in WasmEdge)
- Support for new WebAssembly proposals and specs
- WasmEdge C API enhancements
- Other features and bug fixes
New plug-in system for native Host Functions
The host funtion is the bridge that allows WebAssembly programs to access functionalities and features provided by native libraries. It is how we extend a WebAssembly runtime with more features and capabilities. For example, the WASI standard itself is to make
libc system calls available to WebAssembly apps through host functions.
The WasmEdge's TensorFlow, NN, Socket, and Image processing extensions are all implemented in host functions. Therefore, it is critical for a WebAssembly runtime to support developer-friendly host functions.
The new WasmEdge plug-in system aims to simplify host function development and management. For developers, the plug-in system makes it easy to create new WasmEdge extensions using a unified host function interface. Check out our guide on how to use WasmEdge's plug-in system to add host functions in the WasmEdge Book. Give it a try.
C++ is the only programming language to write WasmEdge plug-ins for now. However, we are adding support for Rust and C soon.
For WasmEdge users, you can now enable or disable WasmEdge extensions by simply adding or removing files containing the host functions in a WasmEdge folder. The plug-in system makes it easy and safe for users to manage a large number of developer-contributed WasmEdge extensions in the future.
As an example, the WasmEdge team has implemented the
wasmedge_process extension as a plug-in. Once installed, it allows WebAssembly programs to call operating system commands. Over the next several weeks, the team will port WasmEdge's existing extensions to the new plug-in format. You're also welcome to contribute your own host function-based extensions for WasmEdge.
WasmEdge has supported networking socket in WasmEdge 0.8.2. The WasmEdge networking sockets are non-blocking and high-performance. It is the only WebAssembly runtime that can run web services applications today. Many developers have tried to create and deploy WasmEdge-based web services or clients. In this release, we continue to improve WasmEdge socket API for developers.
- Both IPV4 and IPV6 modes
- UDP functions:
- DNS name lookup
- Checking socket options enum for valid value
- Fixed: wasi-socket on MacOS
- Fixed: error when calling
poll_oneoffwith the same fd twice and when calling
- Zero-terminated string for
C API enhancements
The C API is the basis for other language APIs for WasmEdge, such as the WasmEdge Rust API and WasmEdge Go API. This release improves the WasmEdge C API.
- Merged the
- Used the pointer to
WasmEdge_FunctionInstanceContextinstead of the index in the
- Moved the functions of
- Updated the
Standard Wasm extensions
WasmEdge thrives to be fully compliant with WebAssembly standards, and supports all mandatory and optional WebAssembly specs. From release 0.10.0, WasmEdge provides support for the
Tail Call and
Other new features and bug fixes
In addition to the above features, some features need to be taken care of.
- LLVM 14 compatibility, which improves performance.
- thread-safe in
- Gas limit in the AOT mode allows applications to be precisely metered in WasmEdge.
- New unit tests.
To learn more about the WasmEdge 0.10.0 release, check out our changelog (https://github.com/WasmEdge/WasmEdge/releases/tag/0.10.0)! Join us!
Finally, a big thanks to all our contributors!
apepkuss, dm4, q82419, cyw3, SAtacker, ibmibmibm, hydai, gusy1234, hangedfish, 0yi0, tpmccallum, MediosZ, hantmc, LFsWang, eat4toast, eee4017, situ2001, meoww-bot, juntao, mfordjody, joyaaa, sunnywa, DarumaDocker, spacewander, luckyJ-nj, mydreamer4134, malc0lm,kgpp34, wenchajun, laingke, cold-Elite, border1px, zhuyaguang, bbcfive, JooKS-me, KerneIErr, zswaaa, zhannicholas, O3OI, KcjinChen, FlyingOnion, swartz-k, Bevisy, deyuhua, zephoon, abhinandanudupa, chinzhiweiblank.
👉 Discord: https://discord.gg/5hPQ2H5fcg
👉 Mailing list: Send an email to WasmEdge@googlegroups.com
👉 Twitter: @realwasmedge
👉 Be a contributor: checkout the good-first-issue to start contributing!