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

Update roadmap with feature support table & links #164

Merged
merged 6 commits into from
Jun 17, 2020
Merged

Conversation

RReverser
Copy link
Member

Update roadmap page to describe current status of things, links to the standardization process and current list of proposals, as well as a caniuse-like table for implemented features across popular engines.

Update roadmap page to describe current status of things, links to the standardization process and current list of proposals, as well as a caniuse-like table for implemented features across popular engines.
@RReverser RReverser requested review from tschneidereit and binji June 9, 2020 01:28
features.json Outdated Show resolved Hide resolved
"url": "https://www.google.com/chrome/",
"logo": "/images/chrome.svg",
"features": {
"bigInt": "#enable-experimental-webassembly-features",
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is useful, but I'm worried it will get out of date too. I guess it doesn't change that often, though.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Well that's the point of caniuse-like table - to show feature support across engines. Indeed, it will require constant maintenance, but it's also currently the only way to find out which Wasm features are supported in chosen browsers and so on.

Copy link
Member

@tschneidereit tschneidereit Jun 9, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Indeed, it will require constant maintenance, but it's also currently the only way to find out which Wasm features are supported in chosen browsers and so on.

I do agree that this is useful to have, but I share @binji's worries about it becoming outdated quickly. Can you share more information on your plans for keeping it up to date? (Case in point, in Wasmtime we recently enabled multi-value by default, finished implementing bulk memory, and are actively working on reference types.)

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just like on caniuse.com, MDN or feature tables in https://v8.dev/features, I expect that this will be updated by website maintainers or engine maintainers relatively quickly after features are implemented. All of these websites share similar concerns, but on practice delay has never been too big thanks to community contributions.

I'm happy to update this table (admittedly, I wrote this JSON about a ~month ago and only made a PR now) with new Wasmtime features.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just like on caniuse.com, MDN or feature tables in https://v8.dev/features, I expect that this will be updated by website maintainers or engine maintainers relatively quickly after features are implemented.

I've seen this go wrong a good number of times, so I'm not sure this is a valid assumption to make. Would it make sense to bring this up in the CG and ensure that there's some amount of commitment from enough of the relevant implementers to really do this before landing this?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is the risk scenario here? In my perspective, tables like this are useful for development to know when you can compile with a specific feature or when you need to ship a polyfill / a version that doesn't rely on certain new feature.

Even if tables gets outdated, worst case is a false negative, which means that someone unnecessarily ships a polyfill to the engine that has a native support now, which might be suboptimal, but not critical by any means.

What matters / is the goal here is the best-case scenario where someone can ship a more optimised version (e.g. using SIMD or threads or native integer conversion ops) to engines that definitely support it, and for that scenario even an outdated table is better than nothing (what we have right now).


All in all, I'm commited to keeping this reasonably up-to-date, but I don't see delays as a critical problem for the original goal which is unblocking developers in using / testing new features on "definitely supported" platforms.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed, it's probably better to have out-of-date information than to have no information here. Maybe as a compromise we can include version numbers for the tools? Or even simpler, we could include a "last updated" mention.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"Last updated" sounds like a good idea, yeah.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've updated the PR with version numbers for each engine so that it's immediately clear what version the table was tested against and reflects; please see a screenshot below and let me know what you think.

roadmap.md Outdated Show resolved Hide resolved
@binji
Copy link
Member

binji commented Jun 9, 2020

Can you upload a screenshot of the layout? Or is there a way to see it live?

@RReverser
Copy link
Member Author

Can you upload a screenshot of the layout? Or is there a way to see it live?

Right, aside from building locally, I don't think there is. Here:

image

RReverser added 4 commits June 9, 2020 14:26
 - Use table caption, thead and tbody.
 - Shorten versions of engines to meaningful parts.
@RReverser
Copy link
Member Author

RReverser commented Jun 11, 2020

I've updated the data and added tested version numbers to each engine, which hopefully will clear up any confusion:

image

@binji
Copy link
Member

binji commented Jun 11, 2020

Looks good to me! @tschneidereit what do you think?

@RReverser
Copy link
Member Author

@tschneidereit Ping. Does this sufficiently address your concerns so that we could merge it for now?

@RReverser
Copy link
Member Author

I think I'm going to proceed with this as the solution with version numbers hopefully addresses concerns above by making it clear which version of the engine the table reflects.

We can adjust the actual update workflow as we go, independently from the initial PR.

@RReverser RReverser merged commit ff4656c into master Jun 17, 2020
@RReverser RReverser deleted the features branch June 17, 2020 15:06
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