Project: WasmEdge Runtime (Runtime / Container Runtime)
File: .CurrentChangelog.md

Breaking changes: [Version]: Bump the version of the WasmEdge shared library. Due to the breaking change of API, bump the `SOVERSION` to `0.1.0`. Due to the breaking change of API, bump the plug-in `API_VERSION` to `3`. [C API]: Changes for applying Typed Function References Proposal. New `WasmEdgeValType` structure for replacing `enum WasmEdgeValType`. Merge the `enum WasmEdgeValType` and `enum WasmEdgeRefType` into the `enum WasmEdge_TypeCode`. Refactored the error code. The error code number may different from previous versions. Extend the error code to 2 bytes. Updated the related APIs for using `enum WasmEdge_ValType` as parameters. `WasmEdge_FunctionTypeCreate()` `WasmEdge_FunctionTypeGetParameters()` `WasmEdge_FunctionTypeGetReturns()` `WasmEdge_TableTypeCreate()` `WasmEdge_TableTypeGetRefType()` `WasmEdge_GlobalTypeCreate()` `WasmEdge_GlobalTypeGetValType()` Removed `WasmEdge_ValueGenNullRef()` API. Due to non-defaultable values after this proposal, the following APIs return the result instead of void. `WasmEdge_GlobalInstanceSetValue()` Introduced the `WasmEdge_Bytes` structure. This structure is for packaging the `uint8_t` buffers. The old `FromBuffer` related APIs will be replaced by the corresponding APIs in the future versions. `WasmEdgeCompilerCompileFromBytes()` API has the same function as `WasmEdgeCompilerCompileFromBuffer()` and will replace it in the future. `WasmEdgeLoaderParseFromBytes()` API has the same function as `WasmEdgeLoaderParseFromBuffer()` and will replace it in the future. `WasmEdgeVMRegisterModuleFromBytes()` API has the same function as `WasmEdgeVMRegisterModuleFromBuffer()` and will replace it in the future. `WasmEdgeVMRunWasmFromBytes()` API has the same function as `WasmEdgeVMRunWasmFromBuffer()` and will replace it in the future. `WasmEdgeVMAsyncRunWasmFromBytes()` API has the same function as `WasmEdgeVMAsyncRunWasmFromBuffer()` and will replace it in the future. `WasmEdgeVMLoadWasmFromBytes()` API has the same function as `WasmEdgeVMLoadWasmFromBuffer()` and will replace it in the future. New APIs for WASM Exception-Handling proposal. Added the `WasmEdge_TagTypeContext` struct. Added the `WasmEdge_TagInstanceContext` struct. Added the `WasmEdge_TagTypeGetFunctionType()` API for retrieving the function type from a tag type. Added the `WasmEdge_ImportTypeGetTagType()` API for retrieving the tag type from an import type. Added the `WasmEdge_ExportTypeGetTagType()` API for retrieving the tag type from an export type. Added the `WasmEdge_ModuleInstanceFindTag()` API for finding an exported tag instance from a module instance. Added the `WasmEdgeModuleInstanceListTagLength()` and `WasmEdgeModuleInstanceListTag()` APIs for listing the exported tag instances of a module instance. Refactored the `OpCode` mechanism for speeding up and supporting WASM multi-bytes instruction OpCodes. Features: Bumpped `spdlog` to `v1.13.0`. Bumpped `simdjson` to `v3.9.1`. [Proposal]: Apply new propoals. Supported WASM Typed Function References proposal. Added the `WasmEdgeProposalFunctionReferences` for the configuration in WasmEdge C API. Users can use the `--enable-function-reference` to enable the proposal in `wasmedge` and `wasmedgec` tools. Supported WASM GC proposal (interpreter only). Added the `WasmEdgeProposalGC` for the configuration in WasmEdge C API. Users can use the `--enable-gc` to enable the proposal in `wasmedge` and `wasmedgec` tools. Supported WASM Exception-Handling proposal (interpreter only). Added the `WasmEdgeProposalExceptionHandling` for the configuration in WasmEdge C API. Users can use the `--enable-exception-handling` to enable the proposal in `wasmedge` and `wasmedgec` tools. This proposal supports old deprecated `try`, `catch`, and `catch_all` instructions, and will remove them in the future version. Component Model proposal (experimental, loader phase only). Added the `WasmEdgeProposalComponent` for the configuration in WasmEdge C API. Users can use the `--enable-component` to enable the proposal in `wasmedge` tool. [JIT]: Support LLVM JIT. [C API]: New C API for supporting the new proposals. `WasmEdge_ValType` related APIs can help developers to generate or compare value types. `WasmEdgeValTypeGenI32()` (replacing `WasmEdgeValType_I32`) `WasmEdgeValTypeGenI64()` (replacing `WasmEdgeValType_I64`) `WasmEdgeValTypeGenF32()` (replacing `WasmEdgeValType_F32`) `WasmEdgeValTypeGenF64()` (replacing `WasmEdgeValType_F64`) `WasmEdgeValTypeGenV128()` (replacing `WasmEdgeValType_V128`) `WasmEdgeValTypeGenFuncRef()` (replacing `WasmEdgeValType_FuncRef`) `WasmEdgeValTypeGenExternRef()` (replacing `WasmEdgeValType_ExternRef`) `WasmEdge_ValTypeIsEqual()` `WasmEdge_ValTypeIsI32()` `WasmEdge_ValTypeIsI64()` `WasmEdge_ValTypeIsF32()` `WasmEdge_ValTypeIsF64()` `WasmEdge_ValTypeIsV128()` `WasmEdge_ValTypeIsFuncRef()` `WasmEdge_ValTypeIsExternRef()` `WasmEdge_ValTypeIsRef()` `WasmEdge_ValTypeIsRefNull()` `WasmEdge_Bytes` related APIs can help developers to control the

`WasmEdge_BytesCreate()` `WasmEdge_BytesWrap()` `WasmEdge_BytesDelete()` `WasmEdge_TableInstanceCreateWithInit()` to create a table instance with non-defaultable elements with assigning the initial value. [Serializer]: Supported WASM module serialization (experimental). This is the API-level feature. Developers can use the `WasmEdge_LoaderSerializeASTModule()` API to serialize a loaded WASM module into bytes. [Tools]: Print the plug-in versions when using the `--version` option. [Installer]: Enabled `ggml-blas` and `rustls` plugin supporting (#3032) (#3108). [WASI-NN] ggml backend: Bump llama.cpp to b2781. Support llama.cpp options: `threads`: the thread number for inference. `temp`: set temperature for inference. `repeat-penalty`: set repeat penalty for inference. `top-p`: set top-p for inference. `grammar`: set grammar syntax for inference. `main-gpu`: set the main GPU for inference. `tensor-split`: set the tensor split for inference. Add `enable-debug-log` option to show more debug information. Default enable Metal on macOS. Introduce `loadbynamewithconfig()` to load model with metadata. Introduce single token inference by `computesingle`, `getoutputsingle`, and `finisingle` Introduce `unload()` function to release the model. Add some llama errors to WASI-NN. `EndOfSequence`: returned when encounter `<EOS>` token on single token inferece. `ContextFull`: returned when the context is full. `PromptTooLong`: returned when the input size is too large. `ModelNotFound`: returned when the model is not found. Support Llava and Gemma inference. Add `mmproj` option to set the projection model. Add `image` option to set the image. Improve logging mechanism. Show the version of `llama.cpp` in the metadata. Support Phi-3-Mini model. Support embedding generation. Support Windows build. [Plugin] Initial support for `wasmedge_ffmpeg` plug-in. Fixed issues: Fixed some API document in the API header. [Executor]: Minor fixes. Fixed integer overflow on `memGrow` boundary check. Refined the slice copy in table instances. Cleaned the unused bits of WASM return values to avoid security issues. [WASI]: Minor fixes. Fixed the function signature matching for WASI imports when backwarding supporting older version. (#3073) Fixed large timestamp causing overflow (#3106). Handle HUP only events. Checking same file descriptor for `fd_renumber` (#3040). Fixed `pathunlinkfile` for trailing slash path. Fixed `path_readlink` for not following symbolic link issue. Fixed `pathopen` for checking `OTRUNC` rights. Fixed `path_open` for removing path relative rights on file. Checking `path_symlink` for creating a symlink to an absolute path. Checking `fdprestatdir_name` buffer size. Checking `filestatsettimes` for invalid flags. Checking validation of file descriptor in `socket_accept` (#3041). Fixed duplicated loading of the same plug-in. Fixed option toggle for `wasmedge_process` plug-in. Tests: Updated the WASM spec tests to the date 2024/02/17. Updated the spec tests for the Exception Handling proposal. Added the spec tests for the Typed Function Reference proposal. Added the spec tests for the GC proposal. Known issues: Universal WASM format failed on macOS platforms. In the current status, the universal WASM format output of the AOT compiler with the `O1` or upper optimizations on MacOS platforms will cause a bus error during execution. We are trying to fix this issue. For a working around, please use the `--optimize=0` to set the compiler optimization level to `O0` in `wasmedgec` CLI. Thank all the contributors who made this release possible! Abhinandan Udupa, Akihiro Suda, Charlie chan, Dhruv Jain, Draco, Harry Chiang, Hrushikesh, Ikko Eltociear Ashimine, Khagan (Khan) Karimov, LFsWang, LO, CHIN-HAO, Little Willy, Lm Ts-thun, Meenu Yadav, Omkar Acharekar, Saiyam Pathak, Sarrah Bastawala, Shen-Ta Hsieh, Shreyas Atre, Yage Hu, Yi Huang, Yi-Ying He, alabulei1, am009, dm4, hetvishastri, hugo-syn, hydai, redismongo, richzw, tannal, vincent, zhumeme If you want to build from source, please use WasmEdge-0.14.0-rc.5-src.tar.gz instead of the zip or tarball provided by GitHub directly.