I've opened a MCP on the Rust project for the addition of a new target which would correspond to components
@Alex Crichton we already had an MCP accepted for that
let me pull it back up
https://github.com/rust-lang/compiler-team/issues/594
Unless you're proposing it should actually be a tier-3 supported platform?
oh I had forgotten about this and didn't search well enough
lemme reread this
oh wow right that's a long zulip thread
the only thing it doesn't do is require outputting actual WASI packages - the proposal basically leaves that up to cargo-component
yeah so coming back to this in my opinion we should walk back the ambitions of this target and probably go through an MCP again
I should clarify all of this though and update with respect to that MCP
Chiefly I think that we should get the compiler output of wasm32-wasi-preview2
to be a component, not a core wasm module
That, and being tier 3 to start, is a pretty big difference from the prior and reflects some recent thinking about how it better enables an incremental implementation of the target
thanks for pointing this out though and apologies for forgetting about it!
Alex Crichton said:
Chiefly I think that we should get the compiler output of
wasm32-wasi-preview2
to be a component, not a core wasm module
strong agree with this, if we think this is practical
I do actually disagree that it should be a tier 3 target though
We had that discussion as part of accepting the MCP
let me rephrase the tier part, this should start as tier 3, get developed, and then move to tier 2 when we're ready
I'm wary of over-promising at the beginning when we're still figuring all this out
and e.g. want to open the path to incrementally implementing things
e.g. to produce a component the thinking is to use a custom linker, not wasm-ld
, which is a wrapper around wasm-ld
plus more component stuff
and we can't reasonably get that to a "perfect" state on day 1, so starting at tier 3 is hopefully going to give some runway to fix bugs and break things before getting to tier 2
the whole time though it should all be usable via -Zbuild-std
okay okay
I see that argument
I should go reread the dicsussion though to address some of those points
In the accepted proposal we basically made the case that tier 2 was fine, since it was mostly about maybe changing things in the stdlib / targeting a new version of wasi-libc
But crucially we weren't touching the backend or codegen
In your proposal you're explicitly saying that you do want to target the codegen bits, swapping out the linker
yeah if we envision an entirely new binary format output I think it may change the calculus there
yeah
Yeah, I think that's reasonable
ok cool I'll summarize all this in the Zulip thread and edit the proposal as well
one more thing
I think it would be wise that as part of the re-MCP, we make sure we get sign-off on acceptance criteria for when we can bump it to stage 2
To make sure that we can initiative the "bump to tier 2" process by pointing to something which was already accepted, rather than needing to re-engage with the process
makes sense yeah, but I'm not actually sure what that would entail? I wrote up some stuff under "Next Steps" but that's more target-specific rather than project policies, so I'm not sure if we'd want to add anything more there over what is already required of tier 2
oh okay, fair enough
I'll make sure to note this in the discussion though
I guess I'm coming at this from having put in significant work to get the MCP to be tier 2 lol
that "Next Steps" is intended to be a set of criteria for tier 2
So maybe I'm a little scarred going into this, being a bit wary of re-doing the entire discussion
no that's a good point and I want to learn from that heh
ok I think I've noted in the places with updates, but lemme know if I missed anything
or if you'd recommend making wording stronger anywhere or similar
Denys Zadorozhnyi has marked this topic as resolved.
Denys Zadorozhnyi has marked this topic as unresolved.
My understanding is that the binary version of components will change once the component model is accepted as stable, basically rendering all tooling incompatible over night - is this going to be part of 1.0?
I fear that until then, given enough popularity of preview2, everybody became used to the temporary version number - and it becomes the new de-facto binary standard.
You're right that the version number will change, and I'm told by Luke that this is the same transition that core wasm itself went through. The current vision is that the version number will change but no other changes will be made, so binary parsers can validate that either the spec-defined version is present or the version just-before stabilization. So in that sense everything won't break overnight, there will be a long period where existing parsers will accept both
Last updated: Dec 23 2024 at 13:07 UTC