Skip to content

Commit c73ef7e

Browse files
authored
Update CG-05-06.md (#1816)
1 parent 86956af commit c73ef7e

File tree

1 file changed

+82
-2
lines changed

1 file changed

+82
-2
lines changed

main/2025/CG-05-06.md

+82-2
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,90 @@ No registration is required for VC meetings. The meeting is open to CG members o
2424

2525
## Meeting Notes
2626

27-
To be filled in after the meeting.
28-
2927
### Attendees
3028

29+
- Thomas Lively
30+
- Derek Schuff
31+
- Robin Freyler
32+
- Nick Fitzgerald
33+
- Erik Rose
34+
- Ricky Vetter
35+
- Bailey Hayes
36+
- Paolo Severini
37+
- Shravan Narayan
38+
- Chris Fallin
39+
- Michael Ficarra
40+
- Andreas Rossberg
41+
- Adam Bratschi-Kaye
42+
- Yan Chen
43+
- Manos Koukoutos
44+
- Emanuel Ziegler
45+
- Johnnie Birch
46+
- Yury Delendik
47+
- Alex Crichton
48+
- Rahul Chaphalkar
49+
- David Degazio
50+
- Heejin Ahn
51+
- Jakob Kummerow
52+
- Paul Osborne
53+
- Sergey Rubanov
54+
- Oscar Spencer
55+
- Chris Woods
56+
- Zalim Bashorov
57+
- Colin Murphy
58+
- Nuno Pereira
59+
- Andrew Brown
60+
- Brendan Dahl
61+
- Sean Jensen-Grey
62+
- Sehyo Chang
63+
- Ben Visness
64+
- Yosh Wuyts
65+
- Keith Winstein
66+
- Julien Pages
67+
3168
### Proposals and discussions
3269

70+
#### Announcement: [Registration](https://github.com/WebAssembly/meetings/blob/main/main/2025/CG-10.md#registration) open for October CG meeting in Munich
71+
72+
TL: CG meeting will be October 28 and 29, research day October 30 at the Google office in Munich, Germany. Registration is open. It's a long way away, but please submit PRs adding agenda items at any point.
73+
74+
#### [Pre-proposal: More array constructors](https://github.com/WebAssembly/design/issues/1561), potential vote for phase 1 (Nick Fitzgerald, 20 minutes)
75+
76+
NF presenting [slides](https://docs.google.com/presentation/d/13kVf0Ilctr1iy5CnUuwANafPN1vtrbhDS8tGGV6uiIc/edit#slide=id.p)
77+
78+
JK (chat): is there a use case for `array.new_table` or is that just suggested "for completeness"?
79+
80+
NF: I guess completeness. You can imagine you’d want to have it if you aren't using traditional memories; tables are like memories for references.
81+
82+
BV (chat): Funny overlap there with array.new_elem, but I think it's probably reasonable. (Also, I have yet to see anyone actually use array.new_elem.)
83+
84+
AR: Can you go back to the motivation? I think it’s totally fine to add these instructions, they are natural to have. But whether they really give you what it says here, I have some doubts. In particular I’m not sure the zero copy thing will work in practice. Languages will continue to use mutable representation internally, because they have so many ways to construct things that are immutable in the source language. They will probably still have to copy in e.g. the component model. Maybe even twice.
85+
86+
NF: I am prototyping GC support in the CM right now. My goal is to support where the wasm program chooses the representation they pass, so they can choose mutable or immutable, where mutable forces the copy and we’ll try to minimize it. If they can work with things in an immutable way we can avoid them. But yes, in the limit there will be a copy if they can’t make it immutable. And that’s ok, its trying to widen the use cases that can get it.
87+
88+
AR: I’m fine with that, basically just wanted to express that I’m skeptical that this will be a common case. Most languages I don't think will be able to use immutable arrays. It doesn’t invalidate the proposal, but I think it will be more of a niche case. Similarly with the optimization opportunities, do we have numbers that back that up, that this makes a difference in practice?
89+
90+
NF: I don't have numbers for the GC barrier stuff, but I know we got as large as a 10% improvement on some benchmarks when we added an alias analysis in Cranelift.
91+
92+
AR: Again the same kind of thing applies, probably unless we actually add something like freeze, most languages won’t be able to use that in their runtime; for the same reason that optimization opportunity might not materialize in practice. It would be interesting to see. So mostly this is just so people won’t think this will make a huge performance difference. But it’s still nice because of expressivity. It was a little weird before with the asymmetry.
93+
We could also think, why can’t you read from a data segment with instructions. But I don't want to go there right now.
94+
95+
An observation: the super-general instruction you talked about on your last slide- there is theory around this. An "unfold" operator. But usually this only works with closures and a lot of polymorphism. Probably won't fly in WebAssembly.
96+
97+
BV: I think all of the expressivity reasons make sense to me. I think it would be good to move forward with this in general. One remark, I think the matrix we are building up of indexed collections of refs or bytes that can maybe/maybe not grow, is getting a little crazy. It would be interesting to think about how this could be simplified going forward. But it’s funny that arrays have some properties of memories and some of tables, and we are trying to plug these differences.
98+
99+
AR: That's a good point. I expect that at some point we will have copy operators between memories and arrays and tables and arrays. I don't necessarily agree that it's weird. We always had both tables and memories.
100+
101+
TL: have you thought about whether any of these instructions should be constant expressions?
102+
103+
NF: no; off the cuff I would think that all of them could be. Maybe not new_array? I guess you could global.get another array and copy. So, why not?
104+
105+
TL: any reason they shouldn’t be? AR?
106+
107+
AR: not that I know of. new_elem isn't constant right now for section ordering reasons. That would be the main constraint there and then we are back to the question of should we relax section ordering.
108+
109+
TL: no more questions. I think we can do a unanimous consensus vote for phase one as in the slide. If there are objections, please speak up now.
110+
111+
No objections, Proposal moves to phase 1.
112+
33113
### Closure

0 commit comments

Comments
 (0)