Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add more data to the feature table #292

Merged
merged 4 commits into from
Jan 11, 2023
Merged

Conversation

andylizi
Copy link
Contributor

@andylizi andylizi commented Oct 5, 2022

I've collected a bunch of version data for the feature table.

preview

Wasmtime

Feature Version Source
multi-value 0.17 bytecodealliance/wasmtime#1667
bulk-memory 0.20 #193
reference-types 0.20 #193
simd 0.33 bytecodealliance/wasmtime#3601

Wasmer

Feature Version Source
mutable-globals 0.7 wasmerio/wasmer#623
bulk-memory 1.0 wasmerio/wasmer@b3fbf79
multi-value 1.0 wasmerio/wasmer@bd2b648
reference-types 2.0 wasmerio/wasmer@92af25a
simd 2.0 wasmerio/wasmer@3d9656d

I'm unable to find the versions for some old proposals like sign extensions and saturating f2i conversions. The relevant logic in both wasmer and wasmtime was refactored a lot since then, I'm unable to trace it back enough to confidently say which versions were they first introduced.

V8

Feature Version Source
mutable-globals 6.9 v8/v8@7ce76fb
sign-extension 6.9 v8/v8@66f3e8f
bulk-memory 7.5 v8/v8@4e57789
sat-f2i-conversions 7.5 v8/v8@efe01b8
multi-value 8.6 v8/v8@65d28a7
simd 9.1 v8/v8@10587a2
threads 9.1 v8/v8@be9ff65
exception-handling 9.5 v8/v8@906459f
reference-types 9.6 v8/v8@c96864e

Node.js

v8 -> node version data from https://nodejs.org/en/download/releases/.

Feature V8 Version Node Version
mutable-globals 6.9 12.0
sign-extension 6.9 12.0
bulk-memory 7.5 12.5
sat-f2i-conversions 7.5 12.5
multi-value 8.6 15.0
simd 9.1 16.4
threads 9.1 16.4
exception-handling 9.5 17.0
reference-types 9.6 17.2

Deno

v8 -> rusty_v8 -> deno version data from release notes and (sometimes) git history.

Feature V8 Version rusty_v8 Version Deno version Source
mutable-globals 6.9 N/A 0.1.0 https://github.com/denoland/deno/blob/v0.1.0/gclient_config.py#L2
sign-extension 6.9 N/A 0.1.0 https://github.com/denoland/deno/blob/v0.1.0/gclient_config.py#L2
bulk-memory 7.5 - 0.4.0 https://github.com/denoland/deno/blob/main/Releases.md#v040--20190503
sat-f2i-conversions 7.5 - 0.4.0 https://github.com/denoland/deno/blob/main/Releases.md#v040--20190503
multi-value 8.6 0.8.0 1.3.2 https://github.com/denoland/deno/blob/main/Releases.md#132--20200829
simd 9.1 0.22.0 1.9.0 denoland/deno#10152
threads 9.1 0.22.0 1.9.0 denoland/deno#10152
exception-handling 9.5 0.33.0 1.16.0 denoland/deno#12564
reference-types 9.6 0.33.0 1.16.0 denoland/deno#12564

I've also changed the tooltips for v8 flags. Before, we would need to write three tooltips for the three "wrappers" of v8, for every feature flag of v8, like so:

  • Requires flag --experimental-wasm-memory64 (node)
  • Requires flag --v8-flags="--experimental-wasm-memory64" (deno)
  • Requires flag --js-flags=--experimental-wasm-memory64 (chrome)
  • Requires flag --experimental-wasm-extended-const
  • Requires flag --v8-flags="--experimental-wasm-extended-const"
  • Requires flag --js-flags=--experimental-wasm-extended-const
  • ...

This feels quite redundant to me, so I changed them to:

  • Requires corresponding v8 flag (node)
  • Requires corresponding v8 flag (--v8-flags="...") (deno)
  • Requires corresponding v8 flag (--js-flags="...") (chrome)

By the way, is the Module Linking proposal still relevant today? From what I can tell, it was superseded by the Component Model. Should I replaced it with data from component model?

@RReverser
Copy link
Member

Looks like it's still up to me to review those 😅 Can you please rebase to fix the conflict and I'll merge? (I can fix it myself but not sure which max-width is correct)

@RReverser
Copy link
Member

Resolved to 1080px, hope that's ok.

@RReverser RReverser merged commit 577abd3 into WebAssembly:main Jan 11, 2023
@RReverser
Copy link
Member

Wait, I only just noticed that this removed information about specific V8 flags. I don't agree it was redundant as now it only conveys "how to pass a flag to the engine" instead of the more useful "which flag to pass to the engine for this feature" and users have to go hunting for actual flags in engine docs.

Also Wasmtime doesn't support threads yet despite having a flag - they're simply not part of the WASI yet. (which is actually true for Wasmer too, so I'll remove it)

I restored those flags on the main.

@andylizi andylizi deleted the roadmap-data branch January 12, 2023 16:23
@dschuff
Copy link
Member

dschuff commented Jan 12, 2023

Wow this is a great update, thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants