WasmEdge

WasmEdge is a lightweight, high-performance, and extensible WebAssembly runtime for cloud native, edge, and decentralized applications. It powers serverless apps, embedded functions, microservices, smart contracts, and IoT devices.

APACHE-2.0 License

Stars
8K
Committers
187

Bot releases are visible (Hide)

WasmEdge - WasmEdge 0.14.0 Latest Release

Published by github-actions[bot] 5 months ago

0.14.0 (2024-05-22)

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 WasmEdge_ValType structure for replacing enum WasmEdge_ValType.
      • Merge the enum WasmEdge_ValType and enum WasmEdge_RefType 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.
      • WasmEdge_CompilerCompileFromBytes() API has the same function as WasmEdge_CompilerCompileFromBuffer() and will replace it in the future.
      • WasmEdge_LoaderParseFromBytes() API has the same function as WasmEdge_LoaderParseFromBuffer() and will replace it in the future.
      • WasmEdge_VMRegisterModuleFromBytes() API has the same function as WasmEdge_VMRegisterModuleFromBuffer() and will replace it in the future.
      • WasmEdge_VMRunWasmFromBytes() API has the same function as WasmEdge_VMRunWasmFromBuffer() and will replace it in the future.
      • WasmEdge_VMAsyncRunWasmFromBytes() API has the same function as WasmEdge_VMAsyncRunWasmFromBuffer() and will replace it in the future.
      • WasmEdge_VMLoadWasmFromBytes() API has the same function as WasmEdge_VMLoadWasmFromBuffer() 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 WasmEdge_ModuleInstanceListTagLength() and WasmEdge_ModuleInstanceListTag() 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 WasmEdge_Proposal_FunctionReferences 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 WasmEdge_Proposal_GC 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 WasmEdge_Proposal_ExceptionHandling 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 WasmEdge_Proposal_Component 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.
      • WasmEdge_ValTypeGenI32() (replacing WasmEdge_ValType_I32)
      • WasmEdge_ValTypeGenI64() (replacing WasmEdge_ValType_I64)
      • WasmEdge_ValTypeGenF32() (replacing WasmEdge_ValType_F32)
      • WasmEdge_ValTypeGenF64() (replacing WasmEdge_ValType_F64)
      • WasmEdge_ValTypeGenV128() (replacing WasmEdge_ValType_V128)
      • WasmEdge_ValTypeGenFuncRef() (replacing WasmEdge_ValType_FuncRef)
      • WasmEdge_ValTypeGenExternRef() (replacing WasmEdge_ValType_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 buffers.
      • 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 b2963.
    • 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 load_by_name_with_config() to load model with metadata.
    • Introduce single token inference by compute_single, get_output_single, and fini_single
    • 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.
  • [Plugin] Updated wasi-logging plug-in for supporting logging into file.

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 path_unlink_file for trailing slash path.
    • Fixed path_readlink for not following symbolic link issue.
    • Fixed path_open for checking O_TRUNC rights.
    • Fixed path_open for removing path relative rights on file.
    • Fixed fd_allocate return error value.
    • Checking path_symlink for creating a symlink to an absolute path.
    • Checking fd_prestat_dir_name buffer size.
    • Checking filestat_set_times 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.
  • Fixed the plug-in searching path on Windows.

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, Lîm Tsú-thuàn, Meenu Yadav, Omkar Acharekar, Saiyam Pathak, Sarrah Bastawala, Shen-Ta Hsieh, Shreyas Atre, Sylveon, 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-src.tar.gz instead of the zip or tarball provided by GitHub directly.

WasmEdge - WasmEdge 0.14.0-rc.5

Published by github-actions[bot] 5 months ago

0.14.0-rc.5 (2024-05-08)

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 WasmEdge_ValType structure for replacing enum WasmEdge_ValType.
      • Merge the enum WasmEdge_ValType and enum WasmEdge_RefType 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.
      • WasmEdge_CompilerCompileFromBytes() API has the same function as WasmEdge_CompilerCompileFromBuffer() and will replace it in the future.
      • WasmEdge_LoaderParseFromBytes() API has the same function as WasmEdge_LoaderParseFromBuffer() and will replace it in the future.
      • WasmEdge_VMRegisterModuleFromBytes() API has the same function as WasmEdge_VMRegisterModuleFromBuffer() and will replace it in the future.
      • WasmEdge_VMRunWasmFromBytes() API has the same function as WasmEdge_VMRunWasmFromBuffer() and will replace it in the future.
      • WasmEdge_VMAsyncRunWasmFromBytes() API has the same function as WasmEdge_VMAsyncRunWasmFromBuffer() and will replace it in the future.
      • WasmEdge_VMLoadWasmFromBytes() API has the same function as WasmEdge_VMLoadWasmFromBuffer() 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 WasmEdge_ModuleInstanceListTagLength() and WasmEdge_ModuleInstanceListTag() 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 WasmEdge_Proposal_FunctionReferences 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 WasmEdge_Proposal_GC 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 WasmEdge_Proposal_ExceptionHandling 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 WasmEdge_Proposal_Component 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.
      • WasmEdge_ValTypeGenI32() (replacing WasmEdge_ValType_I32)
      • WasmEdge_ValTypeGenI64() (replacing WasmEdge_ValType_I64)
      • WasmEdge_ValTypeGenF32() (replacing WasmEdge_ValType_F32)
      • WasmEdge_ValTypeGenF64() (replacing WasmEdge_ValType_F64)
      • WasmEdge_ValTypeGenV128() (replacing WasmEdge_ValType_V128)
      • WasmEdge_ValTypeGenFuncRef() (replacing WasmEdge_ValType_FuncRef)
      • WasmEdge_ValTypeGenExternRef() (replacing WasmEdge_ValType_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 buffers.
      • 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 load_by_name_with_config() to load model with metadata.
    • Introduce single token inference by compute_single, get_output_single, and fini_single
    • 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 path_unlink_file for trailing slash path.
    • Fixed path_readlink for not following symbolic link issue.
    • Fixed path_open for checking O_TRUNC rights.
    • Fixed path_open for removing path relative rights on file.
    • Checking path_symlink for creating a symlink to an absolute path.
    • Checking fd_prestat_dir_name buffer size.
    • Checking filestat_set_times 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, Lîm Tsú-thuàn, 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.

WasmEdge - WasmEdge 0.14.0-alpha.4

Published by github-actions[bot] 6 months ago

0.14.0-alpha.4 (2024-04-29)

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 WasmEdge_ValType structure for replacing enum WasmEdge_ValType.
      • Merge the enum WasmEdge_ValType and enum WasmEdge_RefType 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.
      • WasmEdge_CompilerCompileFromBytes() API has the same function as WasmEdge_CompilerCompileFromBuffer() and will replace it in the future.
      • WasmEdge_LoaderParseFromBytes() API has the same function as WasmEdge_LoaderParseFromBuffer() and will replace it in the future.
      • WasmEdge_VMRegisterModuleFromBytes() API has the same function as WasmEdge_VMRegisterModuleFromBuffer() and will replace it in the future.
      • WasmEdge_VMRunWasmFromBytes() API has the same function as WasmEdge_VMRunWasmFromBuffer() and will replace it in the future.
      • WasmEdge_VMAsyncRunWasmFromBytes() API has the same function as WasmEdge_VMAsyncRunWasmFromBuffer() and will replace it in the future.
      • WasmEdge_VMLoadWasmFromBytes() API has the same function as WasmEdge_VMLoadWasmFromBuffer() 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 WasmEdge_ModuleInstanceListTagLength() and WasmEdge_ModuleInstanceListTag() 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 WasmEdge_Proposal_FunctionReferences 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 WasmEdge_Proposal_GC 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 WasmEdge_Proposal_ExceptionHandling 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 WasmEdge_Proposal_Component 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.
      • WasmEdge_ValTypeGenI32() (replacing WasmEdge_ValType_I32)
      • WasmEdge_ValTypeGenI64() (replacing WasmEdge_ValType_I64)
      • WasmEdge_ValTypeGenF32() (replacing WasmEdge_ValType_F32)
      • WasmEdge_ValTypeGenF64() (replacing WasmEdge_ValType_F64)
      • WasmEdge_ValTypeGenV128() (replacing WasmEdge_ValType_V128)
      • WasmEdge_ValTypeGenFuncRef() (replacing WasmEdge_ValType_FuncRef)
      • WasmEdge_ValTypeGenExternRef() (replacing WasmEdge_ValType_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 buffers.
      • 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 b2734.
    • 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 load_by_name_with_config() to load model with metadata.
    • Introduce single token inference by compute_single, get_output_single, and fini_single
    • 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 path_unlink_file for trailing slash path.
    • Fixed path_readlink for not following symbolic link issue.
    • Fixed path_open for checking O_TRUNC rights.
    • Fixed path_open for removing path relative rights on file.
    • Checking path_symlink for creating a symlink to an absolute path.
    • Checking fd_prestat_dir_name buffer size.
    • Checking filestat_set_times 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, Hrushikesh, Ikko Eltociear Ashimine, Khagan (Khan) Karimov, LO, CHIN-HAO, Little Willy, Lîm Tsú-thuàn, Meenu Yadav, Omkar Acharekar, Saiyam Pathak, Sarrah Bastawala, Shen-Ta Hsieh, Shreyas Atre, Yage Hu, Yi Huang, Yi-Ying He, alabulei1, am009, dm4, hetvishastri, hydai, redismongo, richzw, tannal, vincent, zhumeme

If you want to build from source, please use WasmEdge-0.14.0-alpha.4-src.tar.gz instead of the zip or tarball provided by GitHub directly.

WasmEdge - WasmEdge 0.14.0-rc.4

Published by github-actions[bot] 7 months ago

0.14.0-rc.4 (2024-04-03)

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 WasmEdge_ValType structure for replacing enum WasmEdge_ValType.
      • Merge the enum WasmEdge_ValType and enum WasmEdge_RefType 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.
      • WasmEdge_CompilerCompileFromBytes() API has the same function as WasmEdge_CompilerCompileFromBuffer() and will replace it in the future.
      • WasmEdge_LoaderParseFromBytes() API has the same function as WasmEdge_LoaderParseFromBuffer() and will replace it in the future.
      • WasmEdge_VMRegisterModuleFromBytes() API has the same function as WasmEdge_VMRegisterModuleFromBuffer() and will replace it in the future.
      • WasmEdge_VMRunWasmFromBytes() API has the same function as WasmEdge_VMRunWasmFromBuffer() and will replace it in the future.
      • WasmEdge_VMAsyncRunWasmFromBytes() API has the same function as WasmEdge_VMAsyncRunWasmFromBuffer() and will replace it in the future.
      • WasmEdge_VMLoadWasmFromBytes() API has the same function as WasmEdge_VMLoadWasmFromBuffer() and will replace it in the future.

Features:

  • Bumpped spdlog to v1.13.0.
  • [Proposal]: Apply new propoals.
    • Supported WASM Typed Function References proposal.
      • Added the WasmEdge_Proposal_FunctionReferences 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 WasmEdge_Proposal_GC for the configuration in WasmEdge C API.
      • Users can use the --enable-gc to enable the proposal in wasmedge and wasmedgec tools.
    • Component Model proposal (experimental, loader phase only).
      • Added the WasmEdge_Proposal_Component 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.
      • WasmEdge_ValTypeGenI32() (replacing WasmEdge_ValType_I32)
      • WasmEdge_ValTypeGenI64() (replacing WasmEdge_ValType_I64)
      • WasmEdge_ValTypeGenF32() (replacing WasmEdge_ValType_F32)
      • WasmEdge_ValTypeGenF64() (replacing WasmEdge_ValType_F64)
      • WasmEdge_ValTypeGenV128() (replacing WasmEdge_ValType_V128)
      • WasmEdge_ValTypeGenFuncRef() (replacing WasmEdge_ValType_FuncRef)
      • WasmEdge_ValTypeGenExternRef() (replacing WasmEdge_ValType_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 buffers.
      • 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 b2534.
    • Support llama.cpp options:
      • threads: the thread number for inference.
      • temp: set temperature for inference.
      • repeat-penalty: set repeat penalty for inference.
    • Add enable-debug-log option to show more debug information.
    • Default enable Metal on macOS.
    • Introduce load_by_name_with_config() to load model with metadata.
    • Introduce single token inference by compute_single, get_output_single, and fini_single
    • 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.
    • Support Llava and Gemma inference.
      • Add mmproj option to set the projection model.
      • Add image option to set the image.
    • 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.
  • [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 path_unlink_file for trailing slash path.
    • Fixed path_readlink for not following symbolic link issue.
    • Fixed path_open for checking O_TRUNC rights.
    • Fixed path_open for removing path relative rights on file.
    • Checking path_symlink for creating a symlink to an absolute path.
    • Checking fd_prestat_dir_name buffer size.
    • Checking filestat_set_times 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.
  • 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, Hrushikesh, Ikko Eltociear Ashimine, Khagan (Khan) Karimov, LO, CHIN-HAO, Little Willy, Lîm Tsú-thuàn, Meenu Yadav, Omkar Acharekar, Saiyam Pathak, Sarrah Bastawala, Shen-Ta Hsieh, Shreyas Atre, Yage Hu, Yi Huang, Yi-Ying He, alabulei1, am009, dm4, hetvishastri, hydai, richzw, tannal, vincent, zhumeme

If you want to build from source, please use WasmEdge-0.14.0-rc.4-src.tar.gz instead of the zip or tarball provided by GitHub directly.

WasmEdge - WasmEdge 0.14.0-rc.3

Published by github-actions[bot] 7 months ago

0.14.0-rc.3 (2024-03-22)

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 WasmEdge_ValType structure for replacing enum WasmEdge_ValType.
      • Merge the enum WasmEdge_ValType and enum WasmEdge_RefType 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.
      • WasmEdge_CompilerCompileFromBytes() API has the same function as WasmEdge_CompilerCompileFromBuffer() and will replace it in the future.
      • WasmEdge_LoaderParseFromBytes() API has the same function as WasmEdge_LoaderParseFromBuffer() and will replace it in the future.
      • WasmEdge_VMRegisterModuleFromBytes() API has the same function as WasmEdge_VMRegisterModuleFromBuffer() and will replace it in the future.
      • WasmEdge_VMRunWasmFromBytes() API has the same function as WasmEdge_VMRunWasmFromBuffer() and will replace it in the future.
      • WasmEdge_VMAsyncRunWasmFromBytes() API has the same function as WasmEdge_VMAsyncRunWasmFromBuffer() and will replace it in the future.
      • WasmEdge_VMLoadWasmFromBytes() API has the same function as WasmEdge_VMLoadWasmFromBuffer() and will replace it in the future.

Features:

  • Bumpped spdlog to v1.13.0.
  • [Proposal]: Apply new propoals.
    • Supported WASM Typed Function References proposal.
      • Added the WasmEdge_Proposal_FunctionReferences 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 WasmEdge_Proposal_GC for the configuration in WasmEdge C API.
      • Users can use the --enable-gc to enable the proposal in wasmedge and wasmedgec tools.
    • Component Model proposal (experimental, loader phase only).
      • Added the WasmEdge_Proposal_Component for the configuration in WasmEdge C API.
      • Users can use the --enable-function-reference 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.
      • WasmEdge_ValTypeGenI32() (replacing WasmEdge_ValType_I32)
      • WasmEdge_ValTypeGenI64() (replacing WasmEdge_ValType_I64)
      • WasmEdge_ValTypeGenF32() (replacing WasmEdge_ValType_F32)
      • WasmEdge_ValTypeGenF64() (replacing WasmEdge_ValType_F64)
      • WasmEdge_ValTypeGenV128() (replacing WasmEdge_ValType_V128)
      • WasmEdge_ValTypeGenFuncRef() (replacing WasmEdge_ValType_FuncRef)
      • WasmEdge_ValTypeGenExternRef() (replacing WasmEdge_ValType_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 buffers.
      • 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 b2479.
    • Support llama.cpp options:
      • threads: the thread number for inference.
      • temp: set temperature for inference.
      • repeat-penalty: set repeat penalty for inference.
    • Add enable-debug-log option to show more debug information.
    • Default enable Metal on macOS.
    • Introduce load_by_name_with_config() to load model with metadata.
    • Introduce single token inference by compute_single, get_output_single, and fini_single
    • 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.
    • Support Llava and Gemma inference.
      • Add mmproj option to set the projection model.
      • Add image option to set the image.
    • Support embedding generation.
  • [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.
  • [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 path_unlink_file for trailing slash path.
    • Fixed path_readlink for not following symbolic link issue.
    • Fixed path_open for checking O_TRUNC rights.
    • Fixed path_open for removing path relative rights on file.
    • Checking path_symlink for creating a symlink to an absolute path.
    • Checking fd_prestat_dir_name buffer size.
    • Checking filestat_set_times 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 2023/10/26.
  • Added the spec tests for the Typed Function Reference 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, Hrushikesh, Ikko Eltociear Ashimine, Khagan (Khan) Karimov, LO, CHIN-HAO, Little Willy, Lîm Tsú-thuàn, Meenu Yadav, Omkar Acharekar, Saiyam Pathak, Sarrah Bastawala, Shen-Ta Hsieh, Shreyas Atre, Yage Hu, Yi Huang, Yi-Ying He, alabulei1, am009, dm4, hetvishastri, hydai, richzw, tannal, vincent, zhumeme

If you want to build from source, please use WasmEdge-0.14.0-rc.3-src.tar.gz instead of the zip or tarball provided by GitHub directly.

WasmEdge - WasmEdge 0.14.0-rc.2

Published by github-actions[bot] 7 months ago

0.14.0-rc.2 (2024-03-20)

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 WasmEdge_ValType structure for replacing enum WasmEdge_ValType.
      • Merge the enum WasmEdge_ValType and enum WasmEdge_RefType 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.
      • WasmEdge_CompilerCompileFromBytes() API has the same function as WasmEdge_CompilerCompileFromBuffer() and will replace it in the future.
      • WasmEdge_LoaderParseFromBytes() API has the same function as WasmEdge_LoaderParseFromBuffer() and will replace it in the future.
      • WasmEdge_VMRegisterModuleFromBytes() API has the same function as WasmEdge_VMRegisterModuleFromBuffer() and will replace it in the future.
      • WasmEdge_VMRunWasmFromBytes() API has the same function as WasmEdge_VMRunWasmFromBuffer() and will replace it in the future.
      • WasmEdge_VMAsyncRunWasmFromBytes() API has the same function as WasmEdge_VMAsyncRunWasmFromBuffer() and will replace it in the future.
      • WasmEdge_VMLoadWasmFromBytes() API has the same function as WasmEdge_VMLoadWasmFromBuffer() and will replace it in the future.

Features:

  • Bumpped spdlog to v1.13.0.
  • [Proposal]: Apply new propoals.
    • Supported WASM Typed Function References proposal.
      • Added the WasmEdge_Proposal_FunctionReferences 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 WasmEdge_Proposal_GC for the configuration in WasmEdge C API.
      • Users can use the --enable-gc to enable the proposal in wasmedge and wasmedgec tools.
    • Component Model proposal (experimental, loader phase only).
      • Added the WasmEdge_Proposal_Component 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.
      • WasmEdge_ValTypeGenI32() (replacing WasmEdge_ValType_I32)
      • WasmEdge_ValTypeGenI64() (replacing WasmEdge_ValType_I64)
      • WasmEdge_ValTypeGenF32() (replacing WasmEdge_ValType_F32)
      • WasmEdge_ValTypeGenF64() (replacing WasmEdge_ValType_F64)
      • WasmEdge_ValTypeGenV128() (replacing WasmEdge_ValType_V128)
      • WasmEdge_ValTypeGenFuncRef() (replacing WasmEdge_ValType_FuncRef)
      • WasmEdge_ValTypeGenExternRef() (replacing WasmEdge_ValType_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 buffers.
      • 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 b2334.
    • Support llama.cpp options:
      • threads: the thread number for inference.
      • temp: set temperature for inference.
      • repeat-penalty: set repeat penalty for inference.
    • Add enable-debug-log option to show more debug information.
    • Default enable Metal on macOS.
    • Introduce load_by_name_with_config() to load model with metadata.
    • Introduce single token inference by compute_single, get_output_single, and fini_single
    • 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.
    • Support Llava and Gemma inference.
      • Add mmproj option to set the projection model.
      • Add image option to set the image.
    • Support embedding generation.
  • [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.
  • [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 path_unlink_file for trailing slash path.
    • Fixed path_readlink for not following symbolic link issue.
    • Fixed path_open for checking O_TRUNC rights.
    • Fixed path_open for removing path relative rights on file.
    • Checking path_symlink for creating a symlink to an absolute path.
    • Checking fd_prestat_dir_name buffer size.
    • Checking filestat_set_times 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 2023/10/26.
  • Added the spec tests for the Typed Function Reference 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, Hrushikesh, Ikko Eltociear Ashimine, Khagan (Khan) Karimov, LO, CHIN-HAO, Little Willy, Lîm Tsú-thuàn, Meenu Yadav, Omkar Acharekar, Saiyam Pathak, Sarrah Bastawala, Shen-Ta Hsieh, Shreyas Atre, Yage Hu, Yi Huang, Yi-Ying He, alabulei1, am009, dm4, hetvishastri, hydai, richzw, tannal, vincent, zhumeme

If you want to build from source, please use WasmEdge-0.14.0-rc.2-src.tar.gz instead of the zip or tarball provided by GitHub directly.

WasmEdge - WasmEdge 0.14.0-rc.1

Published by github-actions[bot] 7 months ago

0.14.0-rc.1 (2024-03-15)

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 WasmEdge_ValType structure for replacing enum WasmEdge_ValType.
      • Merge the enum WasmEdge_ValType and enum WasmEdge_RefType 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.
      • WasmEdge_CompilerCompileFromBytes() API has the same function as WasmEdge_CompilerCompileFromBuffer() and will replace it in the future.
      • WasmEdge_LoaderParseFromBytes() API has the same function as WasmEdge_LoaderParseFromBuffer() and will replace it in the future.
      • WasmEdge_VMRegisterModuleFromBytes() API has the same function as WasmEdge_VMRegisterModuleFromBuffer() and will replace it in the future.
      • WasmEdge_VMRunWasmFromBytes() API has the same function as WasmEdge_VMRunWasmFromBuffer() and will replace it in the future.
      • WasmEdge_VMAsyncRunWasmFromBytes() API has the same function as WasmEdge_VMAsyncRunWasmFromBuffer() and will replace it in the future.
      • WasmEdge_VMLoadWasmFromBytes() API has the same function as WasmEdge_VMLoadWasmFromBuffer() and will replace it in the future.

Features:

  • Bumpped spdlog to v1.13.0.
  • [Proposal]: Apply new propoals.
    • Supported WASM Typed Function References proposal.
      • Added the WasmEdge_Proposal_FunctionReferences 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 WasmEdge_Proposal_GC for the configuration in WasmEdge C API.
      • Users can use the --enable-gc to enable the proposal in wasmedge and wasmedgec tools.
    • Component Model proposal (experimental, loader phase only).
      • Added the WasmEdge_Proposal_Component for the configuration in WasmEdge C API.
      • Users can use the --enable-function-reference 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.
      • WasmEdge_ValTypeGenI32() (replacing WasmEdge_ValType_I32)
      • WasmEdge_ValTypeGenI64() (replacing WasmEdge_ValType_I64)
      • WasmEdge_ValTypeGenF32() (replacing WasmEdge_ValType_F32)
      • WasmEdge_ValTypeGenF64() (replacing WasmEdge_ValType_F64)
      • WasmEdge_ValTypeGenV128() (replacing WasmEdge_ValType_V128)
      • WasmEdge_ValTypeGenFuncRef() (replacing WasmEdge_ValType_FuncRef)
      • WasmEdge_ValTypeGenExternRef() (replacing WasmEdge_ValType_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 buffers.
      • 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 b2334.
    • Support llama.cpp options:
      • threads: the thread number for inference.
      • temp: set temperature for inference.
      • repeat-penalty: set repeat penalty for inference.
    • Add enable-debug-log option to show more debug information.
    • Default enable Metal on macOS.
    • Introduce load_by_name_with_config() to load model with metadata.
    • Introduce single token inference by compute_single, get_output_single, and fini_single
    • 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.
    • Support Llava and Gemma inference.
      • Add mmproj option to set the projection model.
      • Add image option to set the image.
    • Support embedding generation.
  • [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.
  • [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 path_unlink_file for trailing slash path.
    • Fixed path_readlink for not following symbolic link issue.
    • Fixed path_open for checking O_TRUNC rights.
    • Fixed path_open for removing path relative rights on file.
    • Checking path_symlink for creating a symlink to an absolute path.
    • Checking fd_prestat_dir_name buffer size.
    • Checking filestat_set_times 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 2023/10/26.
  • Added the spec tests for the Typed Function Reference 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, Hrushikesh, Ikko Eltociear Ashimine, Khagan (Khan) Karimov, LO, CHIN-HAO, Little Willy, Lîm Tsú-thuàn, Meenu Yadav, Omkar Acharekar, Saiyam Pathak, Sarrah Bastawala, Shen-Ta Hsieh, Shreyas Atre, Yage Hu, Yi Huang, Yi-Ying He, alabulei1, am009, dm4, hetvishastri, hydai, richzw, tannal, vincent, zhumeme

If you want to build from source, please use WasmEdge-0.14.0-rc.1-src.tar.gz instead of the zip or tarball provided by GitHub directly.

WasmEdge - WasmEdge 0.14.0-alpha.3

Published by github-actions[bot] 8 months ago

0.14.0-alpha.3 (2024-03-05)

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 WasmEdge_ValType structure for replacing enum WasmEdge_ValType.
      • Merge the enum WasmEdge_ValType and enum WasmEdge_RefType 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.
      • WasmEdge_CompilerCompileFromBytes() API has the same function as WasmEdge_CompilerCompileFromBuffer() and will replace it in the future.
      • WasmEdge_LoaderParseFromBytes() API has the same function as WasmEdge_LoaderParseFromBuffer() and will replace it in the future.
      • WasmEdge_VMRegisterModuleFromBytes() API has the same function as WasmEdge_VMRegisterModuleFromBuffer() and will replace it in the future.
      • WasmEdge_VMRunWasmFromBytes() API has the same function as WasmEdge_VMRunWasmFromBuffer() and will replace it in the future.
      • WasmEdge_VMAsyncRunWasmFromBytes() API has the same function as WasmEdge_VMAsyncRunWasmFromBuffer() and will replace it in the future.
      • WasmEdge_VMLoadWasmFromBytes() API has the same function as WasmEdge_VMLoadWasmFromBuffer() and will replace it in the future.

Features:

  • [Proposal]: Apply new propoals.
    • Supported WASM Typed Function References proposal.
      • Added the WasmEdge_Proposal_FunctionReferences 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 WasmEdge_Proposal_GC for the configuration in WasmEdge C API.
      • Users can use the --enable-gc to enable the proposal in wasmedge and wasmedgec tools.
    • Component Model proposal (experimental, loader phase only).
      • Added the WasmEdge_Proposal_Component for the configuration in WasmEdge C API.
      • Users can use the --enable-function-reference 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.
      • WasmEdge_ValTypeGenI32() (replacing WasmEdge_ValType_I32)
      • WasmEdge_ValTypeGenI64() (replacing WasmEdge_ValType_I64)
      • WasmEdge_ValTypeGenF32() (replacing WasmEdge_ValType_F32)
      • WasmEdge_ValTypeGenF64() (replacing WasmEdge_ValType_F64)
      • WasmEdge_ValTypeGenV128() (replacing WasmEdge_ValType_V128)
      • WasmEdge_ValTypeGenFuncRef() (replacing WasmEdge_ValType_FuncRef)
      • WasmEdge_ValTypeGenExternRef() (replacing WasmEdge_ValType_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 buffers.
      • 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 b2334.
    • Support llama.cpp options:
      • threads: the thread number for inference.
      • temp: set temperature for inference.
      • repeat-penalty: set repeat penalty for inference.
    • Add enable-debug-log option to show more debug information.
    • Default enable Metal on macOS.
    • Introduce load_by_name_with_config() to load model with metadata.
    • Introduce single token inference by compute_single, get_output_single, and fini_single
    • 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.
    • Support Llava and Gemma inference.
      • Add mmproj option to set the projection model.
      • Add image option to set the image.
    • Support embedding generation.

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.
  • [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 path_unlink_file for trailing slash path.
    • Fixed path_readlink for not following symbolic link issue.
    • Fixed path_open for checking O_TRUNC rights.
    • Fixed path_open for removing path relative rights on file.
    • Checking path_symlink for creating a symlink to an absolute path.
    • Checking fd_prestat_dir_name buffer size.
    • Checking filestat_set_times for invalid flags.
    • Checking validation of file descriptor in socket_accept (#3041).

Tests:

  • Updated the WASM spec tests to the date 2023/10/26.
  • Added the spec tests for the Typed Function Reference 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, Dhruv Jain, Draco, Ikko Eltociear Ashimine, Khagan (Khan) Karimov, LO, CHIN-HAO, Little Willy, Lîm Tsú-thuàn, Meenu Yadav, Omkar Acharekar, Saiyam Pathak, Sarrah Bastawala, Shen-Ta Hsieh, Shreyas Atre, Yage Hu, Yi Huang, Yi-Ying He, alabulei1, am009, dm4, hetvishastri, hydai, richzw, tannal, vincent, zhumeme

If you want to build from source, please use WasmEdge-0.14.0-alpha.3-src.tar.gz instead of the zip or tarball provided by GitHub directly.

WasmEdge - WasmEdge 0.14.0-alpha.2

Published by github-actions[bot] 8 months ago

0.14.0-alpha.2 (2024-02-23)

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 WasmEdge_ValType structure for replacing enum WasmEdge_ValType.
      • Merge the enum WasmEdge_ValType and enum WasmEdge_RefType 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.
      • WasmEdge_CompilerCompileFromBytes() API has the same function as WasmEdge_CompilerCompileFromBuffer() and will replace it in the future.
      • WasmEdge_LoaderParseFromBytes() API has the same function as WasmEdge_LoaderParseFromBuffer() and will replace it in the future.
      • WasmEdge_VMRegisterModuleFromBytes() API has the same function as WasmEdge_VMRegisterModuleFromBuffer() and will replace it in the future.
      • WasmEdge_VMRunWasmFromBytes() API has the same function as WasmEdge_VMRunWasmFromBuffer() and will replace it in the future.
      • WasmEdge_VMAsyncRunWasmFromBytes() API has the same function as WasmEdge_VMAsyncRunWasmFromBuffer() and will replace it in the future.
      • WasmEdge_VMLoadWasmFromBytes() API has the same function as WasmEdge_VMLoadWasmFromBuffer() and will replace it in the future.

Features:

  • [Proposal]: Apply new propoals.
    • Supported WASM Typed Function References proposal.
      • Added the WasmEdge_Proposal_FunctionReferences 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 WasmEdge_Proposal_GC for the configuration in WasmEdge C API.
      • Users can use the --enable-gc to enable the proposal in wasmedge and wasmedgec tools.
    • Component Model proposal (experimental, loader phase only).
      • Added the WasmEdge_Proposal_Component for the configuration in WasmEdge C API.
      • Users can use the --enable-function-reference 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.
      • WasmEdge_ValTypeGenI32() (replacing WasmEdge_ValType_I32)
      • WasmEdge_ValTypeGenI64() (replacing WasmEdge_ValType_I64)
      • WasmEdge_ValTypeGenF32() (replacing WasmEdge_ValType_F32)
      • WasmEdge_ValTypeGenF64() (replacing WasmEdge_ValType_F64)
      • WasmEdge_ValTypeGenV128() (replacing WasmEdge_ValType_V128)
      • WasmEdge_ValTypeGenFuncRef() (replacing WasmEdge_ValType_FuncRef)
      • WasmEdge_ValTypeGenExternRef() (replacing WasmEdge_ValType_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 buffers.
      • 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 b2230.
    • Support llama.cpp options:
      • threads: the thread number for inference.
      • temp: set temperature for inference.
      • repeat-penalty: set repeat penalty for inference.
    • Add enable-debug-log option to show more debug information.
    • Default enable Metal on macOS.
    • Introduce load_by_name_with_config() to load model with metadata.
    • Introduce single token inference by compute_single, get_output_single, and fini_single
    • 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.
    • Support Llava and Gemma inference.
      • Add mmproj option to set the projection model.
      • Add image option to set the image.
    • Support embedding generation.

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.
  • [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 path_unlink_file for trailing slash path.
    • Fixed path_readlink for not following symbolic link issue.
    • Fixed path_open for checking O_TRUNC rights.
    • Fixed path_open for removing path relative rights on file.
    • Checking path_symlink for creating a symlink to an absolute path.
    • Checking fd_prestat_dir_name buffer size.
    • Checking filestat_set_times for invalid flags.
    • Checking validation of file descriptor in socket_accept (#3041).

Tests:

  • Updated the WASM spec tests to the date 2023/10/26.
  • Added the spec tests for the Typed Function Reference 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, Dhruv Jain, Draco, Ikko Eltociear Ashimine, Khagan (Khan) Karimov, LO, CHIN-HAO, Little Willy, Lîm Tsú-thuàn, Meenu Yadav, Omkar Acharekar, Saiyam Pathak, Sarrah Bastawala, Shen-Ta Hsieh, Shreyas Atre, Yage Hu, Yi Huang, Yi-Ying He, alabulei1, am009, dm4, hydai, richzw, vincent, zhumeme

If you want to build from source, please use WasmEdge-0.14.0-alpha.2-src.tar.gz instead of the zip or tarball provided by GitHub directly.

WasmEdge - WasmEdge 0.14.0-alpha.1

Published by github-actions[bot] 10 months ago

0.14.0-alpha.1 (2024-01-05)

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 WasmEdge_ValType structure for replacing enum WasmEdge_ValType.
      • Merge the enum WasmEdge_ValType and enum WasmEdge_RefType 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.
      • WasmEdge_CompilerCompileFromBytes() API has the same function as WasmEdge_CompilerCompileFromBuffer() and will replace it in the future.
      • WasmEdge_LoaderParseFromBytes() API has the same function as WasmEdge_LoaderParseFromBuffer() and will replace it in the future.
      • WasmEdge_VMRegisterModuleFromBytes() API has the same function as WasmEdge_VMRegisterModuleFromBuffer() and will replace it in the future.
      • WasmEdge_VMRunWasmFromBytes() API has the same function as WasmEdge_VMRunWasmFromBuffer() and will replace it in the future.
      • WasmEdge_VMAsyncRunWasmFromBytes() API has the same function as WasmEdge_VMAsyncRunWasmFromBuffer() and will replace it in the future.
      • WasmEdge_VMLoadWasmFromBytes() API has the same function as WasmEdge_VMLoadWasmFromBuffer() and will replace it in the future.

Features:

  • [Proposal]: Apply new propoals.
    • Supported WASM Typed Function References proposal.
      • Added the WasmEdge_Proposal_FunctionReferences for the configuration in WasmEdge C API.
      • Users can use the --enable-function-reference to enable the proposal in wasmedge and wasmedgec tools.
    • Component Model proposal (experimental, loader phase only).
      • Added the WasmEdge_Proposal_Component for the configuration in WasmEdge C API.
      • Users can use the --enable-function-reference to enable the proposal in wasmedge tool.
  • [C API]: New C API for supporting the new proposals.
    • WasmEdge_ValType related APIs can help developers to generate or compare value types.
      • WasmEdge_ValTypeGenI32() (replacing WasmEdge_ValType_I32)
      • WasmEdge_ValTypeGenI64() (replacing WasmEdge_ValType_I64)
      • WasmEdge_ValTypeGenF32() (replacing WasmEdge_ValType_F32)
      • WasmEdge_ValTypeGenF64() (replacing WasmEdge_ValType_F64)
      • WasmEdge_ValTypeGenV128() (replacing WasmEdge_ValType_V128)
      • WasmEdge_ValTypeGenFuncRef() (replacing WasmEdge_ValType_FuncRef)
      • WasmEdge_ValTypeGenExternRef() (replacing WasmEdge_ValType_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 buffers.
      • 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 b1743
    • Support llama.cpp options:
      • threads: the thread number for inference.
      • temp: set temperature for inference.
      • repeat-penalty: set repeat penalty for inference.
    • Add enable-debug-log option to show more debug information.
    • Default enable Metal on macOS.
    • Introduce load_by_name_with_config() to load model with metadata.
    • Introduce single token inference by compute_single, get_output_single, and fini_single
    • 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.

Fixed issues:

  • Fixed some API document in the API header.
  • [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 path_unlink_file for trailing slash path.
    • Fixed path_readlink for not following symbolic link issue.
    • Fixed path_open for checking O_TRUNC rights.
    • Fixed path_open for removing path relative rights on file.
    • Checking path_symlink for creating a symlink to an absolute path.
    • Checking fd_prestat_dir_name buffer size.
    • Checking filestat_set_times for invalid flags.
    • Checking validation of file descriptor in socket_accept (#3041).

Tests:

  • Updated the WASM spec tests to the date 2023/10/26.
  • Added the spec tests for the Typed Function Reference 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, Dhruv Jain, Draco, Little Willy, Lîm Tsú-thuàn, Meenu Yadav, Omkar Acharekar, Saiyam Pathak, Shen-Ta Hsieh, Shreyas Atre, Yage Hu, Yi-Ying He, alabulei1, am009, dm4, hydai, richzw, zhumeme

If you want to build from source, please use WasmEdge-0.14.0-alpha.1-src.tar.gz instead of the zip or tarball provided by GitHub directly.

WasmEdge - WasmEdge 0.13.5

Published by github-actions[bot] 12 months ago

0.13.5 (2023-11-03)

Features:

  • [Component] share loading entry for component and module (#2945)
    • Initial support for the component model proposal.
    • This PR allows WasmEdge to recognize the component and module format.
  • [WASI-NN] ggml backend:
    • Provide options for enabling OpenBLAS, Metal, and cuBLAS.
    • Bump llama.cpp to b1383
    • Build thirdparty/ggml only when the ggml backend is enabled.
    • Enable the ggml plugin on the macOS platform.
    • Introduce AUTO detection. Wasm application will no longer need to specify the hardware spec (e.g., CPU or GPU). It will auto-detect by the runtime.
    • Unified the preload options with case-insensitive matching
    • Introduce metadata for setting the ggml options.
      • The following options are supported:
        • enable-log: true to enable logging. (default: false)
        • stream-stdout: true to print the inferred tokens in the streaming mode to standard output. (default: false)
        • ctx-size: Set the context size the same as the --ctx-size parameter in llama.cpp. (default: 512)
        • n-predict: Set the number of tokens to predict, the same as the --n-predict parameter in llama.cpp. (default: 512)
        • n-gpu-layers: Set the number of layers to store in VRAM, the same as the --n-gpu-layers parameter in llama.cpp. (default: 0)
        • reverse-prompt: Set the token pattern at which you want to halt the generation. Similar to the --reverse-prompt parameter in llama.cpp. (default: "")
        • batch-size: Set the number of batch sizes for prompt processing, the same as the --batch-size parameter in llama.cpp. (default: 512)
    • Notice: Because of the limitation of the WASI-NN proposal, there is no way to set the metadata during the loading process. The current workaround will re-load the model when n_gpu_layers is set to a non-zero value.
    • Installer: Support WASI-NN ggml plugin on both macOS Intel model (CPU only) and macOS Apple Silicon model. (#2882)
  • [Java Bindings] provide platform-specific jni and jar for Java bindings (#2980)
  • [C API]:
    • Provide getData API for FunctionInstance (#2937)
    • Add the API to set WASI-NN preloads. (#2827)
  • [Plugin]:
    • [zlib]:
      • initial support of the zlib plugin (#2562)
      • With a simple building guide and basic working examples
  • [MSVC] Support MSVC for building WasmEdge
  • [AOT] Support LLVM 17

Fixed issues:

  • [Installer]: Double quote the strings to prevent splitting in env file (#2994)
  • [AOT]:
    • Validate AOT section header fields
    • Add invariant attribute for memory and global pointer
  • [C API]:
    • Fix the wrong logic of getting types from exports.
  • [Example] Fix get-string with the latest C++ internal getSpan API. Fixes #2887 (#2929)
  • [CI] install llvm@16 to fix macOS build (#2878)

Misc:

  • [Example] Update wit-bindgen version from 0.7.0 to 0.11.0 (#2770)

Thank all the contributors who made this release possible!

dm4, hydai, Lîm Tsú-thuàn, Meenu Yadav, michael1017, proohit, Saikat Dey, Shen-Ta Hsieh, Shreyas Atre, Wang Jikai, Wck-iipi, YiYing He

If you want to build from source, please use WasmEdge-0.13.5-src.tar.gz instead of the zip or tarball provided by GitHub directly.

WasmEdge - WasmEdge 0.13.4

Published by github-actions[bot] about 1 year ago

0.13.4 (2023-09-05)

Features:

  • [C API] Provide API for registering the Pre- and Post- host functions
    • Pre host function will be triggered before calling every host function
    • Post host function will be triggered after calling every host function
  • [CI] Update llvm-windows from 13.0.3 to 16.0.6
    • WasmEdge supports multiple LLVM version, users can choose whatever they want.
    • This change is for CI.
  • [CI] build alpine static libraries (#2699)
    • This provides pre-built static libraries using musl-libc on alpine.
  • [Plugin] add wasmedge_rustls_plugin (#2762)
  • [Plugin] implement opencvmini rectangle and cvtColor (#2705)
  • [Test] Migrating spec test from RapidJSON to SIMDJSON (#2659)
  • [WASI Socket] AF_UNIX Support (#2216)
    • This is disable by default.
    • How to enable this feature:
      • CLI: Use --allow-af-unix.
      • C API: Use WasmEdge\_ConfigureSetAllowAFUNIX.
  • [WASI-NN] Add ggml backend for llama (#2763)
    • Integrate llama.cpp as a new WASI-NN backend.
  • [WASI-NN] Add load_by_name implementation into wasi-nn plugin (#2742)
    • Support named_model feature.
  • [WASI-NN] Added support for Tuple Type Output Tensors in Pytorch Backend (#2564)

Fixed issues:

  • [AOT] Fix fallback case of compileVectorExtAddPairwise. (#2736)
  • [AOT] Fix the neontbl1 codegen error on macOS (#2738)
  • [Runtime] fix memory.init oob. issue #2743 (#2758)
  • [Runtime] fix table.init oob. issue #2744 (#2756)
  • [System] Remove "inline" from Fault::emitFault (#2695) (#2720)
  • [Test] Use std::filesystem::u8path instead of a const char* Path (#2706)
  • [Utils] Installer: Fix checking of shell paths (#2752)
  • [Utils] Installer: Formatting and Better source message (#2721)
  • [WASI] Avoid undefined function FindHolderBase::reset
  • [WASI] itimerspec with 0 timeout will disarm timer, +1 to workaround (#2730)

Thank all the contributors that made this release possible!

Adithya Krishna, Divyanshu Gupta, Faidon Liambotis, Jorge Prendes, LFsWang, Lev Veyde, Lîm Tsú-thuàn, Sarrah Bastawala, Shen-Ta Hsieh, Shreyas Atre, Vedant R. Nimje, Yi-Ying He, alabulei1, am009, dm4, erxiaozhou, hydai, vincent, zzz

If you want to build from source, please use WasmEdge-0.13.4-src.tar.gz instead of the zip or tarball provided by GitHub directly.

WasmEdge - WasmEdge 0.13.3

Published by github-actions[bot] about 1 year ago

0.13.3 (2023-07-25)

This is a bugfix release.

Features:

  • [CMake] Add a flag to disable libtinfo (#2676)
  • [Plugin] Implement OpenCV-mini (#2648)
  • [CI] Build wasmedge on Nix (#2674)

Fixed issues:

  • WASI Socket: Remove unused fds before closing them. (#2675), part of #2662

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.
  • WasmEdge CLI failed on Windows 10 issue.

Thank all the contributors that made this release possible!

Lîm Tsú-thuàn, Tricster, Tyler Rockwood

If you want to build from source, please use WasmEdge-0.13.3-src.tar.gz instead of the zip or tarball provided by GitHub directly.

WasmEdge - WasmEdge 0.13.2

Published by github-actions[bot] about 1 year ago

0.13.2 (2023-07-21)

This is a bugfix release.

Features:

  • Provide static library on x86_64 and aarch64 Linux (#2666)
  • Provide wasm_bpf plugins in the release assets (#2610)
  • WASI-NN: Updating install script for OpenVino 2023.0.0 version (#2636)
  • Installer: Add new tags support for wasmedge-tensorflow (#2608)
  • Fuss: Use own implement of BoyerMooreHorspoolSearcher (#2657)

Fixed issues:

  • WASI Socket: Fix blocking when multiple requests have the same fds. (#2662)
  • Utils: devtoolset-11 is not available on manylinux2014 aarch64, downgrade to devtoolset-10 (#2663)

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.
  • WasmEdge CLI failed on Windows 10 issue.

Thank all the contributors that made this release possible!

Divyanshu Gupta, Faidon Liambotis, hydai, Jorge Prendes, Officeyutong, Shen-Ta Hsieh, Shreyas Atre, Tricster, YiYing He

If you want to build from source, please use WasmEdge-0.13.2-src.tar.gz instead of the zip or tarball provided by GitHub directly.

WasmEdge - WasmEdge 0.13.1

Published by github-actions[bot] over 1 year ago

0.13.1 (2023-07-06)

This is a bugfix release.

Fixed issues:

  • Rollback the WasmEdge WASI Socket behavior of V1 functions.
    • Related functions: getlocaladdr, and getpeeraddr
    • Reason:
      • The address type should be INET4(0) and INET6(1).
      • This regrasion is introduced in #2557.
      • However, the original values of the previous version (< 0.13.0): INET4(4) and INET6(6).
      • To avoid this incompatible behavior, we choose to keep the old behavior.

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.
  • WasmEdge CLI failed on Windows 10 issue.

Thank all the contributors that made this release possible!

If you want to build from source, please use WasmEdge-0.13.1-src.tar.gz instead of the zip or tarball provided by GitHub directly.

WasmEdge - WasmEdge 0.13.0

Published by github-actions[bot] over 1 year ago

0.13.0 (2023-06-30)

Breaking changes:

Features:

  • Updated the WasmEdge shared library.
    • Due to the breaking change of API, bump the SOVERSION to 0.0.3.
  • Unified the wasmedge CLI tool.
    • Supported the subcommand run and compile for the wasmedge CLI.
    • Users now can use the command wasmedge run [ARGS] to drive the original wasmedge tool.
    • Users now can use the command wasmedge compile [ARGS] to drive the original wasmedgec AOT compiler tool.
  • Made WasmEdge on armv7l great again.
  • Bumpped spdlog to v1.11.0.
    • Refactored the logs to use the fmt for formatting.
  • Bumpped blake3 to 1.3.3.
  • Added the CMake option WASMEDGE_ENABLE_UB_SANITIZER to enable the undefined behavior sanitizer.
  • Deprecated the wasmedge_httpsreq plug-in.
  • Migrated the WasmEdge extensions into plug-ins.
    • Migrated the WasmEdge-image into the wasmedge_image plug-in.
    • Migrated the WasmEdge-tensorflow into the wasmedge_tensorflow and wasmedge_tensorflowlite plug-ins.
    • Supported manylinux2014_x86_64, manylinux2014_aarch64, darwin_x86_64, and darwin_arm64 platforms for the above plug-ins.
  • Introduced the wasi_logging plug-in.
  • Added GPU support for WASI-NN PyTorch backend.
  • New APIs for containing data into module instances when in creation.
    • Added the WasmEdge_ModuleInstanceCreateWithData() API for creating a module instance with data and its finalizer callback function pointer.
    • Added the WasmEdge_ModuleInstanceGetHostData() API for accessing the host data set into the module instance.
  • Supported the async invocation with executor.
    • Added the WasmEdge_ExecutorAsyncInvoke() API for invoking a WASM function asynchronously.
  • Added helper functions for Windows CLI.
    • Added the WasmEdge_Driver_ArgvCreate() and WasmEdge_Driver_ArgvDelete() APIs to convert UTF-16 arguments to UTF-8.
    • Added the WasmEdge_Driver_SetConsoleOutputCPtoUTF8() API to set the output code page to UTF-8.
  • Added the unifed tool API.
    • Added the WasmEdge_Driver_UniTool() API to trigger the WasmEdge CLI tool with command line arguments.

Fixed issues:

  • Fixed the WasmEdge C API static library linking command for llvm-ar-14.
  • Fixed the undefined behavior issues in Loader and Validator.
  • Fixed the WASI issues.
    • Denied the absolute path accessing.
    • Opened directories with __WASI_OFLAGS_DIRECTORY flag.
    • Don't use O_PATH unless flag is exactly __WASI_OFLAGS_DIRECTORY.
    • Removed seeking rights on directories.
    • Fixed checking wrong rights in path_open.
    • Allowed renumbering and closing preopened fd.
    • Disallowed accessing parent directory through ...
    • Don't write null pointer at end of args/envs pointer array.
    • Don't write first entry when buffer size is zero.
    • Removed unused VFS objects.
    • Fixed the fd_readdir.
    • Corrected the readonly inheriting right.
  • Fixed plug-in issues.
    • Fixed the error enumeration in WASI-NN.
    • Fixed the error messages of tensor type in WASI-NN Tensorflow-Lite backend.
    • Handled the model data ownership in WASI-NN Tensorflow-Lite backend.
    • Returned error with the following cases in WASI-Crypto, because OpenSSL 3.0 didn't implement context duplication for aes-gcm and chacha20.

Refactor:

  • Moved the Windows API definitions to include/system/winapi.h.
  • Dropped the boost dependency.
    • Replaced the boost endian detection by the macros.
    • Used the std::boyer_moore_horspool_searcher instead.
  • Refactored the functions for accessing slides on memory instances.
  • Moved the WasmEdge::VM::Async class to the include/common for supporting async invocation in executor.
  • Refactored the WASI host functions.
    • Removed duplicate codes on poll_oneoff with edge-trigger configuration.
    • Refactored Poller interface for reusing the same objects.
    • Supported absolute time flags for poll_oneoff on MacOS.
    • Used static vector to speedup CI.
    • Refactored the internal APIs of wasi-socket.
  • Refactored the WASI-NN plug-in source.
    • Refined the WASI-NN dependency linking in CMake.
    • Separated the source files for different backends.

Documentations:

Tests:

  • Updated the WASM spec tests to the date 2023/05/11.
  • Added the plug-in unit tests and CI for Linux and MacOS platforms.
  • Added new test cases of cxx20::expected.

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.
  • WasmEdge CLI failed on Windows 10 issue.

Thank all the contributors that made this release possible!

Adithya Krishna, Chris O'Hara, Edward Chen, Louis Tu, Lîm Tsú-thuàn, Maurizio Pillitu, Officeyutong, Shen-Ta Hsieh, Shreyas Atre, Tricster, Tyler Rockwood, Xin Liu, YiYing He, Yu Xingzi, alabulei1, hydai, michael1017, vincent, yanghaku

If you want to build from source, please use WasmEdge-0.13.0-src.tar.gz instead of the zip or tarball provided by GitHub directly.

WasmEdge - WasmEdge 0.13.0-alpha.1

Published by github-actions[bot] over 1 year ago

0.13.0-alpha.1 (2023-06-21)

Breaking changes:

Features:

  • Updated the WasmEdge shared library.
    • Due to the breaking change of API, bump the SOVERSION to 0.0.3.
  • Unified the wasmedge CLI tool.
    • Supported the subcommand run and compile for the wasmedge CLI.
    • Users now can use the command wasmedge run [ARGS] to drive the original wasmedge tool.
    • Users now can use the command wasmedge compile [ARGS] to drive the original wasmedgec AOT compiler tool.
  • Made WasmEdge on armv7l great again.
  • Bumpped spdlog to v1.11.0.
    • Refactored the logs to use the fmt for formatting.
  • Bumpped blake3 to 1.3.3.
  • Added the CMake option WASMEDGE_ENABLE_UB_SANITIZER to enable the undefined behavior sanitizer.
  • Deprecated the wasmedge_httpsreq plug-in.
  • Migrated the WasmEdge extensions into plug-ins.
    • Migrated the WasmEdge-image into the wasmedge_image plug-in.
    • Migrated the WasmEdge-tensorflow into the wasmedge_tensorflow and wasmedge_tensorflowlite plug-ins.
    • Supported manylinux2014_x86_64, manylinux2014_aarch64, darwin_x86_64, and darwin_arm64 platforms for the above plug-ins.
  • Introduced the wasi_logging plug-in.
  • Added GPU support for WASI-NN PyTorch backend.
  • New APIs for containing data into module instances when in creation.
    • Added the WasmEdge_ModuleInstanceCreateWithData() API for creating a module instance with data and its finalizer callback function pointer.
    • Added the WasmEdge_ModuleInstanceGetHostData() API for accessing the host data set into the module instance.
  • Supported the async invocation with executor.
    • Added the WasmEdge_ExecutorAsyncInvoke() API for invoking a WASM function asynchronously.
  • Added helper functions for Windows CLI.
    • Added the WasmEdge_Driver_ArgvCreate() and WasmEdge_Driver_ArgvDelete() APIs to convert UTF-16 arguments to UTF-8.
    • Added the WasmEdge_Driver_SetConsoleOutputCPtoUTF8() API to set the output code page to UTF-8.
  • Added the unifed tool API.
    • Added the WasmEdge_Driver_UniTool() API to trigger the WasmEdge CLI tool with command line arguments.

Fixed issues:

  • Fixed the WasmEdge C API static library linking command for llvm-ar-14.
  • Fixed the undefined behavior issues in Loader and Validator.
  • Fixed the WASI issues.
    • Denied the absolute path accessing.
    • Opened directories with __WASI_OFLAGS_DIRECTORY flag.
    • Don't use O_PATH unless flag is exactly __WASI_OFLAGS_DIRECTORY.
    • Removed seeking rights on directories.
    • Fixed checking wrong rights in path_open.
    • Allowed renumbering and closing preopened fd.
    • Disallowed accessing parent directory through ...
    • Don't write null pointer at end of args/envs pointer array.
    • Don't write first entry when buffer size is zero.
    • Removed unused VFS objects.
    • Fixed the fd_readdir.
    • Corrected the readonly inheriting right.
  • Fixed plug-in issues.
    • Fixed the error enumeration in WASI-NN.
    • Fixed the error messages of tensor type in WASI-NN Tensorflow-Lite backend.
    • Handled the model data ownership in WASI-NN Tensorflow-Lite backend.
    • Returned error with the following cases in WASI-Crypto, because OpenSSL 3.0 didn't implement context duplication for aes-gcm and chacha20.

Refactor:

  • Moved the Windows API definitions to include/system/winapi.h.
  • Dropped the boost dependency.
    • Replaced the boost endian detection by the macros.
    • Used the std::boyer_moore_horspool_searcher instead.
  • Refactored the functions for accessing slides on memory instances.
  • Moved the WasmEdge::VM::Async class to the include/common for supporting async invocation in executor.
  • Refactored the WASI host functions.
    • Removed duplicate codes on poll_oneoff with edge-trigger configuration.
    • Refactored Poller interface for reusing the same objects.
    • Supported absolute time flags for poll_oneoff on MacOS.
    • Used static vector to speedup CI.
    • Refactored the internal APIs of wasi-socket.
  • Refactored the WASI-NN plug-in source.
    • Refined the WASI-NN dependency linking in CMake.
    • Separated the source files for different backends.

Documentations:

Tests:

  • Updated the WASM spec tests to the date 2023/05/11.
  • Added the plug-in unit tests and CI for Linux and MacOS platforms.
  • Added new test cases of cxx20::expected.

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.
  • WasmEdge CLI failed on Windows 10 issue.

Thank all the contributors that made this release possible!

Adithya Krishna, Chris O'Hara, Edward Chen, Louis Tu, Lîm Tsú-thuàn, Maurizio Pillitu, Officeyutong, Shen-Ta Hsieh, Shreyas Atre, Tricster, Tyler Rockwood, Xin Liu, YiYing He, Yu Xingzi, alabulei1, hydai, michael1017, vincent, yanghaku

If you want to build from source, please use WasmEdge-0.13.0-alpha.1-src.tar.gz instead of the zip or tarball provided by GitHub directly.

WasmEdge - WasmEdge 0.12.1

Published by github-actions[bot] over 1 year ago

0.12.1 (2023-05-12)

This is a hotfix release.

Fixed issues:

  • WASI:
    • fix rights of pre-open fd cannot write and fix read-only flag parse (#2458)
  • WASI Socket:
    • Workaround: reduce the address family size for the old API
    • fix sock opt & add BINDTODEVICE (#2454)
  • MacOS
    • Use OpenSSL 3.0 on MacOS when building the plugins.
    • Update the visibility of plugin functions.
    • Fix AOT Error on MacOS; fix #2427
      • Change enumerate attributes value to zero
      • Change import helper function to private linkage to hide symbols
      • Detect OS version
    • Fix building with statically linked LLVM-15 on MacOS.
    • cmake: quote WASMEDGE_LLVM_LINK_LIBS_NAME variable in order to fix arm64-osx AOT build (#2443)
  • Windows:
    • Fix missing msvcp140.dll issue (#2455)
    • Revert #2455 temporarily. Use CMAKE_MSVC_RUNTIME_LIBRARY instead of MSVC_RUNTIME_LIBRARY.
  • Rust Binding:
    • Introduce fiber-for-wasmedge (#2468). The Rust binding relies on fiber for some features. Because the runwasi project supports both wasmtime and wasmedge, the wasmtime-fiber with different versions will make the compilation complex. To avoid this, we forked wasmtime-fiber as fiber-for-wasmedge.
    • Add a second phase mechanism to load plugins after the VM has already been built. (#2469)
  • Documents:
    • Fix the naming of the AOT wasm file.
    • Add wasmedgec use cases for a slim container.
    • Add the Kwasm document.
    • Fix HostFunction with data example (#2441)

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.
  • WasmEdge CLI failed on Windows 10 issue.

Thank all the contributors that made this release possible!

Leonid Pospelov, Shen-Ta Hsieh, Tyler Rockwood, Xin Liu, YiYing He, dm4, hydai, vincent, yanghaku, zzz

If you want to build from source, please use WasmEdge-0.12.1-src.tar.gz instead of the zip or tarball provided by GitHub directly.

WasmEdge - WasmEdge 0.12.0

Published by github-actions[bot] over 1 year ago

Notice

The 0.12.1 hotfix is out. Anyone who used 0.12.0 should update ASAP. Thanks!

We received some reports indicating the WASI socket-related functions may fail. We are investigating this issue and will release a hotfix version 0.12.1 as soon as possible. For further information, please refer to this announcement

0.12.0 (2023-04-24)

Breaking changes:

  • Updated the WasmEdge shared library.
    • Due to the breaking change of API, bump the SOVERSION to 0.0.2.
  • WasmEdge C API changes.
    • Removed the WasmEdge_HostRegistration members and the corresponding module creation APIs to standardize the plug-in module creation.
      • Please refer to the documentation for how to upgrade.
      • Removed the WasmEdge_HostRegistration_WasiNN enum and the WasmEdge_ModuleInstanceCreateWasiNN() API.
      • Removed the WasmEdge_HostRegistration_WasiCrypto_Common enum and the WasmEdge_ModuleInstanceCreateWasiCryptoCommon() API.
      • Removed the WasmEdge_HostRegistration_WasiCrypto_AsymmetricCommon enum and the WasmEdge_ModuleInstanceCreateWasiCryptoAsymmetricCommon() API.
      • Removed the WasmEdge_HostRegistration_WasiCrypto_Kx enum and the WasmEdge_ModuleInstanceCreateWasiCryptoKx() API.
      • Removed the WasmEdge_HostRegistration_WasiCrypto_Signatures enum and the WasmEdge_ModuleInstanceCreateWasiCryptoSignatures() API.
      • Removed the WasmEdge_HostRegistration_WasiCrypto_Symmetric enum and the WasmEdge_ModuleInstanceCreateWasiCryptoSymmetric() API.
      • Removed the WasmEdge_HostRegistration_WasmEdge_Process enum and the WasmEdge_ModuleInstanceCreateWasmEdgeProcess() API.
  • Changed the WasmEdge_VMCleanup() behavior.
    • After calling this API, the registered modules except the WASI and plug-ins will all be cleaned.
  • Standaloned the WasmEdge-Process plug-in.
    • After this version, users should use the installer to install the WasmEdge-Process plug-in.

Features:

  • Introduced the Plugin context and related APIs.
    • Added the WasmEdge_PluginContext struct.
    • Added the WasmEdge_PluginLoadFromPath() API for loading a plug-in from a specific path.
    • Added the WasmEdge_PluginListPluginsLength() and WasmEdge_PluginListPlugins() APIs for getting the loaded plug-in names.
    • Added the WasmEdge_PluginFind() API for retrieving a loaded plug-in by its name.
    • Added the WasmEdge_PluginGetPluginName() API for retrieving the plug-in name.
    • Added the WasmEdge_PluginListModuleLength() and WasmEdge_PluginListModule() APIs for listing the module names of a plug-in.
    • Added the WasmEdge_PluginCreateModule() API for creating the specific module instance in a plug-in by its name.
  • Introduced the multiple WASI socket API implementation.
    • The sock_accept() is compatible with the WASI spec.
    • The V2 socket implementation is using a larger socket address data structures. With this, we can start to supporting AF_UINX
  • Added the VM APIs.
    • Added the WasmEdge_VMGetRegisteredModule() API for retrieving a registered module by its name.
    • Added the WasmEdge_VMListRegisteredModuleLength() and WasmEdge_VMListRegisteredModule() APIs for listing the registered module names.
  • Introduced the python version WasmEdge installer.
  • Added the wasm_bpf plug-in.
  • Enabled the read-only WASI filesystem.
    • Users can add the --dir guest_path:host_path:readonly option in WasmEdge CLI to assign the read-only configuration.
  • Updated the ABI of the wasi_ephemeral_sock.
    • Added the output port of the sock_recv_from.
    • Updated the API of sock_getlocaladdr.
    • Unified the socket address size to 128-bit.
  • Allowed the multiple VM instances.
  • Supported using libtool to archive the WasmEdge static library.
  • Supported LLVM 15.0.7.

Fixed issues:

  • Fixed WASI issues.
    • Fixed the leaking information about the host STDIN, STDOUT, and STDERR after getting the filestat.
    • Fixed the lookup of symbolic link at path_filestat_set_times.
    • Fixed open for the wchar path issue on windows.
    • Fixed the rights of path_open.
  • Fixed WASI-NN issues.
    • Fixed the definition of wasi_nn::TensorType to prevent from comparing with dirty data.
  • Fixed WASI-Crypto issues.
    • Fixed the keypair_generate for rsa-pss.
    • Fixed the keypair_import read pem as pkcs8.
  • Fixed WASI-Socket issues.
    • Fixed the buffer size of sock_getpeeraddr.
  • Fixed the lost intrinsics table in AOT mode when using the WasmEdge C API.
  • Fixed the registration failed of WasmEdge plug-in through the C API.
  • Fixed the implementation in threads proposal.
    • Fixed the error in atomic.nofify and atomic.wait instructions.
    • Fixed the decoding of atomic.fence instruction.
    • Corrected the error message of waiting on unshared memory.
  • Handle canonical and arithmetical NaN in runMaxOp() and runMinOp().

Refactor:

  • Refactored the implementation of number loading in the file manager.
    • Supported s33 and sn loading and decoding.
  • Refactored the WasmEdge::ValType.
    • Removed the WasmEdge::ValType::None.
    • Used the flag in WasmEdge::BlockType for supporting the type index.
    • Removed the WasmEdge::Validator::VType and used the WasmEdge::ValType instead.

Known issues:

  • Universal WASM format failed on MacOS platforms.
    • In current status, the universal WASM format output of the AOT compiler with the O1 or upper optimizations on MacOS platforms will cause bus error when execution.
    • We are trying to fix this issue. For working around, please use the --optimize=0 to set the compiler optimization level to O0 in wasmedgec CLI.
  • WasmEdge CLI failed on Windows 10 issue.
  • Plug-in linking on MacOS platforms.
    • The plug-in on MacOS platforms will cause symbol not found when dynamic linking.
    • We are trying to fix this issue. For working around, please implement the host modules instead of plug-ins.

Documentations:

Tests:

  • Updated the WASM spec tests to the date 2022/12/15.
  • Added the plug-in unit tests on Linux platforms.

Thank all the contributors that made this release possible!

Abhinandan Udupa, Achille, Afshan Ahmed Khan, Daniel Golding, DarumaDocker, Draco, Harry Chiang, Justin Echternach, Kenvi Zhu, LFsWang, Leonid Pospelov, Lîm Tsú-thuàn, MediosZ, O3Ol, Officeyutong, Puelloc, Rafael Fernández López, Shen-Ta Hsieh, Shreyas Atre, Sylveon, Tatsuyuki Kobayashi, Vishv Salvi, Xin Liu, Xiongsheng Wang, YiYing He, alabulei1, dm4, hydai, jeongkyu, little-willy, michael1017, shun murakami, xxchan, 云微

If you want to build from source, please use WasmEdge-0.12.0-src.tar.gz instead of the zip or tarball provided by GitHub directly.

WasmEdge - WasmEdge 0.12.0-alpha.2

Published by github-actions[bot] over 1 year ago

0.12.0-alpha.2 (2023-02-24)

Breaking changes:

  • Updated the WasmEdge shared library.
    • Due to the breaking change of API, bump the SOVERSION to 0.0.2.
  • WasmEdge C API changes.
    • Removed the WasmEdge_HostRegistration members and the corresponding module creation APIs to standardize the plug-in module creation.
      • Please refer to the documentation for how to upgrade.
      • Removed the WasmEdge_HostRegistration_WasiNN enum and the WasmEdge_ModuleInstanceCreateWasiNN() API.
      • Removed the WasmEdge_HostRegistration_WasiCrypto_Common enum and the WasmEdge_ModuleInstanceCreateWasiCryptoCommon() API.
      • Removed the WasmEdge_HostRegistration_WasiCrypto_AsymmetricCommon enum and the WasmEdge_ModuleInstanceCreateWasiCryptoAsymmetricCommon() API.
      • Removed the WasmEdge_HostRegistration_WasiCrypto_Kx enum and the WasmEdge_ModuleInstanceCreateWasiCryptoKx() API.
      • Removed the WasmEdge_HostRegistration_WasiCrypto_Signatures enum and the WasmEdge_ModuleInstanceCreateWasiCryptoSignatures() API.
      • Removed the WasmEdge_HostRegistration_WasiCrypto_Symmetric enum and the WasmEdge_ModuleInstanceCreateWasiCryptoSymmetric() API.
      • Removed the WasmEdge_HostRegistration_WasmEdge_Process enum and the WasmEdge_ModuleInstanceCreateWasmEdgeProcess() API.
  • Changed the WasmEdge_VMCleanup() behavior.
    • After calling this API, the registered modules except the WASI and plug-ins will all be cleaned.
  • Standaloned the WasmEdge-Process plug-in.
    • After this version, users should use the installer to install the WasmEdge-Process plug-in.

Features:

  • Introduced the Plugin context and related APIs.
    • Added the WasmEdge_PluginContext struct.
    • Added the WasmEdge_PluginLoadFromPath() API for loading a plug-in from a specific path.
    • Added the WasmEdge_PluginListPluginsLength() and WasmEdge_PluginListPlugins() APIs for getting the loaded plug-in names.
    • Added the WasmEdge_PluginFind() API for retrieving a loaded plug-in by its name.
    • Added the WasmEdge_PluginGetPluginName() API for retrieving the plug-in name.
    • Added the WasmEdge_PluginListModuleLength() and WasmEdge_PluginListModule() APIs for listing the module names of a plug-in.
    • Added the WasmEdge_PluginCreateModule() API for creating the specific module instance in a plug-in by its name.
  • Added the VM APIs.
    • Added the WasmEdge_VMGetRegisteredModule() API for retrieving a registered module by its name.
    • Added the WasmEdge_VMListRegisteredModuleLength() and WasmEdge_VMListRegisteredModule() APIs for listing the registered module names.
  • Introduced the python version WasmEdge installer.
  • Updated the ABI of the wasi_ephemeral_sock.
    • Added the output port of the sock_recv_from.
    • Updated the API of sock_getlocaladdr.
    • Unified the socket address size to 128-bit.
  • Supported using libtool to archive the WasmEdge static library.

Fixed issues:

  • Fixed WASI issues.
    • Fixed the leaking information about the host STDIN, STDOUT, and STDERR after getting the filestat.
    • Fixed the lookup of symbolic link at path_filestat_set_times.
    • Fixed open for the wchar path issue on windows.
  • Fixed WASI-NN issues.
    • Fixed the definition of wasi_nn::TensorType to prevent from comparing with dirty data.
  • Fixed WASI-Crypto issues.
    • Fixed the keypair_generate for rsa-pss.
    • Fixed the keypair_import read pem as pkcs8.
  • Fixed WASI-Socket issues.
    • Fixed the buffer size of sock_getpeeraddr.
  • Fixed the lost intrinsics table in AOT mode when using the WasmEdge C API.
  • Fixed the implementation in threads proposal.
    • Fixed the error in atomic.nofify and atomic.wait instructions.
    • Fixed the decoding of atomic.fence instruction.
    • Corrected the error message of waiting on unshared memory.

Refactor:

  • Refactored the implementation of number loading in the file manager.
    • Supported s33 and sn loading and decoding.
  • Refactored the WasmEdge::ValType.
    • Removed the WasmEdge::ValType::None.
    • Used the flag in WasmEdge::BlockType for supporting the type index.
    • Removed the WasmEdge::Validator::VType and used the WasmEdge::ValType instead.

Known issues:

  • Universal WASM format failed on MacOS platforms.
    • In current status, the universal WASM format output of the AOT compiler with the O1 or upper optimizations on MacOS platforms will cause bus error when execution.
    • We are trying to fix this issue. For working around, please use the --optimize=0 to set the compiler optimization level to O0 in wasmedgec CLI.
  • WasmEdge CLI failed on Windows 10 issue.
  • Plug-in linking on MacOS platforms.
    • The plug-in on MacOS platforms will cause symbol not found when dynamic linking.
    • We are trying to fix this issue. For working around, please implement the host modules instead of plug-ins.

Documentations:

Tests:

  • Updated the WASM spec tests to the date 2022/12/15.
  • Added the plug-in unit tests on Linux platforms.

Thank all the contributors that made this release possible!

Abhinandan Udupa, Achille, Daniel Golding, DarumaDocker, Harry Chiang, Justin Echternach, Kenvi Zhu, LFsWang, Leonid Pospelov, Lîm Tsú-thuàn, MediosZ, O3Ol, Puelloc, Rafael Fernández López, Shreyas Atre, Sylveon, Tatsuyuki Kobayashi, Vishv Salvi, Xin Liu, Xiongsheng Wang, YiYing He, alabulei1, dm4, hydai, jeongkyu, little-willy

If you want to build from source, please use WasmEdge-0.12.0-alpha.2-src.tar.gz instead of the zip or tarball provided by GitHub directly.