From 314d3f3864f89805b8ee46144499d2119a9b8ab5 Mon Sep 17 00:00:00 2001 From: "liang.he@intel.com" Date: Thu, 19 Dec 2024 08:41:38 +0000 Subject: [PATCH 1/6] Add documentation regarding security issues and the status of Wasm proposals. --- doc/security_need_to_know.md | 28 +++++++++++++ doc/stability_wasm_proposals.md | 72 +++++++++++++++++++++++++++++++++ 2 files changed, 100 insertions(+) create mode 100644 doc/security_need_to_know.md create mode 100644 doc/stability_wasm_proposals.md diff --git a/doc/security_need_to_know.md b/doc/security_need_to_know.md new file mode 100644 index 0000000000..29a7a73013 --- /dev/null +++ b/doc/security_need_to_know.md @@ -0,0 +1,28 @@ +# About security issues + +This document aims to explain the process of identifying a security issue and the steps for managing a security issue. + +## identifying a security issue + +It is commonly stated that a security issue is an issue that: +- Exposes sensitive information to unauthorized parties. +- Allows unauthorized modification of data or system state. +- Affects the availability of the system or its services. +- Permits unauthorized access to the system. +- Enables users to perform actions they should not be able to. +- Allows users to deny actions they have performed. + +Given that WASI is a set of Capability-based APIs, all unauthorized actions are not supposed to happen. Most of the above security concerns can be alleviated. What remains for us is to ensure that Wasm modules ' execution is secure. In other words, do not compromise the sandbox. Unless it is explicitly disabled beforehand. + +Thus, we share most of the criteria for judging security issues with [the Bytecode Alliance](https://github.com/bytecodealliance/rfcs/blob/main/accepted/what-is-considered-a-security-bug.md#definition). + +>[!NOTE] +> keep updating this document as the project evolves. + +## managing a security issue + +Before reporting an issue, particularly one related to crashing, consult [the cheat sheet](), *Report a security vulnerability* if it qualifies. + +Upon receiving an issue, thoroughly review [the cheat sheet] to assess and *Report a security vulnerability* if the issue is indeed a security vulnerability . + +Once a security issue is confirmed, please refer to [the runbook](https://github.com/bytecodealliance/rfcs/blob/main/accepted/vulnerability-response-runbook.md) for the subsequent steps to take. diff --git a/doc/stability_wasm_proposals.md b/doc/stability_wasm_proposals.md new file mode 100644 index 0000000000..c928cfd475 --- /dev/null +++ b/doc/stability_wasm_proposals.md @@ -0,0 +1,72 @@ +# Wasm Proposals + +This document is intended to describe the current status of WebAssembly proposals and WASI proposals in WAMR. + +Only track proposals that are followed in the [WebAssembly proposals](https://github.com/WebAssembly/proposals) and [WASI proposals](https://github.com/WebAssembly/WASI/blob/main/Proposals.md). + +Normally, the document tracks proposals that are in phase 4. However, if a proposal in an earlier phase receives support, it will be added to the list below. + +The _status_ represents the configuration _product-mini/platforms/linux/CMakeLists.txt_. There may be minor differences between the top-level CMakeLists and platform-specific CMakeLists. + +Users can turn those features on or off using compilation options. If a relevant compilation option is not available(`N/A`), it indicates that the feature is permanently enabled. + +## On-by-default Wasm Proposals + +| Proposal | Phase 4 | Compilation Option | +| ------------------------------------- | ------- | -------------------------- | +| Non-trapping float-to-int conversions | Yes | N/A | +| Sign-extension operators | Yes | N/A | +| Multi-value | Yes | N/A | +| Reference Types | Yes | `WAMR_BUILD_REF_TYPES` | +| Bulk memory operations | Yes | `WAMR_BUILD_BULK_MEMORY` | +| Fixed-width SIMD[^1] | Yes | `WAMR_BUILD_SIMD` | +| Extended Constant Expressions | Yes | N/A | +| Typed Function References | Yes | `WAMR_BUILD_GC` | +| Thread | Yes | `WAMR_BUILD_SHARED_MEMORY` | +| Exception handling[^2] | Yes | `WAMR_BUILD_EXCE_HANDLING` | +| WebAssembly C and C++ API | No | N/A | + +[^1]: jit and aot only +[^2]: interpreter only + +## Off-by-default Wasm Proposals + +| Proposal | Phase 4 | Compilation Option | +| --------------------- | ------- | ------------------------- | +| Tail call | Yes | `WAMR_BUILD_TAIL_CALL` | +| Garbage collection | Yes | `WAMR_BUILD_GC` | +| Multiple memories[^3] | Yes | `WAMR_BUILD_MULTI_MEMORY` | +| Memory64 | Yes | `WAMR_BUILD_MEMORY64` | + +[^3]: interpreter only + +## Unimplemented Wasm Proposals + +| Proposal | Phase 4 | +| ------------------------------------------- | ------- | +| Import/Export of Mutable Globals | Yes | +| Relaxed SIMD | Yes | +| Custom Annotation Syntax in the Text Format | Yes | +| Branch Hinting | Yes | +| JS String Builtins | Yes | + +## On-by-default WASI Proposals + +| Proposal | Phase 4 | Compilation Option | +| -------- | ------- | ------------------ | + +## Off-by-default WASI Proposals + +| Proposal | Phase 4 | Compilation Option | +| -------------------------- | ------- | ----------------------------- | +| Machine Learning (wasi-nn) | No | `WAMR_BUILD_WASI_NN` | +| Threads | No | `WAMR_BUILD_LIB_WASI_THREADS` | + +## Unimplemented WASI Proposals + +| Proposal | Phase 4 | +| -------- | ------- | + +## WAMR features + +WAMR offers a variety of customizable features to create a highly efficient runtime. For more details, please refer to [build_wamr](./build_wamr.md). \ No newline at end of file From 8a6c7cab9b8a333dc55deb8e7a83a36544855aec Mon Sep 17 00:00:00 2001 From: "liang.he@intel.com" Date: Mon, 23 Dec 2024 05:34:35 +0000 Subject: [PATCH 2/6] Improve security documentation and clarify Wasm proposal statuses --- doc/security_need_to_know.md | 13 +++++++++---- doc/stability_wasm_proposals.md | 7 ++++--- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/doc/security_need_to_know.md b/doc/security_need_to_know.md index 29a7a73013..89a9285334 100644 --- a/doc/security_need_to_know.md +++ b/doc/security_need_to_know.md @@ -5,6 +5,7 @@ This document aims to explain the process of identifying a security issue and th ## identifying a security issue It is commonly stated that a security issue is an issue that: + - Exposes sensitive information to unauthorized parties. - Allows unauthorized modification of data or system state. - Affects the availability of the system or its services. @@ -12,17 +13,21 @@ It is commonly stated that a security issue is an issue that: - Enables users to perform actions they should not be able to. - Allows users to deny actions they have performed. -Given that WASI is a set of Capability-based APIs, all unauthorized actions are not supposed to happen. Most of the above security concerns can be alleviated. What remains for us is to ensure that Wasm modules ' execution is secure. In other words, do not compromise the sandbox. Unless it is explicitly disabled beforehand. +Given that WASI is a set of Capability-based APIs, all unauthorized actions are not supposed to happen. Most of the above security concerns can be alleviated. What remains for us is to ensure that Wasm modules' execution is secure. In other words, do not compromise the sandbox. Unless it is explicitly disabled beforehand. Thus, we share most of the criteria for judging security issues with [the Bytecode Alliance](https://github.com/bytecodealliance/rfcs/blob/main/accepted/what-is-considered-a-security-bug.md#definition). ->[!NOTE] +> [!NOTE] > keep updating this document as the project evolves. +## reporting a security issue + +Follow the [same guidelines](https://bytecodealliance.org/security) as other projects within the Bytecode Alliance. + ## managing a security issue -Before reporting an issue, particularly one related to crashing, consult [the cheat sheet](), *Report a security vulnerability* if it qualifies. +Before reporting an issue, particularly one related to crashing, consult [the cheat sheet](https://github.com/bytecodealliance/rfcs/blob/main/accepted/what-is-considered-a-security-bug.md#cheat-sheet-is-this-bug-considered-a-security-vulnerability), _Report a security vulnerability_ if it qualifies. -Upon receiving an issue, thoroughly review [the cheat sheet] to assess and *Report a security vulnerability* if the issue is indeed a security vulnerability . +Upon receiving an issue, thoroughly review [the cheat sheet](https://github.com/bytecodealliance/rfcs/blob/main/accepted/what-is-considered-a-security-bug.md#cheat-sheet-is-this-bug-considered-a-security-vulnerability) to assess and _Report a security vulnerability_ if the issue is indeed a security vulnerability . Once a security issue is confirmed, please refer to [the runbook](https://github.com/bytecodealliance/rfcs/blob/main/accepted/vulnerability-response-runbook.md) for the subsequent steps to take. diff --git a/doc/stability_wasm_proposals.md b/doc/stability_wasm_proposals.md index c928cfd475..51e29a3273 100644 --- a/doc/stability_wasm_proposals.md +++ b/doc/stability_wasm_proposals.md @@ -8,7 +8,7 @@ Normally, the document tracks proposals that are in phase 4. However, if a propo The _status_ represents the configuration _product-mini/platforms/linux/CMakeLists.txt_. There may be minor differences between the top-level CMakeLists and platform-specific CMakeLists. -Users can turn those features on or off using compilation options. If a relevant compilation option is not available(`N/A`), it indicates that the feature is permanently enabled. +Users can turn those features on or off by using compilation options. If a relevant compilation option is not available(`N/A`), it indicates that the feature is permanently enabled. ## On-by-default Wasm Proposals @@ -23,7 +23,7 @@ Users can turn those features on or off using compilation options. If a relevant | Extended Constant Expressions | Yes | N/A | | Typed Function References | Yes | `WAMR_BUILD_GC` | | Thread | Yes | `WAMR_BUILD_SHARED_MEMORY` | -| Exception handling[^2] | Yes | `WAMR_BUILD_EXCE_HANDLING` | +| Legacy Exception handling[^2] | Yes | `WAMR_BUILD_EXCE_HANDLING` | | WebAssembly C and C++ API | No | N/A | [^1]: jit and aot only @@ -49,6 +49,7 @@ Users can turn those features on or off using compilation options. If a relevant | Custom Annotation Syntax in the Text Format | Yes | | Branch Hinting | Yes | | JS String Builtins | Yes | +| Exception handling | Yes | ## On-by-default WASI Proposals @@ -69,4 +70,4 @@ Users can turn those features on or off using compilation options. If a relevant ## WAMR features -WAMR offers a variety of customizable features to create a highly efficient runtime. For more details, please refer to [build_wamr](./build_wamr.md). \ No newline at end of file +WAMR offers a variety of customizable features to create a highly efficient runtime. For more details, please refer to [build_wamr](./build_wamr.md). From 38b39d8f8f34f65a3c070185825af7d01162cb3d Mon Sep 17 00:00:00 2001 From: "liang.he@intel.com" Date: Mon, 23 Dec 2024 23:06:48 +0000 Subject: [PATCH 3/6] Clarify documentation regarding Wasm proposals by specifying "llvm-jit" in the legacy exception handling note --- doc/stability_wasm_proposals.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/stability_wasm_proposals.md b/doc/stability_wasm_proposals.md index 51e29a3273..9659ae97d0 100644 --- a/doc/stability_wasm_proposals.md +++ b/doc/stability_wasm_proposals.md @@ -26,7 +26,7 @@ Users can turn those features on or off by using compilation options. If a relev | Legacy Exception handling[^2] | Yes | `WAMR_BUILD_EXCE_HANDLING` | | WebAssembly C and C++ API | No | N/A | -[^1]: jit and aot only +[^1]: llvm-jit and aot only [^2]: interpreter only ## Off-by-default Wasm Proposals From 0de4d1c4bc8edcc45ee54d64a7314bb4e8851347 Mon Sep 17 00:00:00 2001 From: "liang.he@intel.com" Date: Wed, 25 Dec 2024 13:46:40 +0000 Subject: [PATCH 4/6] Refine security documentation and reorganize Wasm proposals for clarity --- doc/security_need_to_know.md | 4 ++-- doc/stability_wasm_proposals.md | 35 +++++++++++++++++---------------- 2 files changed, 20 insertions(+), 19 deletions(-) diff --git a/doc/security_need_to_know.md b/doc/security_need_to_know.md index 89a9285334..b2b358983d 100644 --- a/doc/security_need_to_know.md +++ b/doc/security_need_to_know.md @@ -13,7 +13,7 @@ It is commonly stated that a security issue is an issue that: - Enables users to perform actions they should not be able to. - Allows users to deny actions they have performed. -Given that WASI is a set of Capability-based APIs, all unauthorized actions are not supposed to happen. Most of the above security concerns can be alleviated. What remains for us is to ensure that Wasm modules' execution is secure. In other words, do not compromise the sandbox. Unless it is explicitly disabled beforehand. +Given that WASI is a set of Capability-based APIs, all unauthorized actions are not supposed to happen. Most of the above security concerns can be alleviated. What remains for us is to ensure that the execution of Wasm modules is secure. In other words, do not compromise the sandbox. Unless it is explicitly disabled beforehand. Thus, we share most of the criteria for judging security issues with [the Bytecode Alliance](https://github.com/bytecodealliance/rfcs/blob/main/accepted/what-is-considered-a-security-bug.md#definition). @@ -28,6 +28,6 @@ Follow the [same guidelines](https://bytecodealliance.org/security) as other pro Before reporting an issue, particularly one related to crashing, consult [the cheat sheet](https://github.com/bytecodealliance/rfcs/blob/main/accepted/what-is-considered-a-security-bug.md#cheat-sheet-is-this-bug-considered-a-security-vulnerability), _Report a security vulnerability_ if it qualifies. -Upon receiving an issue, thoroughly review [the cheat sheet](https://github.com/bytecodealliance/rfcs/blob/main/accepted/what-is-considered-a-security-bug.md#cheat-sheet-is-this-bug-considered-a-security-vulnerability) to assess and _Report a security vulnerability_ if the issue is indeed a security vulnerability . +Upon receiving an issue, thoroughly review [the cheat sheet](https://github.com/bytecodealliance/rfcs/blob/main/accepted/what-is-considered-a-security-bug.md#cheat-sheet-is-this-bug-considered-a-security-vulnerability) to assess and _Report a security vulnerability_ if the issue is indeed a security vulnerability. Once a security issue is confirmed, please refer to [the runbook](https://github.com/bytecodealliance/rfcs/blob/main/accepted/vulnerability-response-runbook.md) for the subsequent steps to take. diff --git a/doc/stability_wasm_proposals.md b/doc/stability_wasm_proposals.md index 9659ae97d0..4989039063 100644 --- a/doc/stability_wasm_proposals.md +++ b/doc/stability_wasm_proposals.md @@ -14,16 +14,15 @@ Users can turn those features on or off by using compilation options. If a relev | Proposal | Phase 4 | Compilation Option | | ------------------------------------- | ------- | -------------------------- | -| Non-trapping float-to-int conversions | Yes | N/A | -| Sign-extension operators | Yes | N/A | -| Multi-value | Yes | N/A | -| Reference Types | Yes | `WAMR_BUILD_REF_TYPES` | | Bulk memory operations | Yes | `WAMR_BUILD_BULK_MEMORY` | -| Fixed-width SIMD[^1] | Yes | `WAMR_BUILD_SIMD` | | Extended Constant Expressions | Yes | N/A | -| Typed Function References | Yes | `WAMR_BUILD_GC` | -| Thread | Yes | `WAMR_BUILD_SHARED_MEMORY` | +| Fixed-width SIMD[^1] | Yes | `WAMR_BUILD_SIMD` | | Legacy Exception handling[^2] | Yes | `WAMR_BUILD_EXCE_HANDLING` | +| Multi-value | Yes | N/A | +| Non-trapping float-to-int conversions | Yes | N/A | +| Reference Types | Yes | `WAMR_BUILD_REF_TYPES` | +| Sign-extension operators | Yes | N/A | +| Thread | Yes | `WAMR_BUILD_SHARED_MEMORY` | | WebAssembly C and C++ API | No | N/A | [^1]: llvm-jit and aot only @@ -31,12 +30,14 @@ Users can turn those features on or off by using compilation options. If a relev ## Off-by-default Wasm Proposals -| Proposal | Phase 4 | Compilation Option | -| --------------------- | ------- | ------------------------- | -| Tail call | Yes | `WAMR_BUILD_TAIL_CALL` | -| Garbage collection | Yes | `WAMR_BUILD_GC` | -| Multiple memories[^3] | Yes | `WAMR_BUILD_MULTI_MEMORY` | -| Memory64 | Yes | `WAMR_BUILD_MEMORY64` | +| Proposal | Phase 4 | Compilation Option | +| ------------------------- | ------- | ------------------------- | +| Garbage collection | Yes | `WAMR_BUILD_GC` | +| Memory64 | Yes | `WAMR_BUILD_MEMORY64` | +| Multiple memories[^3] | Yes | `WAMR_BUILD_MULTI_MEMORY` | +| Reference-Typed Strings | No | `WAMR_BUILD_STRINGREF` | +| Tail call | Yes | `WAMR_BUILD_TAIL_CALL` | +| Typed Function References | Yes | `WAMR_BUILD_GC` | [^3]: interpreter only @@ -44,12 +45,12 @@ Users can turn those features on or off by using compilation options. If a relev | Proposal | Phase 4 | | ------------------------------------------- | ------- | -| Import/Export of Mutable Globals | Yes | -| Relaxed SIMD | Yes | -| Custom Annotation Syntax in the Text Format | Yes | | Branch Hinting | Yes | -| JS String Builtins | Yes | +| Custom Annotation Syntax in the Text Format | Yes | | Exception handling | Yes | +| Import/Export of Mutable Globals | Yes | +| JS String Builtins | Yes | +| Relaxed SIMD | Yes | ## On-by-default WASI Proposals From 43365bafefe998ec52c5285351919ba2eab6a415 Mon Sep 17 00:00:00 2001 From: "liang.he@intel.com" Date: Sun, 5 Jan 2025 07:18:09 +0000 Subject: [PATCH 5/6] Update Wasm proposals documentation to reflect phase changes and improve clarity --- doc/stability_wasm_proposals.md | 72 ++++++++++++++++----------------- 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/doc/stability_wasm_proposals.md b/doc/stability_wasm_proposals.md index 4989039063..2c6f66039c 100644 --- a/doc/stability_wasm_proposals.md +++ b/doc/stability_wasm_proposals.md @@ -12,62 +12,62 @@ Users can turn those features on or off by using compilation options. If a relev ## On-by-default Wasm Proposals -| Proposal | Phase 4 | Compilation Option | -| ------------------------------------- | ------- | -------------------------- | -| Bulk memory operations | Yes | `WAMR_BUILD_BULK_MEMORY` | -| Extended Constant Expressions | Yes | N/A | -| Fixed-width SIMD[^1] | Yes | `WAMR_BUILD_SIMD` | -| Legacy Exception handling[^2] | Yes | `WAMR_BUILD_EXCE_HANDLING` | -| Multi-value | Yes | N/A | -| Non-trapping float-to-int conversions | Yes | N/A | -| Reference Types | Yes | `WAMR_BUILD_REF_TYPES` | -| Sign-extension operators | Yes | N/A | -| Thread | Yes | `WAMR_BUILD_SHARED_MEMORY` | -| WebAssembly C and C++ API | No | N/A | +| Proposal | >= Phase 4 | Compilation Option | +| ------------------------------------- | ---------- | -------------------------- | +| Bulk memory operations | Yes | `WAMR_BUILD_BULK_MEMORY` | +| Extended Constant Expressions | Yes | N/A | +| Fixed-width SIMD[^1] | Yes | `WAMR_BUILD_SIMD` | +| Legacy Exception handling[^2] | Yes | `WAMR_BUILD_EXCE_HANDLING` | +| Multi-value | Yes | N/A | +| Non-trapping float-to-int conversions | Yes | N/A | +| Reference Types | Yes | `WAMR_BUILD_REF_TYPES` | +| Sign-extension operators | Yes | N/A | +| Thread | Yes | `WAMR_BUILD_SHARED_MEMORY` | +| WebAssembly C and C++ API | No | N/A | [^1]: llvm-jit and aot only [^2]: interpreter only ## Off-by-default Wasm Proposals -| Proposal | Phase 4 | Compilation Option | -| ------------------------- | ------- | ------------------------- | -| Garbage collection | Yes | `WAMR_BUILD_GC` | -| Memory64 | Yes | `WAMR_BUILD_MEMORY64` | -| Multiple memories[^3] | Yes | `WAMR_BUILD_MULTI_MEMORY` | -| Reference-Typed Strings | No | `WAMR_BUILD_STRINGREF` | -| Tail call | Yes | `WAMR_BUILD_TAIL_CALL` | -| Typed Function References | Yes | `WAMR_BUILD_GC` | +| Proposal | >= Phase 4 | Compilation Option | +| ------------------------- | ---------- | ------------------------- | +| Garbage collection | Yes | `WAMR_BUILD_GC` | +| Memory64 | Yes | `WAMR_BUILD_MEMORY64` | +| Multiple memories[^3] | Yes | `WAMR_BUILD_MULTI_MEMORY` | +| Reference-Typed Strings | No | `WAMR_BUILD_STRINGREF` | +| Tail call | Yes | `WAMR_BUILD_TAIL_CALL` | +| Typed Function References | Yes | `WAMR_BUILD_GC` | [^3]: interpreter only ## Unimplemented Wasm Proposals -| Proposal | Phase 4 | -| ------------------------------------------- | ------- | -| Branch Hinting | Yes | -| Custom Annotation Syntax in the Text Format | Yes | -| Exception handling | Yes | -| Import/Export of Mutable Globals | Yes | -| JS String Builtins | Yes | -| Relaxed SIMD | Yes | +| Proposal | >= Phase 4 | +| ------------------------------------------- | ---------- | +| Branch Hinting | Yes | +| Custom Annotation Syntax in the Text Format | Yes | +| Exception handling | Yes | +| Import/Export of Mutable Globals | Yes | +| JS String Builtins | Yes | +| Relaxed SIMD | Yes | ## On-by-default WASI Proposals -| Proposal | Phase 4 | Compilation Option | -| -------- | ------- | ------------------ | +| Proposal | >= Phase 4 | Compilation Option | +| -------- | ---------- | ------------------ | ## Off-by-default WASI Proposals -| Proposal | Phase 4 | Compilation Option | -| -------------------------- | ------- | ----------------------------- | -| Machine Learning (wasi-nn) | No | `WAMR_BUILD_WASI_NN` | -| Threads | No | `WAMR_BUILD_LIB_WASI_THREADS` | +| Proposal | >= Phase 4 | Compilation Option | +| -------------------------- | ---------- | ----------------------------- | +| Machine Learning (wasi-nn) | No | `WAMR_BUILD_WASI_NN` | +| Threads | No | `WAMR_BUILD_LIB_WASI_THREADS` | ## Unimplemented WASI Proposals -| Proposal | Phase 4 | -| -------- | ------- | +| Proposal | >= Phase 4 | +| -------- | ---------- | ## WAMR features From 5201479b89f6346f70a208b02eaffbd5757f2870 Mon Sep 17 00:00:00 2001 From: "liang.he@intel.com" Date: Tue, 7 Jan 2025 11:49:09 +0000 Subject: [PATCH 6/6] Refactor Wasm proposals documentation for improved clarity and organization --- doc/stability_wasm_proposals.md | 56 +++++++++++++++++++-------------- 1 file changed, 32 insertions(+), 24 deletions(-) diff --git a/doc/stability_wasm_proposals.md b/doc/stability_wasm_proposals.md index 2c6f66039c..98617d15b1 100644 --- a/doc/stability_wasm_proposals.md +++ b/doc/stability_wasm_proposals.md @@ -12,34 +12,40 @@ Users can turn those features on or off by using compilation options. If a relev ## On-by-default Wasm Proposals -| Proposal | >= Phase 4 | Compilation Option | -| ------------------------------------- | ---------- | -------------------------- | -| Bulk memory operations | Yes | `WAMR_BUILD_BULK_MEMORY` | -| Extended Constant Expressions | Yes | N/A | -| Fixed-width SIMD[^1] | Yes | `WAMR_BUILD_SIMD` | -| Legacy Exception handling[^2] | Yes | `WAMR_BUILD_EXCE_HANDLING` | -| Multi-value | Yes | N/A | -| Non-trapping float-to-int conversions | Yes | N/A | -| Reference Types | Yes | `WAMR_BUILD_REF_TYPES` | -| Sign-extension operators | Yes | N/A | -| Thread | Yes | `WAMR_BUILD_SHARED_MEMORY` | -| WebAssembly C and C++ API | No | N/A | - -[^1]: llvm-jit and aot only -[^2]: interpreter only +| Proposal | >= Phase 4 | Compilation Option | +| ------------------------------------- | ---------- | ------------------------ | +| Bulk memory operations | Yes | `WAMR_BUILD_BULK_MEMORY` | +| Extended Constant Expressions | Yes | N/A | +| Fixed-width SIMD[^1] | Yes | `WAMR_BUILD_SIMD` | +| Multi-value | Yes | N/A | +| Non-trapping float-to-int conversions | Yes | N/A | +| Reference Types | Yes | `WAMR_BUILD_REF_TYPES` | +| Sign-extension operators | Yes | N/A | +| WebAssembly C and C++ API | No | N/A | + +[^1]: llvm-jit and aot only. ## Off-by-default Wasm Proposals -| Proposal | >= Phase 4 | Compilation Option | -| ------------------------- | ---------- | ------------------------- | -| Garbage collection | Yes | `WAMR_BUILD_GC` | -| Memory64 | Yes | `WAMR_BUILD_MEMORY64` | -| Multiple memories[^3] | Yes | `WAMR_BUILD_MULTI_MEMORY` | -| Reference-Typed Strings | No | `WAMR_BUILD_STRINGREF` | -| Tail call | Yes | `WAMR_BUILD_TAIL_CALL` | -| Typed Function References | Yes | `WAMR_BUILD_GC` | +| Proposal | >= Phase 4 | Compilation Option | +| ----------------------------- | ---------- | -------------------------- | +| Garbage collection | Yes | `WAMR_BUILD_GC` | +| Legacy Exception handling[^2] | No | `WAMR_BUILD_EXCE_HANDLING` | +| Memory64 | Yes | `WAMR_BUILD_MEMORY64` | +| Multiple memories[^3] | Yes | `WAMR_BUILD_MULTI_MEMORY` | +| Reference-Typed Strings | No | `WAMR_BUILD_STRINGREF` | +| Tail call | Yes | `WAMR_BUILD_TAIL_CALL` | +| Thread[^4] | Yes | `WAMR_BUILD_SHARED_MEMORY` | +| Typed Function References | Yes | `WAMR_BUILD_GC` | + +[^2]: + interpreter only. [a legacy version](https://github.com/WebAssembly/exception-handling/blob/main/proposals/exception-handling/legacy/Exceptions.md). + This proposal is currently also known as the "legacy proposal" and still + supported in the web, but can be deprecated in future and the use of + this proposal is discouraged. [^3]: interpreter only +[^4]: `WAMR_BUILD_LIB_PTHREAD` can also be used to enable ## Unimplemented Wasm Proposals @@ -47,11 +53,13 @@ Users can turn those features on or off by using compilation options. If a relev | ------------------------------------------- | ---------- | | Branch Hinting | Yes | | Custom Annotation Syntax in the Text Format | Yes | -| Exception handling | Yes | +| Exception handling[^5] | Yes | | Import/Export of Mutable Globals | Yes | | JS String Builtins | Yes | | Relaxed SIMD | Yes | +[^5]: [up-to-date version](https://github.com/WebAssembly/exception-handling/blob/main/proposals/exception-handling/Exceptions.md) + ## On-by-default WASI Proposals | Proposal | >= Phase 4 | Compilation Option |