-
Notifications
You must be signed in to change notification settings - Fork 173
Description
We briefly discussed this at the 7/7/2020 video meeting and decided to take the discussion to GitHub.
Currently the phases process recommends that toolchains implement proposals in phase 3 and requires that features be implemented by at least one toolchain in order to enter phase 4. There are a few issues with this requirement that might warrant changes to the process document.
-
The toolchain requirements are introduced too late in the process. Since WebAssembly is meant to be a compilation target, its design working well for toolchains is just as important as its design working well for engines. But the phase process is biased toward incorporating engine feedback over toolchain feedback. Entering phase 3 requires an engine implementation, but a toolchain implementation is not required until entering phase 4, when a proposal's momentum makes larger changes unpleasant. Concretely, @RossTate has suggested in Process requirement for sufficient demand proposals#68 that we add a phase 3 entry requirement that some user base has plans to use the proposal. Similar changes might be to require that some toolchain has started prototyping a use of the proposal or to require that some toolchain has sketched a design for how it will use the proposal.
-
It is unclear whether an entire proposal needs to be implemented by toolchains. For example, bulk memory recently reached phase 4 despite there being no known users of the table.fill instruction. Should the toolchain requirement have prevented that phase advancement? If not, should it be amended to prevent similar situations in the future?
-
It is unclear what constitutes a toolchain. For example, is it sufficient for Binaryen to support optimizing binaries that use a feature, even if no compilers produce it? (IMO, no). Is it sufficient for postprocessing tool like wasm-bindgen to insert uses of a feature even if the core compiler for the language does not use that feature? (IMO, yes). Should we clarify this to avoid confusion in the future?
What do folks think about these issues and potential changes?