# Changelog All notable changes to this project will be documented in this file. ## [0.13.5-newapi] - 2024-04-30 ### 🚜 Refactor - [BREAKING] Significant refactoring was done to fix memory leaks ([#98](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/98)) ## [0.13.2] - 2023-11-15 ### 🐛 Bug Fixes - Fix the static build to link against `zstd` ([#91](https://github.com/orhun/git-cliff/issues/91)) ## [0.13.1] - 2023-11-14 - Update the `wat` dep. This update is to fix [#88](https://github.com/WasmEdge/wasmedge-rust-sdk/issues/88). ## [0.13.0] - 2023-11-07 ### ⛰️ Features - New API `PluginManager::nn_preload`. This API is used to initialize the `wasi_nn` plug-in with given preloads ([#74](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/74)) - Implement `FromStr` trait for `NNPreload` struct ([#81](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/81)) ### 🚜 Refactor - [BREAKING] Update the argument types ([#82](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/82)): - `VmBuilder::with_plugin` - `VmBuilder::with_plugin_wasi_nn` - `VmBuilder::with_plugin_wasi_crypto` - `VmBuilder::with_plugin_wasmedge_process` - [BREAKING] Update the argument types ([#76](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/76)): - `Executor::run_func_with_timeout` and `Executor::run_func_async_with_timeout` - `Vm::run_func_with_timeout` and `Vm::run_func_async_with_timeout` - `Func::run_with_timeout` and `Func::run_async_with_timeout` ### 🐛 Bug Fixes - Introduce new C-API `WasmEdge_FunctionInstanceGetData` to fix the memory leak issue caused by host data ([#84](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/84)) ### Ci - Support `macos-13` and remove `macos-11` from the `ci-build` and `standalone` workflows ([#84](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/84)) ## [0.12.2] - 2023-09-22 ### 🚜 Refactor - Disable `timeout` related APIs for the `musl` environment ([#71](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/71)) ## [0.12.1] - 2023-09-14 ### 🐛 Bug Fixes - *(wasmedge-sys)* Update the `sha256sum` of WasmEdge 0.13.4 ([#66](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/66)) ## [0.12.0] - 2023-09-10 ### ⛰️ Features - New `timeout` APIs ([#61](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/61)) - Add `Vm::run_func_with_timeout` and `Vm::run_func_async_with_timeout`. These APIs are used to run a host function with a timeout - Add `Executor::run_func_with_timeout` and `Executor::run_func_async_with_timeout`. These APIs are used to run a host function with a timeout - Add `Func::run_with_timeout` and `Func::run_async_with_timeout`. These APIs are used to run a host function with a timeout - New API `Store::register_plugin_module`. This API is used to register a `PluginInstance`` into a store instance ([#53](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/53)) - New type alias `PluginInstance` ([#53](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/53)) ### 🚜 Refactor - [BREAKING] Merge `async` mod into `wasi` mod ([#55](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/55)) - [BREAKING] Update the return type of `PluginManager::find` from `Option` to `WasmEdgeResult` ([#53](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/53)) - [BREAKING] Update the return type of `Plugin::mod_instance` from `Option` to `WasmEdgeResult` ([#53](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/53)) ### 📚 Documentation - Update WasmEdge RustSDK API Document ([#55](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/55)) ## [0.11.2] - 2023-08-07 ### ⛰️ Features - New API `WasiContext::generate`. This API provides more flexible argument types than the existed `WasiContext::new` ([#49](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/49)) ### 🚜 Refactor - Improve `host_function` and `async_host_function` proc-macros ([#49](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/49)) - Improve build script ([#48](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/48)) - Options to specify the type of linking required for the different dependencies using environment variables. - Adds an option to use an external `rust-bindgen` using environment variables. - Adds support for `musl libc` ### 📚 Documentation - Update `README.md` ([#50](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/50)) - Update Rust SDK API Document ([#50](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/50)) ### Ci - Disable the publish of the async API document ([#50](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/50)) ## [0.11.0] - 2023-07-31 ### ⛰️ Features - Add `Func::wrap_async_func_with_type` ([#43](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/43)) - Add `WasiInstance::exit_code` in `async` mod ([#43](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/43)) - Add `WasiInstance::name` in `wasi` mod ([#42](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/42)) - Add `WasiContext` ([#39](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/39)) - Add `VmBuilder::with_wasi_context` ([#39](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/39)) ### 🚜 Refactor - [BREAKING] Update `Func::new` - Rename `Func::new` to `Func::wrap_with_type` ([#43](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/43)) - Change the type of the `data` argument to `Option>` ([#39](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/39)) - [BREAKING] Update `Func::wrap_func` - Rename `Func::wrap_func` to `Func::wrap` ([#43](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/43)) - The type of the `data` argument is changed to `Option>` ([#39](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/39)) - [BREAKING] Update async `WasiInstance` - Move `WasiInstance` for `async` scenarios from `wasi` mod to `async` mod ([#39](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/39)) - Remove the implementation of `AsInstance` trait for `WasiInstance` defined in `async` mod ([#39](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/39)) - Remove `WasiInstance::initialize` defined in `async` mod ([#39](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/39)) - [BREAKING] Update `WasiInstance` - Remove the implementation of `AsInstance` trait for `WasiInstance` defined in `wasi` mod ([#42](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/42)) - [BREAKING] Move `AsyncState` into `async` mod ([#39](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/39)) - [BREAKING] Remove `HostFn` and `AsyncHostFn` ([#39](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/39)) - [BREAKING] Update `ImportObjectBuilder` - Add `?Size` and `Clone` trait bounds on generic type of `ImportObjectBuilder::build` ([#41](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/41)) - Change the type of the `data` argument of `ImportObjectBuilder::with_func` to `Option>` ([#39](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/39)) - Change the type of the `data` argument of `ImportObjectBuilder::with_func_by_type` to `Option>` ([#39](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/39)) - [BREAKING] Update `ImportObject` - Add generic type to `ImportObject` ([#41](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/41)) - Rename `as_raw_ptr` to `as_ptr` ([#41](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/41)) - [BREAKING] Update `PluginModuleBuilder` - Change the type of the `data` argument of `PluginModuleBuilder::with_func` to `Option>` ([#39](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/39)) - Add `?Sized` trait bound on the generic type of `PluginModuleBuilder` ([#42](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/42)) - Update `PluginModuleBuilder::build` ([#42](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/42)) - [BREAKING] Update `PluginModule` ([#42](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/42)) - [BREAKING] Add generic type to `Store::register_import_module` ([#41](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/41)) - [BREAKING] Update `async_host_function` proc-macro ([#43](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/43)) - Update `Vm` - Remove `imports` field from `Vm` ([#41](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/41)) - [BREAKING] Update the signature of `Vm::register_import_module` ([#41](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/41)) - Update `Vm::build` for async scenarios ([#42](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/42)) - Enable `Vm::wasi_module` and `Vm::wasi_module_mut` for async scenarios ([#43](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/43)) - Update `VmBuilder::build` ([#39](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/39)) - Improve the `standalone` deployment mode ([#40](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/40)) ### 📚 Documentation - Update `README.md` ([#43](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/43)) - Update Rust SDK API Document ([#44](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/44)) ### Ci - Add steps for publishing async API document in `release-wasmedge-sdk` workflow ([#44](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/44)) ## [0.10.0] - 2023-07-21 ### ⛰️ Features - Support closures in `Func` and `ImportObjectBuilder` ([#20](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/20)) - [BREAKING] Update `Func::new` method - [BREAKING] Update `Func::wrap_func` method - [BREAKING] Update `Func::wrap_async_func` method - [BREAKING] Update `ImportObjectBuilder::with_func` method - [BREAKING] Update `ImportObjectBuilder::with_func_by_type` method - [BREAKING] Update `ImportObjectBuilder::with_async_func` method - Support `host_data` in `ImportObjectBuilder::with_async_func` and `ImportObjectBuilder::build` methods ([#21](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/21)) - Support standalone static libraries ([#22](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/22) [#24](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/24)) ### 🚜 Refactor - [BREAKING] Rename `Func::wrap` to `Func::wrap_func` ([#20](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/20)) - [BREAKING] Rename `Func::wrap_async` to `Func::wrap_async_func` ([#20](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/20)) - [BREAKING] Rename `ImportObjectBuilder::with_func_async` to `ImportObjectBuilder::with_async_func` ([#20](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/20)) - Remove the `host_data` field in `ImportObjectBuilder` ([#21](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/21)) - [BREAKING] Update `ImportObjectBuilder::with_async_func` method - Remove the generic type in `ImportObject` ([#21](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/21)) - [BREAKING] Update `VmBuilder::build` method - [BREAKING] Remove the generic type in `Vm` ### 📚 Documentation - Update README and rustdoc ([#28](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/28)) ## [0.9.0] - 2023-06-30 ### ⛰️ Features - Introduce `NeverType` type ([WasmEdge #2497](https://github.com/WasmEdge/WasmEdge/pull/2497)) - [BREAKING] Update `Func::new` method - [BREAKING] Update `Func::wrap` method - [BREAKING] Update `ImportObjectBuilder::with_func` method - [BREAKING] Update `ImportObjectBuilder::with_func_by_type` method - Support async wasi ([WasmEdge #2528](https://github.com/WasmEdge/WasmEdge/pull/2528)) - [BREAKING] Update `Executor::run_func_async` method - [BREAKING] Update `Executor::run_func_ref_async` method - [BREAKING] Update `Func::run_async` method - [BREAKING] Update `FuncRef::run_async` method - [BREAKING] Update `ImportObjectBuilder::with_func_async` method - [BREAKING] Update `Vm::run_func_async` method - [BREAKING] Update `Vm::run_func_from_module_async` method - [BREAKING] Update `Vm::run_func_from_file_async` method - [BREAKING] Update `Vm::run_func_from_bytes_async` method - Migrate WasmEdge Rust SDK into [WasmEdge/wasmedge-rust-sdk](https://github.com/WasmEdge/wasmedge-rust-sdk) ([#1](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/1)) - Migrate async-wasi into Rust SDK ([#2](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/2)) - Implement a separate VmBuilder::build method for `async` cases ([#3](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/3)) - Support new WasmEdge C-API: `WasmEdge_Driver_UniTool` ([#6](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/6)) - Support new C-APIs: `WasmEdge_ModuleInstanceCreateWithData` and `WasmEdge_ModuleInstanceGetHostData` ([#13](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/13)) - [BREAKING] Update `VmDock` type - [BREAKING] Update `Param::settle` method - [BREAKING] Update `Param::allocate` method - [BREAKING] Update `ImportObjectBuilder` type - [BREAKING] Update `ImportObjectBuilder::with_func` method - [BREAKING] Update `ImportObjectBuilder::with_func_by_type` method - [BREAKING] Update `ImportObjectBuilder::with_global` method - [BREAKING] Update `ImportObjectBuilder::with_memory` method - [BREAKING] Update `ImportObjectBuilder::with_table` method - [BREAKING] Update `ImportObjectBuilder::build` method - [BREAKING] Update `ImportObject` type - [BREAKING] Update `Store::register_import_module` method - [BREAKING] Update `VmBuilder::build` method - [BREAKING] Update `Vm` type - [BREAKING] Update `Vm::register_import_module` method - Implement `PluginModule` and `PluginModuleBuilder` ([#14](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/14)) - [BREAKING] Update `ImportObjectBuilder::with_func` method - [BREAKING] Update `ImportObjectBuilder::with_func_by_type` method - [BREAKING] Update `ImportObjectBuilder::with_func_async` method - [BREAKING] Update `ImportObjectBuilder::with_host_data` method ### 📚 Documentation - Update README ([#7](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/7)) ### ⚙️ Miscellaneous Tasks - Remove the deprecated examples ([#4](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/4)) - Remove the deprecated examples ([#8](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/8)) - Release preparation: bump versions and update docs ([#15](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/15)) - Update documentation url ([#17](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/17)) ### Ci - Update the release workflows ([#5](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/5)) - Add `standlone` workflow ([#9](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/9)) - Support `macOS` and `Fedora` in the `standalone` workflow ([#11](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/11)) - Update the `release-async-wasi` workflow ([#16](https://github.com/WasmEdge/wasmedge-rust-sdk/pull/16))