@@ -8,63 +8,65 @@ AssemblyScript both aims to be a thin and efficient layer on top of WebAssembly,
88
99## WebAssembly features
1010
11- Some crucial language features rely on [ future WebAssembly functionality] ( https://github.com/WebAssembly/proposals ) to be efficient . The following table aims to give an overview from a WebAssembly perspective:
11+ Some language features rely on [ future WebAssembly functionality] ( https://github.com/WebAssembly/proposals ) to become viable . The following table aims to give an overview from a WebAssembly perspective:
1212
13- | WebAssembly spec | Engines | AssemblyScript (flag) | Perspective
14- |-----------------------------------------|-------------------------------------|-------------------------|------------------------------------
13+ | WebAssembly spec | Engines | AssemblyScript (flag) | Perspective
14+ |-----------------------------------------|--------------------------------------- |-------------------------|------------------------------------
1515| ✔️ ** Finished proposal**
16- | [ Import/export of mutable globals] | <Ch /> <Fi /> <Sa /> <No /> < Wt /> <Ws /> | ✔️ | <Badge text =" good " type =" tip " /> Interop
17- | [ JS BigInt integration] <sup >1</sup > | <Ch /> <Fi /> <Sa /> <No /> < Wt /> < Ws /> | ✔️ | <Badge text =" good " type =" tip " /> Interop
18- | [ Sign-extension operations] | <Ch /> <Fi /> <Sa /> <No /> < Wt /> <Ws /> | ✔️ | <Badge text =" good " type =" tip " /> Efficiency
19- | [ Non-trapping float-to-int conversions] | <Ch /> <Fi /> <Sa /> <No /> < Wt /> <Ws /> | ✔️ | <Badge text =" good " type =" tip " /> Efficiency
20- | [ Bulk memory operations] | <Ch /> <Fi /> <Sa /> <No /> < Wt /> <Ws /> | ✔️ | <Badge text =" good " type =" tip " /> Efficiency
21- | [ Fixed-width SIMD] | <Ch /> <Fi /> <Sa /> <No /> < Wt /> <Ws /> | 🏁 ` simd ` | <Badge text =" good " type =" tip " /> Feature
22- | [ Reference types] | <Ch /> <Fi /> <Sa /> <No /> < Wt /> <Ws /> | 🔨 ` reference-types ` | <Badge text =" good " type =" tip " /> Interop
23- | [ Multi-value] | <Ch /> <Fi /> <Sa /> <No /> < Wt /> <Ws /> | | <Badge text =" good " type =" tip " /> Feature
16+ | [ Import/export of mutable globals] | <Ch /> <Fi /> <Sa /> <No /> ⁞ < Ws /> <Wt /> | ✔️ | <Badge text =" good " type =" tip " /> Interop
17+ | [ JS BigInt integration] <sup >1</sup > | <Ch /> <Fi /> <Sa /> <No /> | ✔️ | <Badge text =" good " type =" tip " /> Interop
18+ | [ Sign-extension operations] | <Ch /> <Fi /> <Sa /> <No /> ⁞ < Ws /> <Wt /> | ✔️ | <Badge text =" good " type =" tip " /> Efficiency
19+ | [ Non-trapping float-to-int conversions] | <Ch /> <Fi /> <Sa /> <No /> ⁞ < Ws /> <Wt /> | ✔️ | <Badge text =" good " type =" tip " /> Efficiency
20+ | [ Bulk memory operations] | <Ch /> <Fi /> <Sa /> <No /> ⁞ < Ws /> <Wt /> | ✔️ | <Badge text =" good " type =" tip " /> Efficiency
21+ | [ Fixed-width SIMD] | <Ch /> <Fi /> <Sa /> <No /> ⁞ < Ws /> <Wt /> | 🏁 ` simd ` | <Badge text =" good " type =" tip " /> Feature
22+ | [ Reference types] | <Ch /> <Fi /> <Sa /> <No /> ⁞ < Ws /> <Wt /> | 🔨 ` reference-types ` | <Badge text =" good " type =" tip " /> Interop
23+ | [ Multi-value] | <Ch /> <Fi /> <Sa /> <No /> ⁞ < Ws /> <Wt /> | | <Badge text =" good " type =" tip " /> Feature
2424||
2525| 🏁 ** Standardize the feature**
26- | [ Extended constant expressions] | | 🔨 | <Badge text =" good " type =" tip " /> Efficiency
27- | [ Tail call] | | | <Badge text =" good " type =" tip " /> Efficiency
26+ | [ Extended constant expressions] | | 🔨 | <Badge text =" good " type =" tip " /> Efficiency
27+ | [ Tail call] | | | <Badge text =" good " type =" tip " /> Efficiency
2828||
2929| 🔨 ** Implementation phase**
30- | [ Relaxed SIMD] | | 🏁 ` relaxed-simd ` | <Badge text =" good " type =" tip " /> Feature
31- | [ Exception handling] | <Ch /> <Fi /> <Sa /> <No /> < Xx /> < Xx /> | 🔨 ` exception-handling ` | <Badge text =" good " type =" tip " /> Feature
32- | [ Typed function references] | | 🔨 ` gc ` | <Badge text =" good " type =" tip " /> Feature
33- | [ Garbage collection] | | 🔨 ` gc ` | <Badge text =" good " type =" tip " /> Efficiency / Interop
34- | [ Multiple memories] | | 🔨 | <Badge text =" good " type =" tip " /> Feature
35- | [ Branch hinting] | | | <Badge text =" good " type =" tip " /> Efficiency
36- | [ JS Promise integration] | | | <Badge text =" uncertain " type =" warning " />
37- | [ Threads] | <Ch /> <Fi /> <Sa /> <No /> < Xx /> < Xx /> | 🔨 ` threads ` | <Badge text =" uncertain " type =" warning " />
38- | [ Memory64] | | 🔨 | <Badge text =" uncertain " type =" warning " />
30+ | [ Relaxed SIMD] | | 🏁 ` relaxed-simd ` | <Badge text =" good " type =" tip " /> Feature
31+ | [ Exception handling] | <Ch /> <Fi /> <Sa /> <No /> | 🔨 ` exception-handling ` | <Badge text =" good " type =" tip " /> Feature
32+ | [ Typed function references] | | 🔨 ` gc ` | <Badge text =" good " type =" tip " /> Feature
33+ | [ Garbage collection] | | 🔨 ` gc ` | <Badge text =" good " type =" tip " /> Efficiency / Interop
34+ | [ Multiple memories] | | 🔨 | <Badge text =" good " type =" tip " /> Feature
35+ | [ Branch hinting] | | | <Badge text =" good " type =" tip " /> Efficiency
36+ | [ JS Promise integration] | | | <Badge text =" uncertain " type =" warning " />
37+ | [ Threads] | <Ch /> <Fi /> <Sa /> <No /> | 🔨 ` threads ` | <Badge text =" uncertain " type =" warning " />
38+ | [ Memory64] | | 🔨 | <Badge text =" uncertain " type =" warning " />
3939||
4040| 📖 ** Spec text available**
41- | [ ECMAScript module integration] | | | <Badge text =" good " type =" tip " /> Interop
42- | [ Instrument and tracing] | | | <Badge text =" good " type =" tip " /> Debugging
41+ | [ ECMAScript module integration] | | | <Badge text =" good " type =" tip " /> Interop
42+ | [ Instrument and tracing] | | | <Badge text =" good " type =" tip " /> Debugging
4343||
4444| 💡 ** Feature proposal**
45- | [ Reference-typed strings] | | 🔨 ` stringref ` | <Badge text =" good " type =" tip " /> Interop
46- | [ Extended name section] | | 🔨 | <Badge text =" good " type =" tip " /> Debugging
47- | [ JS customization for GC] | | | <Badge text =" good " type =" tip " /> Interop
48- | [ Type imports] | | | <Badge text =" good " type =" tip " /> Interop
49- | [ Flexible vectors] | | | <Badge text =" good " type =" tip " /> Feature
50- | [ Constant time] | | | <Badge text =" good " type =" tip " /> Security
51- | [ Stack switching] | | | <Badge text =" uncertain " type =" warning " />
52- | [ Call tags] | | | <Badge text =" uncertain " type =" warning " />
53- | [ Memory control] | | | <Badge text =" uncertain " type =" warning " />
54- | [ Profiles] | | | <Badge text =" uncertain " type =" warning " />
55- | [ Component model] <sup >2</sup > | | | <Badge text =" harmful " type =" error " />
45+ | [ Reference-typed strings] | | 🔨 ` stringref ` | <Badge text =" good " type =" tip " /> Interop
46+ | [ Extended name section] | | 🔨 | <Badge text =" good " type =" tip " /> Debugging
47+ | [ JS customization for GC] | | | <Badge text =" good " type =" tip " /> Interop
48+ | [ Type imports] | | | <Badge text =" good " type =" tip " /> Interop
49+ | [ Flexible vectors] | | | <Badge text =" good " type =" tip " /> Feature
50+ | [ Constant time] | | | <Badge text =" good " type =" tip " /> Security
51+ | [ Stack switching] | | | <Badge text =" uncertain " type =" warning " />
52+ | [ Call tags] | | | <Badge text =" uncertain " type =" warning " />
53+ | [ Memory control] | | | <Badge text =" uncertain " type =" warning " />
54+ | [ Profiles] | | | <Badge text =" uncertain " type =" warning " />
55+ | [ Component model] <sup >2</sup > | | | <Badge text =" harmful " type =" error " />
5656||
5757| ❔ ** Quasi proposal**
58- | [ WASI] <sup >2</sup > | <Xx /> <Xx /> <Xx /> <Xx /> < Wt /> <Ws /> | | <Badge text =" harmful " type =" error " />
58+ | [ WASI] <sup >2</sup > | <Xx /> <Xx /> <Xx /> <Xx /> ⁞ < Ws /> <Wt /> | | <Badge text =" harmful " type =" error " />
5959
60+ Web:   ;
6061<Ch /> <a href =" https://www.chromestatus.com/features#webassembly " target =" _blank " rel =" noopener " >Chrome</a >   ;
6162<Fi /> <a href =" https://platform-status.mozilla.org " target =" _blank " rel =" noopener " >Firefox</a >   ;
6263<Sa /> <a href =" https://webkit.org/status/ " target =" _blank " rel =" noopener " >Safari</a >   ;
63- <No /> <a href =" https://github.com/nodejs/node/blob/master/CHANGELOG.md " target =" _blank " rel =" noopener " >Node.js</a >   ;
64+ <No /> <a href =" https://github.com/nodejs/node/blob/master/CHANGELOG.md " target =" _blank " rel =" noopener " >Node.js</a >   ; ⁞   ;
65+ Non-Web:   ;
66+ <Ws /> <a href =" https://docs.wasmer.io/ecosystem/wasmer/wasmer-features#support-of-features-by-compiler " target =" _blank " rel =" noopener " >Wasmer</a >   ;
6467<Wt /> <a href =" https://docs.wasmtime.dev/stability-wasm-proposals-support.html " target =" _blank " rel =" noopener " >Wasmtime</a >   ;
65- <Ws /> <a href =" https://docs.wasmer.io/ecosystem/wasmer/wasmer-features#support-of-features-by-compiler " target =" _blank " rel =" noopener " >Wasmer</a >   ; (<sup >1</sup > native support in non-JS hosts)
6668
67- <sup >2</sup > See our detailed [ standards objections] ( ./standards-objections.md ) regarding WASI and the Component Model.< br />
69+ <sup >1</ sup > Supported otherwise by Non-Web hosts. & nbsp ; < sup > 2</sup > See our detailed [ standards objections] ( ./standards-objections.md ) .
6870
6971| Perspective | Description
7072|--------------------------------------|-------------
0 commit comments