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.10.0-alpha.1

Published by github-actions[bot] over 2 years ago

0.10.0-alpha.1 (2022-05-06)

Breaking changes:

  • WasmEdge C API changes.
    • Merged the WasmEdge_ImportObjectContext into the WasmEdge_ModuleInstanceContext.
      • WasmEdge_ImportObjectCreate() is changed to WasmEdge_ModuleInstanceCreate().
      • WasmEdge_ImportObjectDelete() is changed to WasmEdge_ModuleInstanceDelete().
      • WasmEdge_ImportObjectAddFunction() is changed to WasmEdge_ModuleInstanceAddFunction().
      • WasmEdge_ImportObjectAddTable() is changed to WasmEdge_ModuleInstanceAddTable().
      • WasmEdge_ImportObjectAddMemory() is changed to WasmEdge_ModuleInstanceAddMemory().
      • WasmEdge_ImportObjectAddGlobal() is changed to WasmEdge_ModuleInstanceAddGlobal().
      • WasmEdge_ImportObjectCreateWASI() is changed to WasmEdge_ModuleInstanceCreateWASI().
      • WasmEdge_ImportObjectCreateWasmEdgeProcess() is changed to WasmEdge_ModuleInstanceCreateWasmEdgeProcess().
      • WasmEdge_ImportObjectInitWASI() is changed to WasmEdge_ModuleInstanceInitWASI().
      • WasmEdge_ImportObjectInitWasmEdgeProcess() is changed to WasmEdge_ModuleInstanceInitWasmEdgeProcess().
    • Used the pointer to WasmEdge_FunctionInstanceContext instead of the index in the FuncRef value type.
      • WasmEdge_ValueGenFuncRef() is changed to use the const WasmEdge_FunctionInstanceContext * as it's argument.
      • WasmEdge_ValueGetFuncRef() is changed to return the const WasmEdge_FunctionInstanceContext *.
    • Moved the functions of WasmEdge_StoreContext to the WasmEdge_ModuleInstanceContext.
      • WasmEdge_StoreListFunctionLength() and WasmEdge_StoreListFunctionRegisteredLength() is replaced by WasmEdge_ModuleInstanceListFunctionLength().
      • WasmEdge_StoreListTableLength() and WasmEdge_StoreListTableRegisteredLength() is replaced by WasmEdge_ModuleInstanceListTableLength().
      • WasmEdge_StoreListMemoryLength() and WasmEdge_StoreListMemoryRegisteredLength() is replaced by WasmEdge_ModuleInstanceListMemoryLength().
      • WasmEdge_StoreListGlobalLength() and WasmEdge_StoreListGlobalRegisteredLength() is replaced by WasmEdge_ModuleInstanceListGlobalLength().
      • WasmEdge_StoreListFunction() and WasmEdge_StoreListFunctionRegistered() is replaced by WasmEdge_ModuleInstanceListFunction().
      • WasmEdge_StoreListTable() and WasmEdge_StoreListTableRegistered() is replaced by WasmEdge_ModuleInstanceListTable().
      • WasmEdge_StoreListMemory() and WasmEdge_StoreListMemoryRegistered() is replaced by WasmEdge_ModuleInstanceListMemory().
      • WasmEdge_StoreListGlobal() and WasmEdge_StoreListGlobalRegistered() is replaced by WasmEdge_ModuleInstanceListGlobal().
      • WasmEdge_StoreFindFunction() and WasmEdge_StoreFindFunctionRegistered() is replaced by WasmEdge_ModuleInstanceFindFunction().
      • WasmEdge_StoreFindTable() and WasmEdge_StoreFindTableRegistered() is replaced by WasmEdge_ModuleInstanceFindTable().
      • WasmEdge_StoreFindMemory() and WasmEdge_StoreFindMemoryRegistered() is replaced by WasmEdge_ModuleInstanceFindMemory().
      • WasmEdge_StoreFindGlobal() and WasmEdge_StoreFindGlobalRegistered() is replaced by WasmEdge_ModuleInstanceFindGlobal().
    • Updated the WasmEdge_VMContext APIs.
      • Added the WasmEdge_VMGetActiveModule().
      • WasmEdge_VMGetImportModuleContext() is changed to return the WasmEdge_FunctionInstanceContext *.
      • WasmEdge_VMRegisterModuleFromImport() is changed to use the const WasmEdge_ModuleInstanceContext * as it's argument.
    • For upgrading from 0.9.1 to 0.10.0, please refer to the document.

Features:

  • Supported the WASM tail-call proposal.
    • Added the WasmEdge_Proposal_TailCall for the configuration in WasmEdge C API.
    • Users can use the --enable-tail-call to enable the proposal in wasmedge and wasmedgec tools.
  • Supported thread-safe in WasmEdge_VMContext, WasmEdge_ConfigureContext, WasmEdge_ModuleInstanceContext, and WasmEdge_StoreContext APIs.
  • Supported the gas limit in AOT mode.
  • New supporting of the wasi-socket proposal.
    • Supported send_to.
    • Supported resv_from.
  • Plugin support
    • Add loadable plugin support.
    • Move wasmedge_process to a loadable plugin.

Fixed issues:

  • Fixed wasi-socket proposal issues.
    • Fixed wasi-socket on MacOS.
    • Fixed error when calling poll_oneoff with the same fd twice.
    • Fixed error when calling fd_close on socket.
    • Forged zero-terminated string for ::getaddrinfo.
    • Checked the socket options enumeration for valid value.
  • Fixed the statistics enable/disable routine.

Refactor:

  • Supported multi-thread execution.
    • Changed the StackManager in Executor as thread local to support the multi-thread.
    • Used atomic operations for cost measuring.
    • Supported multi-thread timer.
  • Refactored the enumerations.
    • Replaced the std::unordered_map of the enumeration strings with DenseMap and SpareMap.
    • Merged the both C and C++ enumeration definitions into the enum.inc file.
    • Updated the ErrCode enumeration for the newest spec tests.
  • Refactored the code architecture for supporting tail-call proposal.
    • Split the call_indirect execution routine in compiler into AOT and interpreter path.
    • Updated the pop frame mechanism in the StackManager.
    • Updated the enter function mechanism.
  • Refined the file manager in Loader.
    • Supported the offset seeking in file and buffer.
    • Skipped the instructions parsing in AOT mode for better loading performance.
  • Refined the branch mechanism in the StackManager for better performance in the interpreter mode.
    • Pre-calculated the stack offset for branch in the validation phase.
    • Removed the label stack in the StackManager and used the pre-calculated data for branch.
    • Removed the dummy frame mechanism in the StackManager.
  • Supplied the pointer-based retrieving mechanism in the StoreManager and ModuleInstance.
    • Removed the address mechanism for instances in the StoreManager.
    • Added the unsafe getter functions for the instances.
  • Refactored the StoreManager, ModuleInstance, and Executor.
    • Used the ModuleInstance-based resource management instead of StoreManager-based.
    • Moved the ownership of instances from the StoreManager into the ModuleInstance.
    • Merged the ImportObject into the ModuleInstance.
    • Invoking functions by FunctionInstance rather than the function name in Executor.

Documentations:

Tests:

  • Updated the spec tests to the date 20220504.
  • Added the spec tests for the tail-call proposal.
  • Added the mixed invocation tests between interpreter mode and AOT mode WASM functions.
  • Added the thread-safe and multi-thread execution tests.
  • Added wasi-socket tests for poll_oneoff, send_to, and recv_from.

Thank all the contributors that made this release possible!

朱亚光, Abhinandan Udupa, Ang Lee, Binbin Zhang, DarumaDocker, Elon Cheng, FlyingOnion, Herschel Wang, JIAN ZHONG, JcJinChen, Jeremy, JessesChou, JieDing, Kodalien, Kunshuai Zhu, LFsWang, LaingKe, Michael Yuan, Nicholas Zhan, 华德禹, O3Ol, Rui Li, Shen-Ta Hsieh, Shreyas Atre, Sylveon, TheLightRunner, Vaniot, Vinson, 罗泽轩, Xin Liu, YiYing He, YoungLH, abhinandanudupa, border1px, eat4toast, hydai, jerbmarx, luckyJ-nj, meoww-bot, mydreamer4134, situ2001, tpmccallum, treeplus, wangyuan249, 王琦

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

WasmEdge - WasmEdge 0.9.1

Published by github-actions[bot] over 2 years ago

0.9.1 (2022-02-10)

Features:

  • WASI
    • Added the sock_getsockopt, sock_setsockopt, sock_getlocaladdr, sock_getpeeraddr, and sock_getaddrinfo host functions for the WASI socket proposal.
  • Supported the interruptible execution.
    • Added the WasmEdge_Async struct in WasmEdge C API for the asynchronous execution.
      • Added the WasmEdge_AsyncWait API for waiting an asynchronous execution.
      • Added the WasmEdge_AsyncWaitFor API for waiting an asynchronous execution with timeout.
      • Added the WasmEdge_AsyncCancel API for canceling an asynchronous execution.
      • Added the WasmEdge_AsyncGetReturnsLength API for waiting and getting the return value length of asynchronous execution.
      • Added the WasmEdge_AsyncGet API for waiting and getting the asynchronous execution results.
      • Added the WasmEdge_AsyncDelete API for destroying the WasmEdge_Async object.
    • Added the asynchronous mode execution APIs.
      • Added the WasmEdge_VMAsyncRunWasmFromFile API for executing WASM from a file asynchronously.
      • Added the WasmEdge_VMAsyncRunWasmFromBuffer API for executing WASM from a buffer asynchronously.
      • Added the WasmEdge_VMAsyncRunWasmFromASTModule API for executing WASM from an WasmEdge_ASTModuleContext asynchronously.
      • Added the WasmEdge_VMAsyncExecute API for invoking a WASM function asynchronously.
      • Added the WasmEdge_VMAsyncExecuteRegistered API for invoking a registered WASM function asynchronously.
    • Added the option for timeout settings of the AOT compiler.
      • Added the WasmEdge_ConfigureCompilerSetInterruptible API for setting the interruptibility of the AOT compiler.
      • Added the WasmEdge_ConfigureCompilerIsInterruptible API for getting the interruptibility of the AOT compiler.
  • Supported the WASM multi-memories proposal.
    • Added the WasmEdge_Proposal_MultiMemories for the configuration in WasmEdge C API.
    • Users can use the --enable-multi-memory to enable the proposal in wasmedge and wasmedgec tools.
  • Enabled the gas limitation of the wasmedge CLI.
    • Users can use the --gas-limit to assign the limitation of costs.
  • Beautified and colorized the WasmEdge CLI help information.

Fixed issues:

  • Fixed the memory leak in function instances.
  • Reduced the memory usage of the instruction class.
  • Fixed the return value of the fread and fwrite WASI functions on Windows.

Refactor:

  • Used assumingUnreachable instead of __builtin_unreachable to help the compiler to generate better codes.
  • Updated the order of the members in the proposal enumeration.
  • Refactored the instruction class for reducing the memory usage.
    • Refactored the WasmEdge::BlockType into a struct.
    • Categorized the members of the instruction class into a union.

Documentations:

Tests:

  • Handled the tests for the 32-bit platforms.
  • Added the spec tests for the multi-memories proposal.
  • Added the test cases for getaddrinfo host function.
  • Added the interruptible execution tests.
  • Added the unit tests of async APIs.

Misc:

  • Updated the blake3 library to 1.2.0.
  • Added the copyright text.
  • Fixed the coding style of the comments.
  • Added the Windows installer release CI.
  • Added the aarch64 Android support based on r23b.
  • Added the Android example for WasmEdge C API.

Thank all the contributors that made this release possible!

2021, Antonio Yang, AvengerMoJo, Hanged Fish, Harinath Nampally, KernelErr, Michael Yuan, MileyFu, O3Ol, Saksham Sharma, Shen-Ta Hsieh(BestSteve), Shreyas Atre, SonOfMagic, Stephan Renatus, Sven Pfennig, Vaughn Dice, Xin Liu, Yi, Yi-Ying He, Yukang Chen, ZefengYu, ZhengX, alabulei1, alittlehorse, baiyutang, 董哲, hydai, javadoors, majinghe, meoww-bot, pasico, peterbi, villanel, wangshishuo, wangyuan249, wby, wolfishLamb, 王琦

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

WasmEdge - WasmEdge 0.9.1-rc.1

Published by github-actions[bot] over 2 years ago

0.9.1 (unreleased)

Features:

  • WASI
    • Added the sock_getsockopt, sock_setsockopt, sock_getlocaladdr, sock_getpeeraddr, and sock_getaddrinfo host functions for the WASI socket proposal.
  • Supported the interruptible execution.
    • Added the WasmEdge_Async struct in WasmEdge C API for the asynchronous execution.
      • Added the WasmEdge_AsyncWait API for waiting an asynchronous execution.
      • Added the WasmEdge_AsyncWaitFor API for waiting an asynchronous execution with timeout.
      • Added the WasmEdge_AsyncCancel API for canceling an asynchronous execution.
      • Added the WasmEdge_AsyncGetReturnsLength API for waiting and getting the return value length of asynchronous execution.
      • Added the WasmEdge_AsyncGet API for waiting and getting the asynchronous execution results.
      • Added the WasmEdge_AsyncDelete API for destroying the WasmEdge_Async object.
    • Added the asynchronous mode execution APIs.
      • Added the WasmEdge_VMAsyncRunWasmFromFile API for executing WASM from a file asynchronously.
      • Added the WasmEdge_VMAsyncRunWasmFromBuffer API for executing WASM from a buffer asynchronously.
      • Added the WasmEdge_VMAsyncRunWasmFromASTModule API for executing WASM from an WasmEdge_ASTModuleContext asynchronously.
      • Added the WasmEdge_VMAsyncExecute API for invoking a WASM function asynchronously.
      • Added the WasmEdge_VMAsyncExecuteRegistered API for invoking a registered WASM function asynchronously.
    • Added the option for timeout settings of the AOT compiler.
      • Added the WasmEdge_ConfigureCompilerSetInterruptible API for setting the interruptibility of the AOT compiler.
      • Added the WasmEdge_ConfigureCompilerIsInterruptible API for getting the interruptibility of the AOT compiler.
  • Supported the WASM multi-memories proposal.
    • Added the WasmEdge_Proposal_MultiMemories for the configuration in WasmEdge C API.
    • Users can use the --enable-multi-memory to enable the proposal in wasmedge and wasmedgec tools.
  • Enabled the gas limitation of the wasmedge CLI.
    • Users can use the --gas-limit to assign the limitation of costs.
  • Beautified and colorized the WasmEdge CLI help information.

Fixed issues:

  • Fixed the memory leak in function instances.
  • Reduced the memory usage of the instruction class.
  • Fixed the return value of the fread and fwrite WASI functions on Windows.

Refactor:

  • Used assumingUnreachable instead of __builtin_unreachable to help the compiler to generate better codes.
  • Updated the order of the members in the proposal enumeration.
  • Refactored the instruction class for reducing the memory usage.
    • Refactored the WasmEdge::BlockType into a struct.
    • Categorized the members of the instruction class into a union.

Documentations:

Tests:

  • Handled the tests for the 32-bit platforms.
  • Added the spec tests for the multi-memories proposal.
  • Added the test cases for getaddrinfo host function.
  • Added the interruptible execution tests.
  • Added the unit tests of async APIs.

Misc:

  • Updated the blake3 library to 1.2.0.
  • Added the copyright text.
  • Fixed the coding style of the comments.
  • Added the Windows installer release CI.
  • Added the aarch64 Android support based on r23b.
  • Added the Android example for WasmEdge C API.

Thank all the contributors that made this release possible!

2021, Antonio Yang, AvengerMoJo, Hanged Fish, Harinath Nampally, KernelErr, Michael Yuan, MileyFu, O3Ol, Saksham Sharma, Shen-Ta Hsieh(BestSteve), Shreyas Atre, SonOfMagic, Stephan Renatus, Sven Pfennig, Vaughn Dice, Xin Liu, Yi, Yi-Ying He, Yukang Chen,ZefengYu, ZhengX, alabulei1, alittlehorse, 董哲, hydai, pasico, peterbi, villanel, wangshishuo, wangyuan249, wolfishLamb

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

WasmEdge - WasmEdge 0.9.1-beta.2

Published by github-actions[bot] over 2 years ago

0.9.1 (unreleased)

Features:

  • WASI
    • Added the sock_getsockopt, sock_setsockopt, sock_getlocaladdr, sock_getpeeraddr, and sock_getaddrinfo host functions for the WASI socket proposal.
  • Supported the interruptible execution.
    • Added the WasmEdge_Async struct in WasmEdge C API for the asynchronous execution.
      • Added the WasmEdge_AsyncWait API for waiting an asynchronous execution.
      • Added the WasmEdge_AsyncWaitFor API for waiting an asynchronous execution with timeout.
      • Added the WasmEdge_AsyncCancel API for canceling an asynchronous execution.
      • Added the WasmEdge_AsyncGetReturnsLength API for waiting and getting the return value length of asynchronous execution.
      • Added the WasmEdge_AsyncGet API for waiting and getting the asynchronous execution results.
      • Added the WasmEdge_AsyncDelete API for destroying the WasmEdge_Async object.
    • Added the asynchronous mode execution APIs.
      • Added the WasmEdge_VMAsyncRunWasmFromFile API for executing WASM from a file asynchronously.
      • Added the WasmEdge_VMAsyncRunWasmFromBuffer API for executing WASM from a buffer asynchronously.
      • Added the WasmEdge_VMAsyncRunWasmFromASTModule API for executing WASM from an WasmEdge_ASTModuleContext asynchronously.
      • Added the WasmEdge_VMAsyncExecute API for invoking a WASM function asynchronously.
      • Added the WasmEdge_VMAsyncExecuteRegistered API for invoking a registered WASM function asynchronously.
    • Added the option for timeout settings of the AOT compiler.
      • Added the WasmEdge_ConfigureCompilerSetInterruptible API for setting the interruptibility of the AOT compiler.
      • Added the WasmEdge_ConfigureCompilerIsInterruptible API for getting the interruptibility of the AOT compiler.
  • Supported the WASM multi-memories proposal.
    • Added the WasmEdge_Proposal_MultiMemories for the configuration in WasmEdge C API.
    • Users can use the --enable-multi-memory to enable the proposal in wasmedge and wasmedgec tools.
  • Enabled the gas limitation of the wasmedge CLI.
    • Users can use the --gas-limit to assign the limitation of costs.
  • Beautified and colorized the WasmEdge CLI help information.

Fixed issues:

  • Fixed the memory leak in function instances.
  • Reduced the memory usage of the instruction class.
  • Fixed the return value of the fread and fwrite WASI functions on Windows.

Refactor:

  • Used assumingUnreachable instead of __builtin_unreachable to help the compiler to generate better codes.
  • Updated the order of the members in the proposal enumeration.
  • Refactored the instruction class for reducing the memory usage.
    • Refactored the WasmEdge::BlockType into a struct.
    • Categorized the members of the instruction class into a union.

Documentations:

Tests:

  • Handled the tests for the 32-bit platforms.
  • Added the spec tests for the multi-memories proposal.
  • Added the test cases for getaddrinfo host function.
  • Added the interruptible execution tests.
  • Added the unit tests of async APIs.

Misc:

  • Updated the blake3 library to 1.2.0.
  • Added the copyright text.
  • Fixed the coding style of the comments.
  • Added the Windows installer release CI.
  • Added the aarch64 Android support based on r23b.

Thank all the contributors that made this release possible!

2021, alabulei1, alittlehorse, Antonio Yang, AvengerMoJo, Hanged Fish, Harinath Nampally, hydai, KernelErr, Michael Yuan, O3Ol, Shen-Ta Hsieh, Shen-Ta Hsieh(BestSteve), Shreyas Atre, SonOfMagic, Stephan Renatus, Sven Pfennig, Vaughn Dice, wangshishuo, wolfishLamb, Xin Liu, Yi, Yi-Ying He, YiYing He, Yukang Chen

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

WasmEdge - WasmEdge 0.9.1-beta.1

Published by github-actions[bot] over 2 years ago

0.9.1 (unreleased)

Features:

  • WASI
    • Added the sock_getsockopt, sock_setsockopt, sock_getlocaladdr, sock_getpeeraddr, and sock_getaddrinfo host functions for the WASI socket proposal.
  • Supported the interruptible execution.
    • Added the WasmEdge_Async struct in WasmEdge C API for the asynchronous execution.
      • Added the WasmEdge_AsyncWait API for waiting an asynchronous execution.
      • Added the WasmEdge_AsyncWaitFor API for waiting an asynchronous execution with timeout.
      • Added the WasmEdge_AsyncCancel API for canceling an asynchronous execution.
      • Added the WasmEdge_AsyncGetReturnsLength API for waiting and getting the return value length of asynchronous execution.
      • Added the WasmEdge_AsyncGet API for waiting and getting the asynchronous execution results.
      • Added the WasmEdge_AsyncDelete API for destroying the WasmEdge_Async object.
    • Added the asynchronous mode execution APIs.
      • Added the WasmEdge_VMAsyncRunWasmFromFile API for executing WASM from a file asynchronously.
      • Added the WasmEdge_VMAsyncRunWasmFromBuffer API for executing WASM from a buffer asynchronously.
      • Added the WasmEdge_VMAsyncRunWasmFromASTModule API for executing WASM from an WasmEdge_ASTModuleContext asynchronously.
      • Added the WasmEdge_VMAsyncExecute API for invoking a WASM function asynchronously.
      • Added the WasmEdge_VMAsyncExecuteRegistered API for invoking a registered WASM function asynchronously.
    • Added the option for timeout settings of the AOT compiler.
      • Added the WasmEdge_ConfigureCompilerSetInterruptible API for setting the interruptibility of the AOT compiler.
      • Added the WasmEdge_ConfigureCompilerIsInterruptible API for getting the interruptibility of the AOT compiler.
  • Supported the WASM multi-memories proposal.
    • Added the WasmEdge_Proposal_MultiMemories for the configuration in WasmEdge C API.
    • Users can use the --enable-multi-memory to enable the proposal in wasmedge and wasmedgec tools.
  • Enabled the gas limitation of the wasmedge CLI.
    • Users can use the --gas-limit to assign the limitation of costs.
  • Beautified and colorized the WasmEdge CLI help information.

Fixed issues:

  • Fixed the memory leak in function instances.
  • Reduced the memory usage of the instruction class.
  • Fixed the return value of the fread and fwrite WASI functions on Windows.

Refactor:

  • Used assumingUnreachable instead of __builtin_unreachable to help the compiler to generate better codes.
  • Updated the order of the members in the proposal enumeration.
  • Refactored the instruction class for reducing the memory usage.
    • Refactored the WasmEdge::BlockType into a struct.
    • Categorized the members of the instruction class into a union.

Documentations:

Tests:

  • Handled the tests for the 32-bit platforms.
  • Added the spec tests for the multi-memories proposal.
  • Added the test cases for getaddrinfo host function.
  • Added the interruptible execution tests.
  • Added the unit tests of async APIs.

Misc:

  • Updated the blake3 library to 1.2.0.
  • Added the copyright text.
  • Fixed the coding style of the comments.
  • Added the Windows installer release CI.

Thank all the contributors that made this release possible!

2021, Antonio Yang, AvengerMoJo, Harinath Nampally, KernelErr, Michael Yuan, O3Ol, Shen-Ta Hsieh, Shreyas Atre, SonOfMagic, Stephan Renatus, Sven Pfennig, Vaughn Dice, Xin Liu, YiYing He, Yukang Chen, alabulei1, alittlehorse, hydai, wangshishuo, wolfishLamb

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

WasmEdge - WasmEdge 0.9.1-alpha.1

Published by github-actions[bot] almost 3 years ago

0.9.1 (unreleased)

Features:

  • WASI
    • Added the sock_getsockopt, sock_setsockopt, sock_getlocaladdr, sock_getpeeraddr, and sock_getaddrinfo host functions for the WASI socket proposal.
  • Supported the interruptible execution.
    • Added the WasmEdge_Async struct in WasmEdge C API for the asynchronous execution.
      • Added the WasmEdge_AsyncWait API for waiting an asynchronous execution.
      • Added the WasmEdge_AsyncWaitFor API for waiting an asynchronous execution with timeout.
      • Added the WasmEdge_AsyncCancel API for canceling an asynchronous execution.
      • Added the WasmEdge_AsyncGet API for getting the asynchronous execution results.
      • Added the WasmEdge_AsyncDelete API for destroying the WasmEdge_Async object.
    • Added the asynchronous mode execution APIs.
      • Added the WasmEdge_VMAsyncRunWasmFromFile API for executing WASM from a file asynchronously.
      • Added the WasmEdge_VMAsyncRunWasmFromBuffer API for executing WASM from a buffer asynchronously.
      • Added the WasmEdge_VMAsyncRunWasmFromASTModule API for executing WASM from an WasmEdge_ASTModuleContext asynchronously.
      • Added the WasmEdge_VMAsyncExecute API for invoking a WASM function asynchronously.
      • Added the WasmEdge_VMAsyncExecuteRegistered API for invoking a registered WASM function asynchronously.
    • Added the option for timeout settings of the AOT compiler.
      • Added the WasmEdge_ConfigureCompilerSetInterruptible API for setting the interruptibility of the AOT compiler.
      • Added the WasmEdge_ConfigureCompilerIsInterruptible API for getting the interruptibility of the AOT compiler.
  • Supported the WASM multi-memories proposal.
    • Added the WasmEdge_Proposal_MultiMemories for the configuration in WasmEdge C API.
    • Users can use the --enable-multi-memory to enable the proposal in wasmedge and wasmedgec tools.
  • Enabled the gas limitation of the wasmedge CLI.
    • Users can use the --gas-limit to assign the limitation of costs.
  • Beautified and colorized the WasmEdge CLI help information.

Fixed issues:

  • Fixed the memory leak in function instances.
  • Reduced the memory usage of the instruction class.
  • Fixed the return value of the fread and fwrite WASI functions on Windows.

Refactor:

  • Used assumingUnreachable instead of __builtin_unreachable to help the compiler to generate better codes.
  • Updated the order of the members in the proposal enumeration.
  • Refactored the instruction class for reducing the memory usage.
    • Refactored the WasmEdge::BlockType into a struct.
    • Categorized the members of the instruction class into a union.

Documentations:

Tests:

  • Handled the tests for the 32-bit platforms.
  • Added the spec tests for the multi-memories proposal.
  • Added the test cases for getaddrinfo host function.
  • Added the interruptible execution tests.

Misc:

  • Updated the blake3 library to 1.2.0.
  • Added the copyright text.
  • Fixed the coding style of the comments.
  • Added the Windows installer release CI.

Thank all the contributors that made this release possible!

2021, Antonio Yang, AvengerMoJo, Harinath Nampally, KernelErr, Michael Yuan, O3Ol, Shen-Ta Hsieh, Shreyas Atre, Stephan Renatus, Sven Pfennig, Vaughn Dice, Xin Liu, YiYing He, Yukang Chen, alabulei1, alittlehorse, hydai, wangshishuo, wolfishLamb

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

WasmEdge - WasmEdge 0.9.0

Published by github-actions[bot] almost 3 years ago

0.9.0 (2021-12-09)

Breaking changes:

  • Turned on the SIMD proposal by default.
    • The WasmEdge_ConfigureContext will turn on the SIMD proposal automatically.
    • Users can use the --disable-simd to disable the SIMD proposal in wasmedge and wasmedgec.
  • For better performance, the Statistics module is disabled by default.
    • To enable instruction counting, please use --enable-instruction-count.
    • To enable gas measuring, please use --enable-gas-measuring.
    • To enable time measuring, please use --enable-time-measuring.
    • For the convinence, use --enable-all-statistics will enable all available statistics options.
  • wasmedgec AOT compiler tool behavior changes.
    • For the output file name with extension .so, wasmedgec will output the AOT compiled WASM in shared library format.
    • For the output file name with extension .wasm or other cases, wasmedgec will output the WASM file with adding the AOT compiled binary in custom sections. wasmedge runtime will run in AOT mode when it executes the output WASM file.
  • Modulized the API Headers.
    • Moved the API header into the wasmedge folder. Developers should include the wasmedge/wasmedge.h for using the WasmEdge shared library after installation.
    • Moved the enumeration definitions into enum_errcode.h, enum_types.h, and enum_configure.h in the wasmedge folder.
    • Added the 201402L C++ standard checking if developer includes the headers with a C++ compiler.
  • Adjusted the error code names.
  • Renamed the Interpreter into Executor.
    • Renamed the Interpreter namespace into Executor.
    • Moved the headers and sources in the Interpreter folder into Executor folder.
    • Renamed the Interpreter APIs and listed below.
  • WasmEdge C API changes.
    • Updated the host function related APIs.
      • Deleted the data object column in the creation function of ImportObject context.
      • Merged the HostFunctionContext into FunctionInstanceContext.
        • Deleted the WasmEdge_HostFunctionContext object. Please use the WasmEdge_FunctionInstanceContext object instead.
        • Deleted the WasmEdge_HostFunctionCreate function. Please use the WasmEdge_FunctionInstanceCreate function instead.
        • Deleted the WasmEdge_HostFunctionCreateBinding function. Please use the WasmEdge_FunctionInstanceCreateBinding function instead.
        • Deleted the WasmEdge_HostFunctionDelete function. Please use the WasmEdge_FunctionInstanceDelete function instead.
        • Deleted the WasmEdge_ImportObjectAddHostFunction function. Please use the WasmEdge_ImportObjectAddFunction function instead.
      • Added the data object column in the creation function of FunctionInstance context.
      • Instead of the unified data object of the host functions in the same import object before, the data objects are independent in every host function now.
    • Added the WASM types contexts.
      • Added the WasmEdge_TableTypeContext, which is used for table instances creation.
      • Added the WasmEdge_MemoryTypeContext, which is used for memory instances creation.
      • Added the WasmEdge_GlobalTypeContext, which is used for global instances creation.
      • Added the member getter functions of the above contexts.
    • Updated the instances creation APIs.
      • Used WasmEdge_TableTypeContext for table instances creation.
        • Removed WasmEdge_TableInstanceGetRefType API.
        • Developers can use the WasmEdge_TableInstanceGetTableType API to get the table type instead.
      • Used WasmEdge_MemoryTypeContext for memory instances creation.
        • Added WasmEdge_MemoryInstanceGetMemoryType API.
      • Used WasmEdge_GlobalTypeContext for global instances creation.
        • Removed WasmEdge_GlobalInstanceGetValType and WasmEdge_GlobalInstanceGetMutability API.
        • Developers can use the WasmEdge_GlobalInstanceGetGlobalType API to get the global type instead.
    • Refactored for the objects' life cycle to reduce copying.
      • Developers should NOT destroy the WasmEdge_FunctionTypeContext objects returned from WasmEdge_VMGetFunctionList, WasmEdge_VMGetFunctionType, and WasmEdge_VMGetFunctionTypeRegistered functions.
      • Developers should NOT destroy the WasmEdge_String objects returned from WasmEdge_StoreListFunction, WasmEdge_StoreListFunctionRegistered, WasmEdge_StoreListTable, WasmEdge_StoreListTableRegistered, WasmEdge_StoreListMemory, WasmEdge_StoreListMemoryRegistered, WasmEdge_StoreListGlobal, WasmEdge_StoreListGlobalRegistered, WasmEdge_StoreListModule, and WasmEdge_VMGetFunctionList functions.
    • Renamed the Interpreter related APIs.
      • Replaced WasmEdge_InterpreterContext struct with WasmEdge_ExecutorContext struct.
      • Replaced WasmEdge_InterpreterCreate function with WasmEdge_ExecutorCreate function.
      • Replaced WasmEdge_InterpreterInstantiate function with WasmEdge_ExecutorInstantiate function.
      • Replaced WasmEdge_InterpreterRegisterImport function with WasmEdge_ExecutorRegisterImport function.
      • Replaced WasmEdge_InterpreterRegisterModule function with WasmEdge_ExecutorRegisterModule function.
      • Replaced WasmEdge_InterpreterInvoke function with WasmEdge_ExecutorInvoke function.
      • Replaced WasmEdge_InterpreterInvokeRegistered function with WasmEdge_ExecutorInvokeRegistered function.
      • Replaced WasmEdge_InterpreterDelete function with WasmEdge_ExecutorDelete function.
    • Refactored for statistics options
      • Renamed WasmEdge_ConfigureCompilerSetInstructionCounting to WasmEdge_ConfigureStatisticsSetInstructionCounting.
      • Renamed WasmEdge_ConfigureCompilerSetCostMeasuring to WasmEdge_ConfigureStatisticsSetCostMeasuring.
      • Renamed WasmEdge_ConfigureCompilerSetTimeMeasuring to WasmEdge_ConfigureStatisticsSetTimeMeasuring.
      • Renamed WasmEdge_ConfigureCompilerGetInstructionCounting to WasmEdge_ConfigureStatisticsGetInstructionCounting.
      • Renamed WasmEdge_ConfigureCompilerGetCostMeasuring to WasmEdge_ConfigureStatisticsGetCostMeasuring.
      • Renamed WasmEdge_ConfigureCompilerGetTimeMeasuring to WasmEdge_ConfigureStatisticsGetTimeMeasuring.
    • Simplified the WASI creation and initialization APIs.
      • Removed the Dirs and DirLen parameters in the WasmEdge_ImportObjectCreateWASI.
      • Removed the Dirs and DirLen parameters in the WasmEdge_ImportObjectInitWASI.

Features:

  • Applied the old WebAssembly proposals options (All turned on by default).
    • Developers can use the --disable-import-export-mut-globals to disable the Import/Export mutable globals proposal in wasmedge and wasmedgec.
    • Developers can use the --disable-non-trap-float-to-int to disable the Non-trapping float-to-int conversions proposal in wasmedge and wasmedgec.
    • Developers can use the --disable-sign-extension-operators to disable the Sign-extension operators proposal in wasmedge and wasmedgec.
    • Developers can use the --disable-multi-value to disable the Multi-value proposal in wasmedge and wasmedgec.
  • New WasmEdge C API for listing imports and exports from AST module contexts.
    • Developers can query the ImportTypeContext and ExportTypeContext from the ASTModuleContext.
    • New object WasmEdge_ImportTypeContext.
    • New object WasmEdge_ExportTypeContext.
    • New AST module context functions to query the import and export types.
      • WasmEdge_ASTModuleListImportsLength function can query the imports list length from an AST module context.
      • WasmEdge_ASTModuleListExportsLength function can query the exports list length from an AST module context.
      • WasmEdge_ASTModuleListImports function can list all import types of an AST module context.
      • WasmEdge_ASTModuleListExports function can list all export types of an AST module context.
    • New import type context functions to query data.
      • WasmEdge_ImportTypeGetExternalType function can get the external type of an import type context.
      • WasmEdge_ImportTypeGetModuleName function can get the import module name.
      • WasmEdge_ImportTypeGetExternalName function can get the import external name.
      • WasmEdge_ImportTypeGetFunctionType function can get the function type of an import type context.
      • WasmEdge_ImportTypeGetTableType function can get the table type of an import type context.
      • WasmEdge_ImportTypeGetMemoryType function can get the memory type of an import type context.
      • WasmEdge_ImportTypeGetGlobalType function can get the global type of an import type context.
    • New export type context functions to query data.
      • WasmEdge_ExportTypeGetExternalType function can get the external type of an export type context.
      • WasmEdge_ExportTypeGetExternalName function can get the export external name.
      • WasmEdge_ExportTypeGetFunctionType function can get the function type of an export type context.
      • WasmEdge_ExportTypeGetTableType function can get the table type of an export type context.
      • WasmEdge_ExportTypeGetMemoryType function can get the memory type of an export type context.
      • WasmEdge_ExportTypeGetGlobalType function can get the global type of an export type context.
    • For more details of the usages of imports and exports, please refer to the C API documentation.
  • Exported the WasmEdge C API for getting exit code from WASI.
    • WasmEdge_ImportObjectWASIGetExitCode function can get the exit code from WASI after execution.
  • Exported the WasmEdge C API for AOT compiler related configurations.
    • WasmEdge_ConfigureCompilerSetOutputFormat function can set the AOT compiler output format.
    • WasmEdge_ConfigureCompilerGetOutputFormat function can get the AOT compiler output format.
    • WasmEdge_ConfigureCompilerSetGenericBinary function can set the option of AOT compiler generic binary output.
    • WasmEdge_ConfigureCompilerIsGenericBinary function can get the option of AOT compiler generic binary output.
  • Provided install and uninstall script for installing/uninstalling WasmEdge on linux(amd64 and aarch64) and macos(amd64 and arm64).
  • Supported compiling WebAssembly into a new WebAssembly file with a packed binary section.
  • Supported the automatically pre-open mapping with the path name in WASI.

Fixed issues:

  • Refined the WasmEdge C API behaviors.
    • Handle the edge cases of WasmEdge_String creation.
  • Fixed the instruction iteration exception in interpreter mode.
    • Forcely added the capacity of instruction vector to prevent from connection of instruction vectors in different function instances.
  • Fixed the loader of AOT mode WASM.
    • Checked the file header instead of file name extension when loading from file.
    • Showed the error message when loading AOT compiled WASM from buffer. For AOT mode, please use the universal WASM binary.
    • Fixed the zero address used in AOT mode in load manager.
    • Fixed the loading failed for the AOT compiled WASM without intrinsics table.
  • Fixed the VM creation issue.
    • Added the loss of intrinsics table setting when creating a VM instance.
  • Fixed wasi-socket issues.
    • Support wasi-socket on MacOS.
    • Remove the port parameter from sock_accept.

Refactor:

  • Refined headers inclusion in all files.
  • Refactor the common headers.
    • Removed the unnecessary genNullRef().
    • Merged the building environment-related definitions into common.
    • Merged the common/values.h into common/types.h.
    • Separated all enumeration definitions.
  • Refactored the AST nodes.
    • Simplified the AST nodes definitions into header-only classes.
    • Moved the binary loading functions into loader.
    • Updated the validator, executor, runtime, api, and vm for the AST node changes.
  • Refactored the runtime objects.
    • Used AST::FunctionType, AST::TableType, AST::MemoryType, and AST::GlobalType for instance creation and member handling.
    • Removed Runtime::Instance::FType and used AST::FunctionType instead.
    • Added routines to push function instances into import objects.
    • Removed the exported map getter in StoreManager. Used the getter from ModuleInstance instead.
    • Added the module name mapping in StoreManager.
  • Refactored the VM class.
    • Returned the reference to function type instead of copying when getting the function list.
    • Returned the vector of return value and value type pair when execution.
  • Updated the include path for rust binding due to the API headers refactoring.

Documentations:

Bindings:

  • Move rust crate from root path to bindings/rust.

Tests:

  • Updated the core test suite to the newest WASM spec.
  • Updated and fixed the value comarison in core tests.
  • Added ErrInfo unit tests.
  • Added instruction tests for turning on/off the old proposals.
  • Moved and updated the AST unit tests into loader.
  • Moved and updated the Interpreter tests into Executor folder.
  • Added the unit tests for new APIs.
  • Applied the WasmEdge C API in the ExternRef tests.

Misc:

  • Enabled GitHub CodeSpaces
  • Added assuming for assert checking to help compiler to generate better codes.

Thank all the contributors that made this release possible!

2021, actly, alabulei1, Alex, Antonio Yang, Ashutosh Sharma, Avinal Kumar, blackanger, Chojan Shang, dm4, eee4017, fossabot, hydai, Jayita Pramanik, Kenvi Zhu, luishsu, LuisHsu, MaazKhan711635, Michael Yuan, MileyFu, Nick Hynes, O3Ol, Peter Chang, robnanarivo, Shen-Ta Hsieh, Shreyas Atre, slidoooor, Sylveon, Timothy McCallum, Vikas S Shetty, vincent, Xin Liu, Yi Huang, yiying, YiYing He, Yona, Yukang, 牟展佑

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

WasmEdge - WasmEdge 0.9.0-rc.5

Published by github-actions[bot] almost 3 years ago

0.9.0 (unreleased)

Breaking changes:

  • For better performance, the Statistics module is disabled by default.
    • To enable instruction counting, please use --enable-instruction-count.
    • To enable gas measuring, please use --enable-gas-measuring.
    • To enable time measuring, please use --enable-time-measuring.
    • For the convinence, use --enable-all-statistics will enable all available statistics options.
  • wasmedgec AOT compiler tool behavior changes.
    • For the output file name with extension .so, wasmedgec will output the AOT compiled WASM in shared library format.
    • For the output file name with extension .wasm or other cases, wasmedgec will output the WASM file with adding the AOT compiled binary in custom sections. wasmedge runtime will run in AOT mode when it executes the output WASM file.
  • Modulized the API Headers.
    • Moved the API header into the wasmedge folder. Developers should include the wasmedge/wasmedge.h for using the WasmEdge shared library after installation.
    • Moved the enumeration definitions into enum_errcode.h, enum_types.h, and enum_configure.h in the wasmedge folder.
    • Added the 201402L C++ standard checking if developer includes the headers with a C++ compiler.
  • Adjusted the error code names.
  • Renamed the Interpreter into Executor.
    • Renamed the Interpreter namespace into Executor.
    • Moved the headers and sources in the Interpreter folder into Executor folder.
    • Renamed the Interpreter APIs and listed below.
  • WasmEdge C API changes.
    • Updated the host function related APIs.
      • Deleted the data object column in the creation function of ImportObject context.
      • Merged the HostFunctionContext into FunctionInstanceContext.
        • Deleted the WasmEdge_HostFunctionContext object. Please use the WasmEdge_FunctionInstanceContext object instead.
        • Deleted the WasmEdge_HostFunctionCreate function. Please use the WasmEdge_FunctionInstanceCreate function instead.
        • Deleted the WasmEdge_HostFunctionCreateBinding function. Please use the WasmEdge_FunctionInstanceCreateBinding function instead.
        • Deleted the WasmEdge_HostFunctionDelete function. Please use the WasmEdge_FunctionInstanceDelete function instead.
        • Deleted the WasmEdge_ImportObjectAddHostFunction function. Please use the WasmEdge_ImportObjectAddFunction function instead.
      • Added the data object column in the creation function of FunctionInstance context.
      • Instead of the unified data object of the host functions in the same import object before, the data objects are independent in every host function now.
    • Added the WASM types contexts.
      • Added the WasmEdge_TableTypeContext, which is used for table instances creation.
      • Added the WasmEdge_MemoryTypeContext, which is used for memory instances creation.
      • Added the WasmEdge_GlobalTypeContext, which is used for global instances creation.
      • Added the member getter functions of the above contexts.
    • Updated the instances creation APIs.
      • Used WasmEdge_TableTypeContext for table instances creation.
        • Removed WasmEdge_TableInstanceGetRefType API.
        • Developers can use the WasmEdge_TableInstanceGetTableType API to get the table type instead.
      • Used WasmEdge_MemoryTypeContext for memory instances creation.
        • Added WasmEdge_MemoryInstanceGetMemoryType API.
      • Used WasmEdge_GlobalTypeContext for global instances creation.
        • Removed WasmEdge_GlobalInstanceGetValType and WasmEdge_GlobalInstanceGetMutability API.
        • Developers can use the WasmEdge_GlobalInstanceGetGlobalType API to get the global type instead.
    • Refactored for the objects' life cycle to reduce copying.
      • Developers should NOT destroy the WasmEdge_FunctionTypeContext objects returned from WasmEdge_VMGetFunctionList, WasmEdge_VMGetFunctionType, and WasmEdge_VMGetFunctionTypeRegistered functions.
      • Developers should NOT destroy the WasmEdge_String objects returned from WasmEdge_StoreListFunction, WasmEdge_StoreListFunctionRegistered, WasmEdge_StoreListTable, WasmEdge_StoreListTableRegistered, WasmEdge_StoreListMemory, WasmEdge_StoreListMemoryRegistered, WasmEdge_StoreListGlobal, WasmEdge_StoreListGlobalRegistered, WasmEdge_StoreListModule, and WasmEdge_VMGetFunctionList functions.
    • Renamed the Interpreter related APIs.
      • Replaced WasmEdge_InterpreterContext struct with WasmEdge_ExecutorContext struct.
      • Replaced WasmEdge_InterpreterCreate function with WasmEdge_ExecutorCreate function.
      • Replaced WasmEdge_InterpreterInstantiate function with WasmEdge_ExecutorInstantiate function.
      • Replaced WasmEdge_InterpreterRegisterImport function with WasmEdge_ExecutorRegisterImport function.
      • Replaced WasmEdge_InterpreterRegisterModule function with WasmEdge_ExecutorRegisterModule function.
      • Replaced WasmEdge_InterpreterInvoke function with WasmEdge_ExecutorInvoke function.
      • Replaced WasmEdge_InterpreterInvokeRegistered function with WasmEdge_ExecutorInvokeRegistered function.
      • Replaced WasmEdge_InterpreterDelete function with WasmEdge_ExecutorDelete function.
    • Refactored for statistics options
      • Renamed WasmEdge_ConfigureCompilerSetInstructionCounting to WasmEdge_ConfigureStatisticsSetInstructionCounting.
      • Renamed WasmEdge_ConfigureCompilerSetCostMeasuring to WasmEdge_ConfigureStatisticsSetCostMeasuring.
      • Renamed WasmEdge_ConfigureCompilerSetTimeMeasuring to WasmEdge_ConfigureStatisticsSetTimeMeasuring.
      • Renamed WasmEdge_ConfigureCompilerGetInstructionCounting to WasmEdge_ConfigureStatisticsGetInstructionCounting.
      • Renamed WasmEdge_ConfigureCompilerGetCostMeasuring to WasmEdge_ConfigureStatisticsGetCostMeasuring.
      • Renamed WasmEdge_ConfigureCompilerGetTimeMeasuring to WasmEdge_ConfigureStatisticsGetTimeMeasuring.
    • Simplified the WASI creation and initialization APIs.
      • Removed the Dirs and DirLen parameters in the WasmEdge_ImportObjectCreateWASI.
      • Removed the Dirs and DirLen parameters in the WasmEdge_ImportObjectInitWASI.

Features:

  • Applied the old WebAssembly proposals options (All turned on by default).
    • Developers can use the disable-import-export-mut-globals to disable the Import/Export mutable globals proposal in wasmedge and wasmedgec.
    • Developers can use the disable-non-trap-float-to-int to disable the Non-trapping float-to-int conversions proposal in wasmedge and wasmedgec.
    • Developers can use the disable-sign-extension-operators to disable the Sign-extension operators proposal in wasmedge and wasmedgec.
    • Developers can use the disable-multi-value to disable the Multi-value proposal in wasmedge and wasmedgec.
  • New WasmEdge C API for listing imports and exports from AST module contexts.
    • Developers can query the ImportTypeContext and ExportTypeContext from the ASTModuleContext.
    • New object WasmEdge_ImportTypeContext.
    • New object WasmEdge_ExportTypeContext.
    • New AST module context functions to query the import and export types.
      • WasmEdge_ASTModuleListImportsLength function can query the imports list length from an AST module context.
      • WasmEdge_ASTModuleListExportsLength function can query the exports list length from an AST module context.
      • WasmEdge_ASTModuleListImports function can list all import types of an AST module context.
      • WasmEdge_ASTModuleListExports function can list all export types of an AST module context.
    • New import type context functions to query data.
      • WasmEdge_ImportTypeGetExternalType function can get the external type of an import type context.
      • WasmEdge_ImportTypeGetModuleName function can get the import module name.
      • WasmEdge_ImportTypeGetExternalName function can get the import external name.
      • WasmEdge_ImportTypeGetFunctionType function can get the function type of an import type context.
      • WasmEdge_ImportTypeGetTableType function can get the table type of an import type context.
      • WasmEdge_ImportTypeGetMemoryType function can get the memory type of an import type context.
      • WasmEdge_ImportTypeGetGlobalType function can get the global type of an import type context.
    • New export type context functions to query data.
      • WasmEdge_ExportTypeGetExternalType function can get the external type of an export type context.
      • WasmEdge_ExportTypeGetExternalName function can get the export external name.
      • WasmEdge_ExportTypeGetFunctionType function can get the function type of an export type context.
      • WasmEdge_ExportTypeGetTableType function can get the table type of an export type context.
      • WasmEdge_ExportTypeGetMemoryType function can get the memory type of an export type context.
      • WasmEdge_ExportTypeGetGlobalType function can get the global type of an export type context.
    • For more details of the usages of imports and exports, please refer to the C API documentation.
  • Exported the WasmEdge C API for getting exit code from WASI.
    • WasmEdge_ImportObjectWASIGetExitCode function can get the exit code from WASI after execution.
  • Exported the WasmEdge C API for AOT compiler related configurations.
    • WasmEdge_ConfigureCompilerSetOutputFormat function can set the AOT compiler output format.
    • WasmEdge_ConfigureCompilerGetOutputFormat function can get the AOT compiler output format.
    • WasmEdge_ConfigureCompilerSetGenericBinary function can set the option of AOT compiler generic binary output.
    • WasmEdge_ConfigureCompilerIsGenericBinary function can get the option of AOT compiler generic binary output.
  • Provided install and uninstall script for installing/uninstalling WasmEdge on linux(amd64 and aarch64) and macos(amd64 and arm64).
  • Supported compiling WebAssembly into a new WebAssembly file with a packed binary section.
  • Supported the automatically pre-open mapping with the path name in WASI.

Fixed issues:

  • Refined the WasmEdge C API behaviors.
    • Handle the edge cases of WasmEdge_String creation.
  • Fixed the instruction iteration exception in interpreter mode.
    • Forcely added the capacity of instruction vector to prevent from connection of instruction vectors in different function instances.
  • Fixed the loader of AOT mode WASM.
    • Checked the file header instead of file name extension when loading from file.
    • Showed the error message when loading AOT compiled WASM from buffer. For AOT mode, please use the universal WASM binary.
    • Fixed the zero address used in AOT mode in load manager.
    • Fixed the loading failed for the AOT compiled WASM without intrinsics table.
  • Fixed the VM creation issue.
    • Added the loss of intrinsics table setting when creating a VM instance.
  • Fixed wasi-socket issues.
    • Support wasi-socket on MacOS.
    • Remove the port parameter from sock_accept.

Refactor:

  • Refined headers inclusion in all files.
  • Refactor the common headers.
    • Removed the unnecessary genNullRef().
    • Merged the building environment-related definitions into common.
    • Merged the common/values.h into common/types.h.
    • Separated all enumeration definitions.
  • Refactored the AST nodes.
    • Simplified the AST nodes definitions into header-only classes.
    • Moved the binary loading functions into loader.
    • Updated the validator, executor, runtime, api, and vm for the AST node changes.
  • Refactored the runtime objects.
    • Used AST::FunctionType, AST::TableType, AST::MemoryType, and AST::GlobalType for instance creation and member handling.
    • Removed Runtime::Instance::FType and used AST::FunctionType instead.
    • Added routines to push function instances into import objects.
    • Removed the exported map getter in StoreManager. Used the getter from ModuleInstance instead.
    • Added the module name mapping in StoreManager.
  • Refactored the VM class.
    • Returned the reference to function type instead of copying when getting the function list.
    • Returned the vector of return value and value type pair when execution.
  • Updated the include path for rust binding due to the API headers refactoring.

Documentations:

Bindings:

  • Move rust crate from root path to bindings/rust.

Tests:

  • Updated and fixed the value comarison in core tests.
  • Added ErrInfo unit tests.
  • Added instruction tests for turning on/off the old proposals.
  • Moved and updated the AST unit tests into loader.
  • Moved and updated the Interpreter tests into Executor folder.
  • Added the unit tests for new APIs.
  • Applied the WasmEdge C API in the ExternRef tests.

Misc:

  • Enabled GitHub CodeSpaces
  • Added assuming for assert checking to help compiler to generate better codes.
WasmEdge - WasmEdge 0.9.0-rc.4

Published by github-actions[bot] almost 3 years ago

0.9.0 (unreleased)

Breaking changes:

  • For better performance, the Statistics module is disabled by default.
    • To enable instruction counting, please use --enable-instruction-count.
    • To enable gas measuring, please use --enable-gas-measuring.
    • To enable time measuring, please use --enable-time-measuring.
    • For the convinence, use --enable-all-statistics will enable all available statistics options.
  • wasmedgec AOT compiler tool behavior changes.
    • For the output file name with extension .so, wasmedgec will output the AOT compiled WASM in shared library format.
    • For the output file name with extension .wasm or other cases, wasmedgec will output the WASM file with adding the AOT compiled binary in custom sections. wasmedge runtime will run in AOT mode when it executes the output WASM file.
  • Modulized the API Headers.
    • Moved the API header into the wasmedge folder. Developers should include the wasmedge/wasmedge.h for using the WasmEdge shared library after installation.
    • Moved the enumeration definitions into enum_errcode.h, enum_types.h, and enum_configure.h in the wasmedge folder.
    • Added the 201402L C++ standard checking if developer includes the headers with a C++ compiler.
  • Adjusted the error code names.
  • Renamed the Interpreter into Executor.
    • Renamed the Interpreter namespace into Executor.
    • Moved the headers and sources in the Interpreter folder into Executor folder.
    • Renamed the Interpreter APIs and listed below.
  • WasmEdge C API changes.
    • Updated the host function related APIs.
      • Deleted the data object column in the creation function of ImportObject context.
      • Merged the HostFunctionContext into FunctionInstanceContext.
        • Deleted the WasmEdge_HostFunctionContext object. Please use the WasmEdge_FunctionInstanceContext object instead.
        • Deleted the WasmEdge_HostFunctionCreate function. Please use the WasmEdge_FunctionInstanceCreate function instead.
        • Deleted the WasmEdge_HostFunctionCreateBinding function. Please use the WasmEdge_FunctionInstanceCreateBinding function instead.
        • Deleted the WasmEdge_HostFunctionDelete function. Please use the WasmEdge_FunctionInstanceDelete function instead.
        • Deleted the WasmEdge_ImportObjectAddHostFunction function. Please use the WasmEdge_ImportObjectAddFunction function instead.
      • Added the data object column in the creation function of FunctionInstance context.
      • Instead of the unified data object of the host functions in the same import object before, the data objects are independent in every host function now.
    • Added the WASM types contexts.
      • Added the WasmEdge_TableTypeContext, which is used for table instances creation.
      • Added the WasmEdge_MemoryTypeContext, which is used for memory instances creation.
      • Added the WasmEdge_GlobalTypeContext, which is used for global instances creation.
      • Added the member getter functions of the above contexts.
    • Updated the instances creation APIs.
      • Used WasmEdge_TableTypeContext for table instances creation.
        • Removed WasmEdge_TableInstanceGetRefType API.
        • Developers can use the WasmEdge_TableInstanceGetTableType API to get the table type instead.
      • Used WasmEdge_MemoryTypeContext for memory instances creation.
        • Added WasmEdge_MemoryInstanceGetMemoryType API.
      • Used WasmEdge_GlobalTypeContext for global instances creation.
        • Removed WasmEdge_GlobalInstanceGetValType and WasmEdge_GlobalInstanceGetMutability API.
        • Developers can use the WasmEdge_GlobalInstanceGetGlobalType API to get the global type instead.
    • Refactored for the objects' life cycle to reduce copying.
      • Developers should NOT destroy the WasmEdge_FunctionTypeContext objects returned from WasmEdge_VMGetFunctionList, WasmEdge_VMGetFunctionType, and WasmEdge_VMGetFunctionTypeRegistered functions.
      • Developers should NOT destroy the WasmEdge_String objects returned from WasmEdge_StoreListFunction, WasmEdge_StoreListFunctionRegistered, WasmEdge_StoreListTable, WasmEdge_StoreListTableRegistered, WasmEdge_StoreListMemory, WasmEdge_StoreListMemoryRegistered, WasmEdge_StoreListGlobal, WasmEdge_StoreListGlobalRegistered, WasmEdge_StoreListModule, and WasmEdge_VMGetFunctionList functions.
    • Renamed the Interpreter related APIs.
      • Replaced WasmEdge_InterpreterContext struct with WasmEdge_ExecutorContext struct.
      • Replaced WasmEdge_InterpreterCreate function with WasmEdge_ExecutorCreate function.
      • Replaced WasmEdge_InterpreterInstantiate function with WasmEdge_ExecutorInstantiate function.
      • Replaced WasmEdge_InterpreterRegisterImport function with WasmEdge_ExecutorRegisterImport function.
      • Replaced WasmEdge_InterpreterRegisterModule function with WasmEdge_ExecutorRegisterModule function.
      • Replaced WasmEdge_InterpreterInvoke function with WasmEdge_ExecutorInvoke function.
      • Replaced WasmEdge_InterpreterInvokeRegistered function with WasmEdge_ExecutorInvokeRegistered function.
      • Replaced WasmEdge_InterpreterDelete function with WasmEdge_ExecutorDelete function.
    • Refactored for statistics options
      • Renamed WasmEdge_ConfigureCompilerSetInstructionCounting to WasmEdge_ConfigureStatisticsSetInstructionCounting.
      • Renamed WasmEdge_ConfigureCompilerSetCostMeasuring to WasmEdge_ConfigureStatisticsSetCostMeasuring.
      • Renamed WasmEdge_ConfigureCompilerSetTimeMeasuring to WasmEdge_ConfigureStatisticsSetTimeMeasuring.
      • Renamed WasmEdge_ConfigureCompilerGetInstructionCounting to WasmEdge_ConfigureStatisticsGetInstructionCounting.
      • Renamed WasmEdge_ConfigureCompilerGetCostMeasuring to WasmEdge_ConfigureStatisticsGetCostMeasuring.
      • Renamed WasmEdge_ConfigureCompilerGetTimeMeasuring to WasmEdge_ConfigureStatisticsGetTimeMeasuring.

Features:

  • Applied the old WebAssembly proposals options (All turned on by default).
    • Developers can use the disable-import-export-mut-globals to disable the Import/Export mutable globals proposal in wasmedge and wasmedgec.
    • Developers can use the disable-non-trap-float-to-int to disable the Non-trapping float-to-int conversions proposal in wasmedge and wasmedgec.
    • Developers can use the disable-sign-extension-operators to disable the Sign-extension operators proposal in wasmedge and wasmedgec.
    • Developers can use the disable-multi-value to disable the Multi-value proposal in wasmedge and wasmedgec.
  • New WasmEdge C API for listing imports and exports from AST module contexts.
    • Developers can query the ImportTypeContext and ExportTypeContext from the ASTModuleContext.
    • New object WasmEdge_ImportTypeContext.
    • New object WasmEdge_ExportTypeContext.
    • New AST module context functions to query the import and export types.
      • WasmEdge_ASTModuleListImportsLength function can query the imports list length from an AST module context.
      • WasmEdge_ASTModuleListExportsLength function can query the exports list length from an AST module context.
      • WasmEdge_ASTModuleListImports function can list all import types of an AST module context.
      • WasmEdge_ASTModuleListExports function can list all export types of an AST module context.
    • New import type context functions to query data.
      • WasmEdge_ImportTypeGetExternalType function can get the external type of an import type context.
      • WasmEdge_ImportTypeGetModuleName function can get the import module name.
      • WasmEdge_ImportTypeGetExternalName function can get the import external name.
      • WasmEdge_ImportTypeGetFunctionType function can get the function type of an import type context.
      • WasmEdge_ImportTypeGetTableType function can get the table type of an import type context.
      • WasmEdge_ImportTypeGetMemoryType function can get the memory type of an import type context.
      • WasmEdge_ImportTypeGetGlobalType function can get the global type of an import type context.
    • New export type context functions to query data.
      • WasmEdge_ExportTypeGetExternalType function can get the external type of an export type context.
      • WasmEdge_ExportTypeGetExternalName function can get the export external name.
      • WasmEdge_ExportTypeGetFunctionType function can get the function type of an export type context.
      • WasmEdge_ExportTypeGetTableType function can get the table type of an export type context.
      • WasmEdge_ExportTypeGetMemoryType function can get the memory type of an export type context.
      • WasmEdge_ExportTypeGetGlobalType function can get the global type of an export type context.
    • For more details of the usages of imports and exports, please refer to the C API documentation.
  • Exported the WasmEdge C API for AOT compiler related configurations.
    • WasmEdge_ConfigureCompilerSetOutputFormat function can set the AOT compiler output format.
    • WasmEdge_ConfigureCompilerGetOutputFormat function can get the AOT compiler output format.
    • WasmEdge_ConfigureCompilerSetGenericBinary function can set the option of AOT compiler generic binary output.
    • WasmEdge_ConfigureCompilerIsGenericBinary function can get the option of AOT compiler generic binary output.
  • Provided install and uninstall script for installing/uninstalling WasmEdge on linux(amd64 and aarch64) and macos(amd64 and arm64).
  • Supported compiling WebAssembly into a new WebAssembly file with a packed binary section.

Fixed issues:

  • Refined the WasmEdge C API behaviors.
    • Handle the edge cases of WasmEdge_String creation.
  • Fixed the instruction iteration exception in interpreter mode.
    • Forcely added the capacity of instruction vector to prevent from connection of instruction vectors in different function instances.
  • Fixed the loader of AOT mode WASM.
    • Checked the file header instead of file name extension when loading from file.
    • Showed the error message when loading AOT compiled WASM from buffer. For AOT mode, please use the universal WASM binary.
    • Fixed the zero address used in AOT mode in load manager.
    • Fixed the loading failed for the AOT compiled WASM without intrinsics table.
  • Fixed the VM creation issue.
    • Added the loss of intrinsics table setting when creating a VM instance.
  • Fixed wasi-socket issues.
    • Support wasi-socket on MacOS.
    • Remove the port parameter from sock_accept.

Refactor:

  • Refined headers inclusion in all files.
  • Refactor the common headers.
    • Removed the unnecessary genNullRef().
    • Merged the building environment-related definitions into common.
    • Merged the common/values.h into common/types.h.
    • Separated all enumeration definitions.
  • Refactored the AST nodes.
    • Simplified the AST nodes definitions into header-only classes.
    • Moved the binary loading functions into loader.
    • Updated the validator, executor, runtime, api, and vm for the AST node changes.
  • Refactored the runtime objects.
    • Used AST::FunctionType, AST::TableType, AST::MemoryType, and AST::GlobalType for instance creation and member handling.
    • Removed Runtime::Instance::FType and used AST::FunctionType instead.
    • Added routines to push function instances into import objects.
    • Removed the exported map getter in StoreManager. Used the getter from ModuleInstance instead.
    • Added the module name mapping in StoreManager.
  • Refactored the VM class.
    • Returned the reference to function type instead of copying when getting the function list.
    • Returned the vector of return value and value type pair when execution.
  • Updated the include path for rust binding due to the API headers refactoring.

Documentations:

Bindings:

  • Move rust crate from root path to bindings/rust.

Tests:

  • Updated and fixed the value comarison in core tests.
  • Added ErrInfo unit tests.
  • Added instruction tests for turning on/off the old proposals.
  • Moved and updated the AST unit tests into loader.
  • Moved and updated the Interpreter tests into Executor folder.
  • Added the unit tests for new APIs.

Misc:

  • Enabled GitHub CodeSpaces
  • Added assuming for assert checking to help compiler to generate better codes.
WasmEdge - WasmEdge 0.9.0-rc.3

Published by github-actions[bot] almost 3 years ago

0.9.0 (unreleased)

Breaking changes:

  • For better performance, the Statistics module is disabled by default.
    • To enable instruction counting, please use --enable-instruction-count.
    • To enable gas measuring, please use --enable-gas-measuring.
    • To enable time measuring, please use --enable-time-measuring.
    • For the convinence, use --enable-all-statistics will enable all available statistics options.
  • wasmedgec AOT compiler tool behavior changes.
    • For the output file name with extension .so, wasmedgec will output the AOT compiled WASM in shared library format.
    • For the output file name with extension .wasm or other cases, wasmedgec will output the WASM file with adding the AOT compiled binary in custom sections. wasmedge runtime will run in AOT mode when it executes the output WASM file.
  • Modulized the API Headers.
    • Moved the API header into the wasmedge folder. Developers should include the wasmedge/wasmedge.h for using the WasmEdge shared library after installation.
    • Moved the enumeration definitions into enum_errcode.h, enum_types.h, and enum_configure.h in the wasmedge folder.
    • Added the 201402L C++ standard checking if developer includes the headers with a C++ compiler.
  • Adjusted the error code names.
  • Renamed the Interpreter into Executor.
    • Renamed the Interpreter namespace into Executor.
    • Moved the headers and sources in the Interpreter folder into Executor folder.
    • Renamed the Interpreter APIs and listed below.
  • WasmEdge C API changes.
    • Updated the host function related APIs.
      • Deleted the data object column in the creation function of ImportObject context.
      • Merged the HostFunctionContext into FunctionInstanceContext.
        • Deleted the WasmEdge_HostFunctionContext object. Please use the WasmEdge_FunctionInstanceContext object instead.
        • Deleted the WasmEdge_HostFunctionCreate function. Please use the WasmEdge_FunctionInstanceCreate function instead.
        • Deleted the WasmEdge_HostFunctionCreateBinding function. Please use the WasmEdge_FunctionInstanceCreateBinding function instead.
        • Deleted the WasmEdge_HostFunctionDelete function. Please use the WasmEdge_FunctionInstanceDelete function instead.
        • Deleted the WasmEdge_ImportObjectAddHostFunction function. Please use the WasmEdge_ImportObjectAddFunction function instead.
      • Added the data object column in the creation function of FunctionInstance context.
      • Instead of the unified data object of the host functions in the same import object before, the data objects are independent in every host function now.
    • Added the WASM types contexts.
      • Added the WasmEdge_TableTypeContext, which is used for table instances creation.
      • Added the WasmEdge_MemoryTypeContext, which is used for memory instances creation.
      • Added the WasmEdge_GlobalTypeContext, which is used for global instances creation.
      • Added the member getter functions of the above contexts.
    • Updated the instances creation APIs.
      • Used WasmEdge_TableTypeContext for table instances creation.
        • Removed WasmEdge_TableInstanceGetRefType API.
        • Developers can use the WasmEdge_TableInstanceGetTableType API to get the table type instead.
      • Used WasmEdge_MemoryTypeContext for memory instances creation.
        • Added WasmEdge_MemoryInstanceGetMemoryType API.
      • Used WasmEdge_GlobalTypeContext for global instances creation.
        • Removed WasmEdge_GlobalInstanceGetValType and WasmEdge_GlobalInstanceGetMutability API.
        • Developers can use the WasmEdge_GlobalInstanceGetGlobalType API to get the global type instead.
    • Refactored for the objects' life cycle to reduce copying.
      • Developers should NOT destroy the WasmEdge_FunctionTypeContext objects returned from WasmEdge_VMGetFunctionList, WasmEdge_VMGetFunctionType, and WasmEdge_VMGetFunctionTypeRegistered functions.
      • Developers should NOT destroy the WasmEdge_String objects returned from WasmEdge_StoreListFunction, WasmEdge_StoreListFunctionRegistered, WasmEdge_StoreListTable, WasmEdge_StoreListTableRegistered, WasmEdge_StoreListMemory, WasmEdge_StoreListMemoryRegistered, WasmEdge_StoreListGlobal, WasmEdge_StoreListGlobalRegistered, WasmEdge_StoreListModule, and WasmEdge_VMGetFunctionList functions.
    • Renamed the Interpreter related APIs.
      • Replaced WasmEdge_InterpreterContext struct with WasmEdge_ExecutorContext struct.
      • Replaced WasmEdge_InterpreterCreate function with WasmEdge_ExecutorCreate function.
      • Replaced WasmEdge_InterpreterInstantiate function with WasmEdge_ExecutorInstantiate function.
      • Replaced WasmEdge_InterpreterRegisterImport function with WasmEdge_ExecutorRegisterImport function.
      • Replaced WasmEdge_InterpreterRegisterModule function with WasmEdge_ExecutorRegisterModule function.
      • Replaced WasmEdge_InterpreterInvoke function with WasmEdge_ExecutorInvoke function.
      • Replaced WasmEdge_InterpreterInvokeRegistered function with WasmEdge_ExecutorInvokeRegistered function.
      • Replaced WasmEdge_InterpreterDelete function with WasmEdge_ExecutorDelete function.
    • Refactored for statistics options
      • Renamed WasmEdge_ConfigureCompilerSetInstructionCounting to WasmEdge_ConfigureStatisticsSetInstructionCounting.
      • Renamed WasmEdge_ConfigureCompilerSetCostMeasuring to WasmEdge_ConfigureStatisticsSetCostMeasuring.
      • Renamed WasmEdge_ConfigureCompilerSetTimeMeasuring to WasmEdge_ConfigureStatisticsSetTimeMeasuring.
      • Renamed WasmEdge_ConfigureCompilerGetInstructionCounting to WasmEdge_ConfigureStatisticsGetInstructionCounting.
      • Renamed WasmEdge_ConfigureCompilerGetCostMeasuring to WasmEdge_ConfigureStatisticsGetCostMeasuring.
      • Renamed WasmEdge_ConfigureCompilerGetTimeMeasuring to WasmEdge_ConfigureStatisticsGetTimeMeasuring.

Features:

  • Applied the old WebAssembly proposals options (All turned on by default).
    • Developers can use the disable-import-export-mut-globals to disable the Import/Export mutable globals proposal in wasmedge and wasmedgec.
    • Developers can use the disable-non-trap-float-to-int to disable the Non-trapping float-to-int conversions proposal in wasmedge and wasmedgec.
    • Developers can use the disable-sign-extension-operators to disable the Sign-extension operators proposal in wasmedge and wasmedgec.
    • Developers can use the disable-multi-value to disable the Multi-value proposal in wasmedge and wasmedgec.
  • New WasmEdge C API for listing imports and exports from AST module contexts.
    • Developers can query the ImportTypeContext and ExportTypeContext from the ASTModuleContext.
    • New object WasmEdge_ImportTypeContext.
    • New object WasmEdge_ExportTypeContext.
    • New AST module context functions to query the import and export types.
      • WasmEdge_ASTModuleListImportsLength function can query the imports list length from an AST module context.
      • WasmEdge_ASTModuleListExportsLength function can query the exports list length from an AST module context.
      • WasmEdge_ASTModuleListImports function can list all import types of an AST module context.
      • WasmEdge_ASTModuleListExports function can list all export types of an AST module context.
    • New import type context functions to query data.
      • WasmEdge_ImportTypeGetExternalType function can get the external type of an import type context.
      • WasmEdge_ImportTypeGetModuleName function can get the import module name.
      • WasmEdge_ImportTypeGetExternalName function can get the import external name.
      • WasmEdge_ImportTypeGetFunctionType function can get the function type of an import type context.
      • WasmEdge_ImportTypeGetTableType function can get the table type of an import type context.
      • WasmEdge_ImportTypeGetMemoryType function can get the memory type of an import type context.
      • WasmEdge_ImportTypeGetGlobalType function can get the global type of an import type context.
    • New export type context functions to query data.
      • WasmEdge_ExportTypeGetExternalType function can get the external type of an export type context.
      • WasmEdge_ExportTypeGetExternalName function can get the export external name.
      • WasmEdge_ExportTypeGetFunctionType function can get the function type of an export type context.
      • WasmEdge_ExportTypeGetTableType function can get the table type of an export type context.
      • WasmEdge_ExportTypeGetMemoryType function can get the memory type of an export type context.
      • WasmEdge_ExportTypeGetGlobalType function can get the global type of an export type context.
    • For more details of the usages of imports and exports, please refer to the C API documentation.
  • Exported the WasmEdge C API for AOT compiler related configurations.
    • WasmEdge_ConfigureCompilerSetOutputFormat function can set the AOT compiler output format.
    • WasmEdge_ConfigureCompilerGetOutputFormat function can get the AOT compiler output format.
    • WasmEdge_ConfigureCompilerSetGenericBinary function can set the option of AOT compiler generic binary output.
    • WasmEdge_ConfigureCompilerIsGenericBinary function can get the option of AOT compiler generic binary output.
  • Provided install and uninstall script for installing/uninstalling WasmEdge on linux(amd64 and aarch64) and macos(amd64 and arm64).
  • Supported compiling WebAssembly into a new WebAssembly file with a packed binary section.

Fixed issues:

  • Refined the WasmEdge C API behaviors.
    • Handle the edge cases of WasmEdge_String creation.
  • Fixed the instruction iteration exception in interpreter mode.
    • Forcely added the capacity of instruction vector to prevent from connection of instruction vectors in different function instances.
  • Fixed the loader of AOT mode WASM.
    • Checked the file header instead of file name extension when loading from file.
    • Showed the error message when loading AOT compiled WASM from buffer. For AOT mode, please use the universal WASM binary.
    • Fixed the zero address used in AOT mode in load manager.
    • Fixed the loading failed for the AOT compiled WASM without intrinsics table.
  • Fixed the VM creation issue.
    • Added the loss of intrinsics table setting when creating a VM instance.
  • Fixed wasi-socket support on macos.

Refactor:

  • Refined headers inclusion in all files.
  • Refactor the common headers.
    • Removed the unnecessary genNullRef().
    • Merged the building environment-related definitions into common.
    • Merged the common/values.h into common/types.h.
    • Separated all enumeration definitions.
  • Refactored the AST nodes.
    • Simplified the AST nodes definitions into header-only classes.
    • Moved the binary loading functions into loader.
    • Updated the validator, executor, runtime, api, and vm for the AST node changes.
  • Refactored the runtime objects.
    • Used AST::FunctionType, AST::TableType, AST::MemoryType, and AST::GlobalType for instance creation and member handling.
    • Removed Runtime::Instance::FType and used AST::FunctionType instead.
    • Added routines to push function instances into import objects.
    • Removed the exported map getter in StoreManager. Used the getter from ModuleInstance instead.
    • Added the module name mapping in StoreManager.
  • Refactored the VM class.
    • Returned the reference to function type instead of copying when getting the function list.
    • Returned the vector of return value and value type pair when execution.
  • Updated the include path for rust binding due to the API headers refactoring.

Documentations:

Bindings:

  • Move rust crate from root path to bindings/rust.

Tests:

  • Updated and fixed the value comarison in core tests.
  • Added ErrInfo unit tests.
  • Added instruction tests for turning on/off the old proposals.
  • Moved and updated the AST unit tests into loader.
  • Moved and updated the Interpreter tests into Executor folder.
  • Added the unit tests for new APIs.

Misc:

  • Enabled GitHub CodeSpaces
  • Added assuming for assert checking to help compiler to generate better codes.
WasmEdge - WasmEdge 0.9.0-rc.2

Published by github-actions[bot] almost 3 years ago

0.9.0 (unreleased)

Breaking changes:

  • For better performance, the Statistics module is disabled by default.
    • To enable instruction counting, please use --enable-instruction-count.
    • To enable gas measuring, please use --enable-gas-measuring.
    • To enable time measuring, please use --enable-time-measuring.
    • For the convinence, use --enable-all-statistics will enable all available statistics options.
  • Modulized the API Headers.
    • Moved the API header into the wasmedge folder. Developers should include the wasmedge/wasmedge.h for using the WasmEdge shared library after installation.
    • Moved the enumeration definitions into enum_errcode.h, enum_types.h, and enum_configure.h in the wasmedge folder.
    • Added the 201402L C++ standard checking if developer includes the headers with a C++ compiler.
  • Adjusted the error code names.
  • Renamed the Interpreter into Executor.
    • Renamed the Interpreter namespace into Executor.
    • Moved the headers and sources in the Interpreter folder into Executor folder.
    • Renamed the Interpreter APIs and listed below.
  • WasmEdge C API changes.
    • Updated the host function related APIs.
      • Deleted the data object column in the creation function of ImportObject context.
      • Merged the HostFunctionContext into FunctionInstanceContext.
        • Deleted the WasmEdge_HostFunctionContext object. Please use the WasmEdge_FunctionInstanceContext object instead.
        • Deleted the WasmEdge_HostFunctionCreate function. Please use the WasmEdge_FunctionInstanceCreate function instead.
        • Deleted the WasmEdge_HostFunctionCreateBinding function. Please use the WasmEdge_FunctionInstanceCreateBinding function instead.
        • Deleted the WasmEdge_HostFunctionDelete function. Please use the WasmEdge_FunctionInstanceDelete function instead.
        • Deleted the WasmEdge_ImportObjectAddHostFunction function. Please use the WasmEdge_ImportObjectAddFunction function instead.
      • Added the data object column in the creation function of FunctionInstance context.
      • Instead of the unified data object of the host functions in the same import object before, the data objects are independent in every host function now.
    • Added the WASM types contexts.
      • Added the WasmEdge_TableTypeContext, which is used for table instances creation.
      • Added the WasmEdge_MemoryTypeContext, which is used for memory instances creation.
      • Added the WasmEdge_GlobalTypeContext, which is used for global instances creation.
      • Added the member getter functions of the above contexts.
    • Updated the instances creation APIs.
      • Used WasmEdge_TableTypeContext for table instances creation.
        • Removed WasmEdge_TableInstanceGetRefType API.
        • Developers can use the WasmEdge_TableInstanceGetTableType API to get the table type instead.
      • Used WasmEdge_MemoryTypeContext for memory instances creation.
        • Added WasmEdge_MemoryInstanceGetMemoryType API.
      • Used WasmEdge_GlobalTypeContext for global instances creation.
        • Removed WasmEdge_GlobalInstanceGetValType and WasmEdge_GlobalInstanceGetMutability API.
        • Developers can use the WasmEdge_GlobalInstanceGetGlobalType API to get the global type instead.
    • Refactored for the objects' life cycle to reduce copying.
      • Developers should NOT destroy the WasmEdge_FunctionTypeContext objects returned from WasmEdge_VMGetFunctionList, WasmEdge_VMGetFunctionType, and WasmEdge_VMGetFunctionTypeRegistered functions.
      • Developers should NOT destroy the WasmEdge_String objects returned from WasmEdge_StoreListFunction, WasmEdge_StoreListFunctionRegistered, WasmEdge_StoreListTable, WasmEdge_StoreListTableRegistered, WasmEdge_StoreListMemory, WasmEdge_StoreListMemoryRegistered, WasmEdge_StoreListGlobal, WasmEdge_StoreListGlobalRegistered, WasmEdge_StoreListModule, and WasmEdge_VMGetFunctionList functions.
    • Renamed the Interpreter related APIs.
      • Replaced WasmEdge_InterpreterContext struct with WasmEdge_ExecutorContext struct.
      • Replaced WasmEdge_InterpreterCreate function with WasmEdge_ExecutorCreate function.
      • Replaced WasmEdge_InterpreterInstantiate function with WasmEdge_ExecutorInstantiate function.
      • Replaced WasmEdge_InterpreterRegisterImport function with WasmEdge_ExecutorRegisterImport function.
      • Replaced WasmEdge_InterpreterRegisterModule function with WasmEdge_ExecutorRegisterModule function.
      • Replaced WasmEdge_InterpreterInvoke function with WasmEdge_ExecutorInvoke function.
      • Replaced WasmEdge_InterpreterInvokeRegistered function with WasmEdge_ExecutorInvokeRegistered function.
      • Replaced WasmEdge_InterpreterDelete function with WasmEdge_ExecutorDelete function.
    • Refactored for statistics options
      • Renamed WasmEdge_ConfigureCompilerSetInstructionCounting to WasmEdge_ConfigureStatisticsSetInstructionCounting.
      • Renamed WasmEdge_ConfigureCompilerSetCostMeasuring to WasmEdge_ConfigureStatisticsSetCostMeasuring.
      • Renamed WasmEdge_ConfigureCompilerSetTimeMeasuring to WasmEdge_ConfigureStatisticsSetTimeMeasuring.
      • Renamed WasmEdge_ConfigureCompilerGetInstructionCounting to WasmEdge_ConfigureStatisticsGetInstructionCounting.
      • Renamed WasmEdge_ConfigureCompilerGetCostMeasuring to WasmEdge_ConfigureStatisticsGetCostMeasuring.
      • Renamed WasmEdge_ConfigureCompilerGetTimeMeasuring to WasmEdge_ConfigureStatisticsGetTimeMeasuring.

Features:

  • Applied the old WebAssembly proposals options (All turned on by default).
    • Developers can use the disable-import-export-mut-globals to disable the Import/Export mutable globals proposal in wasmedge and wasmedgec.
    • Developers can use the disable-non-trap-float-to-int to disable the Non-trapping float-to-int conversions proposal in wasmedge and wasmedgec.
    • Developers can use the disable-sign-extension-operators to disable the Sign-extension operators proposal in wasmedge and wasmedgec.
    • Developers can use the disable-multi-value to disable the Multi-value proposal in wasmedge and wasmedgec.
  • New WasmEdge C API for listing imports and exports from AST module contexts.
    • Developers can query the ImportTypeContext and ExportTypeContext from the ASTModuleContext.
    • New object WasmEdge_ImportTypeContext.
    • New object WasmEdge_ExportTypeContext.
    • New AST module context functions to query the import and export types.
      • WasmEdge_ASTModuleListImportsLength function can query the imports list length from an AST module context.
      • WasmEdge_ASTModuleListExportsLength function can query the exports list length from an AST module context.
      • WasmEdge_ASTModuleListImports function can list all import types of an AST module context.
      • WasmEdge_ASTModuleListExports function can list all export types of an AST module context.
    • New import type context functions to query data.
      • WasmEdge_ImportTypeGetExternalType function can get the external type of an import type context.
      • WasmEdge_ImportTypeGetModuleName function can get the import module name.
      • WasmEdge_ImportTypeGetExternalName function can get the import external name.
      • WasmEdge_ImportTypeGetFunctionType function can get the function type of an import type context.
      • WasmEdge_ImportTypeGetTableType function can get the table type of an import type context.
      • WasmEdge_ImportTypeGetMemoryType function can get the memory type of an import type context.
      • WasmEdge_ImportTypeGetGlobalType function can get the global type of an import type context.
    • New export type context functions to query data.
      • WasmEdge_ExportTypeGetExternalType function can get the external type of an export type context.
      • WasmEdge_ExportTypeGetExternalName function can get the export external name.
      • WasmEdge_ExportTypeGetFunctionType function can get the function type of an export type context.
      • WasmEdge_ExportTypeGetTableType function can get the table type of an export type context.
      • WasmEdge_ExportTypeGetMemoryType function can get the memory type of an export type context.
      • WasmEdge_ExportTypeGetGlobalType function can get the global type of an export type context.
    • For more details of the usages of imports and exports, please refer to the C API documentation.
  • Provided install and uninstall script for installing/uninstalling WasmEdge on linux(amd64 and aarch64) and macos(amd64 and arm64).
  • Supported compiling WebAssembly into a new WebAssembly file with a packed binary section.

Fixed issues:

  • Refined the WasmEdge C API behaviors.
    • Handle the edge cases of WasmEdge_String creation.
  • Fixed the instruction iteration exception in interpreter mode.
    • Forcely added the capacity of instruction vector to prevent from connection of instruction vectors in different function instances.
  • Fixed the VM creation issue.
    • Added the loss of intrinsics table setting when creating a VM instance.
  • Fixed wasi-socket support on macos.

Refactor:

  • Refined headers inclusion in all files.
  • Refactor the common headers.
    • Removed the unnecessary genNullRef().
    • Merged the building environment-related definitions into common.
    • Merged the common/values.h into common/types.h.
    • Separated all enumeration definitions.
  • Refactored the AST nodes.
    • Simplified the AST nodes definitions into header-only classes.
    • Moved the binary loading functions into loader.
    • Updated the validator, executor, runtime, api, and vm for the AST node changes.
  • Refactored the runtime objects.
    • Used AST::FunctionType, AST::TableType, AST::MemoryType, and AST::GlobalType for instance creation and member handling.
    • Removed Runtime::Instance::FType and used AST::FunctionType instead.
    • Added routines to push function instances into import objects.
    • Removed the exported map getter in StoreManager. Used the getter from ModuleInstance instead.
    • Added the module name mapping in StoreManager.
  • Refactored the VM class.
    • Returned the reference to function type instead of copying when getting the function list.
    • Returned the vector of return value and value type pair when execution.
  • Updated the include path for rust binding due to the API headers refactoring.

Documentations:

Bindings:

  • Move rust crate from root path to bindings/rust.

Tests:

  • Updated and fixed the value comarison in core tests.
  • Added ErrInfo unit tests.
  • Added instruction tests for turning on/off the old proposals.
  • Moved and updated the AST unit tests into loader.
  • Moved and updated the Interpreter tests into Executor folder.
  • Added the unit tests for new APIs.

Misc:

  • Enabled GitHub CodeSpaces
  • Added assuming for assert checking to help compiler to generate better codes.
WasmEdge - WasmEdge 0.9.0-rc.1

Published by github-actions[bot] about 3 years ago

0.9.0 (unreleased)

Breaking changes:

  • Modulized the API Headers.
    • Moved the API header into the wasmedge folder. Developers should include the wasmedge/wasmedge.h for using the WasmEdge shared library after installation.
    • Moved the enumeration definitions into enum_errcode.h, enum_types.h, and enum_configure.h in the wasmedge folder.
  • Adjusted the error code names.
  • Renamed the Interpreter into Executor.
    • Renamed the Interpreter namespace into Executor.
    • Moved the headers and sources in the Interpreter folder into Executor folder.
    • Renamed the Interpreter APIs and listed below.
  • WasmEdge C API changes.
    • Updated the host function related APIs.
      • Deleted the data object column in the creation function of ImportObject context.
      • Merged the HostFunctionContext into FunctionInstanceContext.
        • Deleted the WasmEdge_HostFunctionContext object. Please use the WasmEdge_FunctionInstanceContext object instead.
        • Deleted the WasmEdge_HostFunctionCreate function. Please use the WasmEdge_FunctionInstanceCreate function instead.
        • Deleted the WasmEdge_HostFunctionCreateBinding function. Please use the WasmEdge_FunctionInstanceCreateBinding function instead.
        • Deleted the WasmEdge_HostFunctionDelete function. Please use the WasmEdge_FunctionInstanceDelete function instead.
        • Deleted the WasmEdge_ImportObjectAddHostFunction function. Please use the WasmEdge_ImportObjectAddFunction function instead.
      • Added the data object column in the creation function of FunctionInstance context.
      • Instead of the unified data object of the host functions in the same import object before, the data objects are independent in every host function now.
    • Added the WASM types contexts.
      • Added the WasmEdge_TableTypeContext, which is used for table instances creation.
      • Added the WasmEdge_MemoryTypeContext, which is used for memory instances creation.
      • Added the WasmEdge_GlobalTypeContext, which is used for global instances creation.
      • Added the member getter functions of the above contexts.
    • Updated the instances creation APIs.
      • Used WasmEdge_TableTypeContext for table instances creation.
        • Removed WasmEdge_TableInstanceGetRefType API.
        • Developers can use the WasmEdge_TableInstanceGetTableType API to get the table type instead.
      • Used WasmEdge_MemoryTypeContext for memory instances creation.
        • Added WasmEdge_MemoryInstanceGetMemoryType API.
      • Used WasmEdge_GlobalTypeContext for global instances creation.
        • Removed WasmEdge_GlobalInstanceGetValType and WasmEdge_GlobalInstanceGetMutability API.
        • Developers can use the WasmEdge_GlobalInstanceGetGlobalType API to get the global type instead.
    • Refactored for the objects' life cycle to reduce copying.
      • Developers should NOT destroy the WasmEdge_FunctionTypeContext objects returned from WasmEdge_VMGetFunctionList, WasmEdge_VMGetFunctionType, and WasmEdge_VMGetFunctionTypeRegistered functions.
      • Developers should NOT destroy the WasmEdge_String objects returned from WasmEdge_StoreListFunction, WasmEdge_StoreListFunctionRegistered, WasmEdge_StoreListTable, WasmEdge_StoreListTableRegistered, WasmEdge_StoreListMemory, WasmEdge_StoreListMemoryRegistered, WasmEdge_StoreListGlobal, WasmEdge_StoreListGlobalRegistered, WasmEdge_StoreListModule, and WasmEdge_VMGetFunctionList functions.
    • Renamed the Interpreter related APIs.
      • Replaced WasmEdge_InterpreterContext struct with WasmEdge_ExecutorContext struct.
      • Replaced WasmEdge_InterpreterCreate function with WasmEdge_ExecutorCreate function.
      • Replaced WasmEdge_InterpreterInstantiate function with WasmEdge_ExecutorInstantiate function.
      • Replaced WasmEdge_InterpreterRegisterImport function with WasmEdge_ExecutorRegisterImport function.
      • Replaced WasmEdge_InterpreterRegisterModule function with WasmEdge_ExecutorRegisterModule function.
      • Replaced WasmEdge_InterpreterInvoke function with WasmEdge_ExecutorInvoke function.
      • Replaced WasmEdge_InterpreterInvokeRegistered function with WasmEdge_ExecutorInvokeRegistered function.
      • Replaced WasmEdge_InterpreterDelete function with WasmEdge_ExecutorDelete function.

Features:

  • Applied the old WebAssembly proposals options (All turned on by default).
    • Developers can use the disable-import-export-mut-globals to disable the Import/Export mutable globals proposal in wasmedge and wasmedgec.
    • Developers can use the disable-non-trap-float-to-int to disable the Non-trapping float-to-int conversions proposal in wasmedge and wasmedgec.
    • Developers can use the disable-sign-extension-operators to disable the Sign-extension operators proposal in wasmedge and wasmedgec.
    • Developers can use the disable-multi-value to disable the Multi-value proposal in wasmedge and wasmedgec.
  • New WasmEdge C API for listing imports and exports from AST module contexts.
    • Developers can query the ImportTypeContext and ExportTypeContext from the ASTModuleContext.
    • New object WasmEdge_ImportTypeContext.
    • New object WasmEdge_ExportTypeContext.
    • New AST module context functions to query the import and export types.
      • WasmEdge_ASTModuleListImportsLength function can query the imports list length from an AST module context.
      • WasmEdge_ASTModuleListExportsLength function can query the exports list length from an AST module context.
      • WasmEdge_ASTModuleListImports function can list all import types of an AST module context.
      • WasmEdge_ASTModuleListExports function can list all export types of an AST module context.
    • New import type context functions to query data.
      • WasmEdge_ImportTypeGetExternalType function can get the external type of an import type context.
      • WasmEdge_ImportTypeGetModuleName function can get the import module name.
      • WasmEdge_ImportTypeGetExternalName function can get the import external name.
      • WasmEdge_ImportTypeGetFunctionType function can get the function type of an import type context.
      • WasmEdge_ImportTypeGetTableType function can get the table type of an import type context.
      • WasmEdge_ImportTypeGetMemoryType function can get the memory type of an import type context.
      • WasmEdge_ImportTypeGetGlobalType function can get the global type of an import type context.
    • New export type context functions to query data.
      • WasmEdge_ExportTypeGetExternalType function can get the external type of an export type context.
      • WasmEdge_ExportTypeGetExternalName function can get the export external name.
      • WasmEdge_ExportTypeGetFunctionType function can get the function type of an export type context.
      • WasmEdge_ExportTypeGetTableType function can get the table type of an export type context.
      • WasmEdge_ExportTypeGetMemoryType function can get the memory type of an export type context.
      • WasmEdge_ExportTypeGetGlobalType function can get the global type of an export type context.
    • For more details of the usages of imports and exports, please refer to the C API documentation.
  • Provided install and uninstall script for installing/uninstalling WasmEdge on linux(amd64 and aarch64) and macos(amd64 and arm64).
  • Refined the AoT binary format. Append a custom section for storing the compiled binary.

Fixed issues:

  • Refined the WasmEdge C API behaviors.
    • Handle the edge cases of WasmEdge_String creation.
  • Fixed the VM creation issue.
    • Added the loss of intrinsics table setting when creating a VM instance.
  • Fixed wasi-socket support on macos

Refactor:

  • Refined headers inclusion in all files.
  • Refactor the common headers.
    • Removed the unnecessary genNullRef().
    • Merged the building environment-related definitions into common.
    • Merged the common/values.h into common/types.h.
    • Separate all enumeration definitions.
  • Refactor the AST nodes.
    • Simplified the AST nodes definitions into header-only classes.
    • Moved the binary loading functions into loader.
    • Updated the validator, executor, runtime, api, and vm for the AST node changes.
  • Refactor the runtime objects.
    • Used AST::FunctionType, AST::TableType, AST::MemoryType, and AST::GlobalType for instance creation and member handling.
    • Removed Runtime::Instance::FType and used AST::FunctionType instead.
    • Added routines to push function instances into import objects.
    • Removed the exported map getter in StoreManager. Used the getter from ModuleInstance instead.
    • Added the module name mapping in StoreManager.
  • Refactor the VM class.
    • Return the reference to function type instead of copying when getting the function list.
  • Updated the include path for rust binding due to the API headers refactoring.

Documentations:

Bindings:

  • Move rust crate from root path to bindings/rust.

Tests:

  • Added ErrInfo unit tests.
  • Added instruction tests for turning on/off the old proposals.
  • Moved and updated the AST unit tests into loader.
  • Moved and updated the Interpreter tests into Executor folder.
  • Added the unit tests for new APIs.

Misc:

  • Enable GitHub CodeSpaces
WasmEdge - WasmEdge 0.8.2

Published by github-actions[bot] about 3 years ago

0.8.2 (2021-08-25)

Features:

  • WASI:
    • Supported WASI on macOS(Intel & M1).
    • Supported WASI on Windows 10.
    • Supported WASI Socket functions on Linux.
  • C API:
    • Supported 32-bit environment.
    • Added the static library target libwasmedge_c.a (OFF by default).
    • Added the ErrCode to C declarations.
    • Added the API about converting WasmEdge_String to C string.
    • Added the API to get data pointer from the WasmEdge_MemoryInstanceContext.
  • AOT:
    • Added --generic-binary to generate generic binaries and disable using host features.
  • Multi platforms:
    • Enabled Ubuntu 20.04 x86_64 build.
    • Enabled Ubuntu 21.04 x86_64 build.
    • Enabled manylinux2014 aarch64 build.
    • Enabled Ubuntu 21.04 arm32 build.
  • Rust supports:
    • Added the wasmedge-sys and wasmedge-rs crates.
    • Added the wrapper types to rust.
  • Removed binfmt support.

Fixed issues:

  • Ensured every platform defines is defined.
  • Disabled blake3 AVX512 support on old platforms.
  • Avoided vector ternary operator in AOT, which is unsupported by clang on mac.
  • The preopen should be --dir guest_path:host_path.
  • Fixed usused variables error in API libraries when AOT build is disabled.
  • Fixed the WASI function signature error.
    • wasi_snapshot_preview1::path_read_link
      • Fixed the signature error with the lost read size output.
      • Added the Out comments for parameters with receiving outputs.
    • wasi_snapshot_preview1::path_filestat_set_times
      • Corrected the time signature to the u64.

Misc:

  • Changed all CMake global properties to target specified properties.
    • Added namespace to all cmake options.
  • Added the CMake option WASMEDGE_FORCE_DISABLE_LTO to forcibly disable link time optimization (OFF by default).
    • WasmEdge project enables LTO by default in Release/RelWithDeb build. If you would like to disable the LTO forcibly, please turn on the WASMEDGE_FORCE_DISABLE_LTO option.
  • Installed dpkg-dev in docker images to enable dpkg-shlibdeps when creating the deb release.

Refactor:

  • Refactored the WASI VFS architecture.
  • Simplified the memory indexing in validator.
  • Renamed the file names in interpreter.
  • Replaced the instances when registering host instances with existing names.

Documentations:

Tests:

  • Added wasi-test for testing basic WASI interface
  • Added C API unit tests.
    • Added the WasmEdge_String copy tests.
    • Added the WasmEdge_MemoryInstanceContext get data pointer tests.
  • Removed unnecessary Wagon and Ethereum tests.
WasmEdge - WasmEdge 0.8.2-rc.5

Published by github-actions[bot] about 3 years ago

0.8.2 (unrelease)

Features:

  • WASI:
    • Supported WASI on macOS(Intel & M1).
    • Supported WASI on Windows 10.
    • Supported WASI Socket functions on Linux.
  • C API:
    • Added the static library libwasmedge_c.a.
    • Added the ErrCode to C declarations.
    • Added the API about converting WasmEdge_String to C string.
    • Added the API to get data pointer from the WasmEdge_MemoryInstanceContext.
  • AOT:
    • Added --generic-binary to generate generic binaries and disable using host features.
  • Multi platforms:
    • Enabled Ubuntu 20.04 x86_64 build.
    • Enabled Ubuntu 21.04 x86_64 build.
    • Enabled manylinux2014 aarch64 build.
    • Enabled ubuntu arm32 build.
  • Rust supports:
    • Added the wasmedge-sys and wasmedge-rs crates.
    • Added the wrapper types to rust.
  • Removed binfmt support.

Fixed issues:

  • Ensured every platform defines is defined.
  • Disabled blake3 AVX512 support on old platforms.
  • Avoided vector ternary operator in AOT, which is unspoorted by clang on mac.
  • The preopen should be --dir guest_path:host_path.
  • Fixed usused variables error in API libraries when AOT build is disabled.
  • Fixed the signature error of wasi_snapshot_preview1::path_read_link.
    • Fixed the signature error with the lost read size output.
    • Added the Out comments for parameters with receiving outputs.

Misc:

  • Changed all CMake global properties to target specified properties.
    • Added namespace to all cmake options.
  • Installed dpkg-dev in docker images to enable dpkg-shlibdeps when creating the deb release.

Refactor:

  • Refactored the WASI VFS architecture.
  • Replaced the instances when registering host instances with existing names.

Documentations:

Tests:

  • Added wasi-test for testing basic WASI interface
  • Added C API unit tests.
    • Added the WasmEdge_String copy tests.
    • Added the WasmEdge_MemoryInstanceContext get data pointer tests.
  • Removed unnecessary Wagon and Ethereum tests.
WasmEdge - WasmEdge 0.8.2-rc.4

Published by github-actions[bot] about 3 years ago

0.8.2 (unrelease)

Features:

  • WASI:
    • Support WASI on macOS(Intel & M1)
    • Support WASI on Windows 10
    • Support WASI Socket function on linux
  • C API:
    • Add the API about convert WasmEdge_String to C string
  • AOT:
    • Add --generic-binary to generate generic binary and disable using host features
  • Multi platform:
    • Enable Ubuntu 20.04 x86_64 build
    • Enable Ubuntu 21.04 x86_64 build
    • Enable manylinux2014 aarch64 build
    • Enable ubuntu arm32 build
  • Rust support:
    • Add wasmedge-sys crate
  • Remove binfmt support

Fixed issues:

  • Ensure every platform defines is defined
  • Disable blake3 AVX512 support on old platform
  • Avoid vector ternary operator in AOT, which is unspoorted by clang on mac
  • The preopen should be --dir guest_path:host_path
  • Fix usused variables error in API libraries when AOT build is disabled
  • Fix the signature error of wasi_snapshot_preview1::path_read_link.
    • Fix the signature error with the lost read size output.
    • Add the Out comments for parameters with receiving outputs.

Misc:

  • Change all CMake global properties to target specified properties
    • Add namespace to all cmake options

Refactor:

  • Refactor WASI VFS architecture

Tests:

  • Add wasi-test for testing basic WASI interface
  • Add C API unit test of string copy.
  • Remove unnecessary Wagon and Ethereum tests
WasmEdge - WasmEdge 0.8.2-rc.3

Published by github-actions[bot] about 3 years ago

0.8.2 (unrelease)

Features:

  • WASI support:
    • Support WASI on macOS(Intel & M1)
    • Support WASI on Windows 10
  • C API:
    • Add the API about convert WasmEdge_String to C string
  • AOT:
    • Add --generic-binary to generate generic binary and disable using host features

Fixed issues:

  • Ensure every platform defines is defined
  • Disable blake3 AVX512 support on old platform
  • Avoid vector ternary operator in AOT, which is unspoorted by clang on mac
  • The preopen should be --dir guest_path:host_path

Refactor:

  • Refactor WASI VFS architecture

Tests:

  • Add wasi-test for testing basic WASI interface
  • Add C API unit test of string copy.
  • Remove unnecessary Wagon and Ethereum tests
WasmEdge - WasmEdge 0.8.2-rc.2

Published by github-actions[bot] about 3 years ago

0.8.2 (unrelease)

Features:

  • WASI support:
    • Support WASI on macOS(Intel & M1)
    • Support WASI on Windows 10
  • C API:
    • Add the API about convert WasmEdge_String to C string
  • AOT:
    • Add --generic-binary to generate generic binary and disable using host features

Fixed issues:

  • Ensure every platform defines is defined
  • Disable blake3 AVX512 support on old platform
  • Avoid vector ternary operator in AOT, which is unspoorted by clang on mac
  • The preopen should be --dir guest_path:host_path

Refactor:

  • Refactor WASI VFS architecture

Tests:

  • Add wasi-test for testing basic WASI interface
  • Add C API unit test of string copy.
  • Remove unnecessary Wagon and Ethereum tests
WasmEdge - WasmEdge 0.8.2-rc.1

Published by github-actions[bot] over 3 years ago

0.8.2 (unrelease)

Features:

  • WASI support:
    • Support WASI on macOS(Intel & M1)
    • Support WASI on Windows 10
  • C API:
    • Add the API about convert WasmEdge_String to C string
  • AOT:
    • Add --generic-binary to generate generic binary and disable using host features

Fixed issues:

  • Ensure every platform defines is defined
  • Disable blake3 AVX512 support on old platform
  • Avoid vector ternary operator in AOT, which is unspoorted by clang on mac
  • The preopen should be --dir guest_path:host_path

Refactor:

  • Refactor WASI VFS architecture

Tests:

  • Add wasi-test for testing basic WASI interface
  • Add C API unit test of string copy.
  • Remove unnecessary Wagon and Ethereum tests
WasmEdge - WasmEdge 0.8.1

Published by github-actions[bot] over 3 years ago

0.8.1 (2021-06-18)

Features:

  • Exported new functions in C API to import the wasmedge_process module.
    • WasmEdge_ImportObjectCreateWasmEdgeProcess() can create and initialize the wasmedge_process import object.
    • WasmEdge_ImportObjectInitWasmEdgeProcess() can initialize the given wasmedge_process import object.
  • Exported new AOT compiler configuration setting C APIs.
    • Users can set the options about AOT optimization level, dump IR, and instruction counting and cost measuring in execution after compilation to the AOT compiler through C APIs.
  • Updated error codes according to the newest test suite of WebAssembly.
    • Applied the correct error message when trapping in the loading phase.
  • Implemented the UTF-8 decoding in file manager.
  • Implemented the basic name section parsing in custom sections.
  • Added memory-mapped file helper, MMap for Linux.
    • Used mmap with MAP_NORESERVE for overcommited allocation.
    • Used MMap for file loading.
    • Merged FileMgr variants into one class.

Fixed issues:

  • Applied the UTF-8 decoding.
    • Check the UTF-8 validation in custom sections, export sections, and import sections.
  • Detected the redundant sections in modules.
    • Fixed this issue hence the sections rather than the custom section should be unique.
  • Corrected the logging of data offset in the file while trap occurred in the loading phase.
    • Updated to the correct offset according to the refactored file manager.

Refactor:

  • Updated manylinux* dockerfiles.
    • Upgraded gcc to 11.1.0.
    • Upgraded llvm to 12.0.0.
    • Upgraded boost to 1.76.
    • Moved environment variables to Dockerfile.
    • Used helper scripts to build.
  • Moved the options of the AOT compiler into the Configure class.
  • Refactor the file manager for supporting the Unexpected end loading malformed test cases.
    • Added the setSectionSize function to specify the reading boundary before the end of the file.
  • Adjusted build scripts.
    • Set job pools for ninja generator.
    • Checked for newer compilers in std::filesystem.
    • Adjusted library dependency.

Documentations:

  • Updated the WasmEdge ecosystem document.
    • Renamed the SSVM related projects into WasmEdge.

Tools:

  • Updated the wasmedgec AOT compiler tool for API changes of the Configure.

Tests:

  • Turn on the assert_malformed tests for WASM binary in spec tests.
    • Apply the interpreter tests.
    • Apply the AOT tests.
    • Apply the API tests.
  • Updated the API unit tests for the new Configure APIs.
  • Updated the AST and loader unit tests.
    • Added test cases of file manager to raise the coverage.
    • Added test cases of every AST node to raise the coverage.
WasmEdge - WasmEdge 0.8.0

Published by github-actions[bot] over 3 years ago

0.8.0 (2021-05-13)

Breaking changes:

  • Renamed this project to WasmEdge (formerly ssvm).
    • The tool wasmedge is the WebAssembly runtime (formerly ssvm).
    • The tool wasmedgec is the WebAssembly AOT compiler (formerly ssvmc).
  • Renamed the CMake options.
    • Option BUILD_AOT_RUNTIME (formerly SSVM_DISABLE_AOT_RUNTIME and OFF by default), which is ON by default, is for enabling the compilation of the ahead-of-Time compiler.
  • Turned on the reference-types and bulk-memory-operations proposals by default in tools.
    • Users can use the disable-bulk-memory to disable the bulk-memory-operations proposal in wasmedge and wasmedgec.
    • Users can use the disable-reference-types to disable the reference-types proposal in wasmedge and wasmedgec.

Features:

  • Added WasmEdge C API and shared library.
    • Developers can include the wasmedge.h and link the libwasmedge_c.so for compiling and running WASM.
    • Add CMake option BUILD_SHARED_LIB to enable compiling the shared library (ON by default).
    • The APIs about the ahead-of-time compiler will always return failed if the CMake option BUILD_AOT_RUNTIME is set as OFF.
  • Added common/version.h: define the package version from cmake.
  • Updated Configure.
    • Turned on the reference-types and bulk-memory-operations proposals by default.
    • Supports memory page limitation for limiting the largest available pages in memory instances.
  • Added a function in Log to enable the debug logging level.
  • Added global options with subcommands into PO.
  • Added an API into StoreManager to list the registered module names.
  • Added an API into TableInstance to grow table with ref.null.
  • Updated SIMD implementation with the newest SIMD proposal.
  • Supported AOT compile cache.
    • Added blake3 hash calculator to calculate hash for caching files.
  • Added an API into VM for loading WASM module from AST::Module.

Fixed issues:

  • Adjusted and fixed cmake issues.
    • Used CMAKE_CURRENT_SOURCE_DIR in this project for supporting to be as a submodule.
    • Assigned a default version number (0.0.0-unreleased) when getting the version from git describe failed.
    • Fixed boost include variable names.
  • Fixed WASI poll_oneoff.
    • Allow SIGINT and SIGTERM while waiting for the file descriptor and check SIGTERM after epoll.
  • Rearranged variables for CPU feature detection in AOT compiler.
  • Fixed Validator errors.
    • Fixed the error in br_table for pushing wrong types into validation stack.
    • Fixed the error in global_set for iterating illegal indices.
  • Fixed Interpreter errors.
    • Fixed the failed case that not returned the errors except ErrCode::ExecutionFailed when invoking the host functions.
    • Not to return success when the ErrCode::Terminated occurs.
  • Fixed the unmapping size in the destructor of MemoryInstance.

Refactor:

  • Merged the CostTable class into Statistics.
    • Simplified the API for getting and setting cost table.
    • Initialized the costs for every instruction as 1 by default.
  • Merged the Proposal and HostRegistration configurations into Configure.
    • Adjusted the Proposal order.
  • Applied the copy of Configure in Loader, Validator, Interpreter, and VM instead of passing by reference.
  • Refactored the functions in the StoreManager.
    • Updated the templates of functions to register instances.
    • Forwarded the parameters to reduce moving.
  • Refactored and used the std::variant to save space in FunctionInstance.
  • Applied function parameter type checking when invoking a wasm function in Interpreter.
  • Set the module instantiation as the anonymous active module in Interpreter.
  • Added the const quantifier in get and load data functions of MemoryInstance.

Documentations:

Tools:

  • wasmedge: WebAssembly runtime (formerly ssvm)
    • Turned on the bulk-memory-operations and reference-types proposals by default.
      • Users can use the disable-bulk-memory to disable the bulk-memory-operations proposal.
      • Users can use the disable-reference-types to disable the reference-types proposal.
    • Updated for the vm API changes.
    • Return the exit code in command mode in forced terminated occurs in WASI.
  • wasmedgec: WebAssembly AOT compiler (formerly ssvmc)
    • Turned on the bulk-memory-operations and reference-types proposals by default.
      • Users can use the disable-bulk-memory to disable the bulk-memory-operations proposal when compiling.
      • Users can use the disable-reference-types to disable the reference-types proposal when compiling.

Tests:

  • Added AOT cache tests.
  • Added memory page size limit tests.
  • Updated the WASM spec tests.
    • Updated WasmEdge-unittest and check out the newest test suites.
      • Updated the SIMD test data.
      • For the WasmEdge 0.8.0, we use the wasm-dev-0.8.0 tag for the core tests and the SIMD proposal tests.
    • Adjusted the code architecture for core testing.
      • Combined the duplicated functions into the SpecTest class.
      • Split out the spectest host function definitions for importing repeatedly.
  • Added WasmEdge C API tests.
    • Added unit tests for APIs in the WasmEdge shared library.
    • Applied WASM core tests for the WasmEdge shared library in both using Interpreter APIs and VM APIs.