Skip to content

Latest commit

 

History

History
220 lines (133 loc) · 6.53 KB

CG-11-13.md

File metadata and controls

220 lines (133 loc) · 6.53 KB

WebAssembly logo

Agenda for the November 13 video call of WebAssembly's Community Group

  • Where: zoom.us
  • When: November 13, 5pm-6pm UTC (November 13, 9am-10am Pacific Time)
  • Location: link on calendar invite
  • Contact:

Registration

None required if you've attended before. Email Ben Smith to sign up if it's your first time. The meeting is open to CG members only.

Logistics

The meeting will be on a zoom.us video conference. Installation is required, see the calendar invite.

Agenda items

  1. Opening, welcome and roll call
    1. Opening of the meeting
    2. Introduction of attendees
  2. Find volunteers for note taking (acting chair to volunteer)
  3. Adoption of the agenda
  4. Proposals and discussions
    1. Review of action items from prior meeting.
    2. Rename memory.drop and table.drop
    3. Revisiting the edge-case semantics of wake
  5. Closure

Agenda items for future meetings

None

Schedule constraints

None

Meeting Notes

Opening, welcome and roll call

Opening of the meeting

Introduction of attendees

  • Adam Klein
  • Alex Crichton
  • Alon Zakai
  • Arun Purushan
  • Ben Smith
  • Ben Titzer
  • Conrad Watt
  • Dan Gohman
  • Deepti Gandluri
  • Derek Schuff
  • Francis McCabe
  • Jacob Gravelle
  • Jay Phelps
  • Keith Miller
  • Lars Hansen
  • Luke Wagner
  • Michael Holman
  • Mike Rourke
  • Pat Hickey
  • Richard Winterton
  • Sam Clegg
  • Sergey Rubanov
  • Sven Sauleau
  • Thomas Lively
  • Wouter Van Oortmersson
  • Yury Delendik

Find volunteers for note taking (acting chair to volunteer)

Adoption of the agenda

Lars seconds

Proposals and discussions

Review of action items from prior meeting.

JP: I like drop_segment. It keeps it under the same table label.

AR: Bikeshedding but I would call it data.drop and elem.drop or table.drop_elem memory.drop_data. No strong preference

LW: Nice symmetry with data and elem, those are the things you’re dropping.

BS: [Trying to find consensus]

JP: Would like it to stay under table if it affects tables.

AR: But it doesn’t.

BT: I had another bikeshedding discussion. Dropping passive/active and renaming to autoload for active.

AR: What’s the opposite called?

BT: Absence.

BS: Yeah active/passive is not great, but else would we call it. Don’t like noautoload.

LW: The text format can have “auto” and nothing otherwise. Or maybe use lack of init_expr as passive.

LH: Things are becoming ambiguous in the text format already with multiple tables, I don’t think we should push our luck.

BS: The default now is active, so you want to keyword for passive.

BS: Seems like there’s not a lot of interest in bikeshedding, let’s follow up on GH issues.

[Conrad presenting slides] https://drive.google.com/file/d/1h4p5ZJoI2O38SZPu0pMoJTdsOxHDBMv0/view?usp=sharing

AR: This is not just for the spec semantics. It removes an edge case. In realistic cases you can UINT32_MAX. In unrealistic cases you shouldn’t use anyway, because it would trap anyway. There’s no benefit from the current case split, so we should simplify.

BT: How do you do this if you want to wake > 232 with these new semantics? Wake in a loop.

CW: Current semantics don’t cover this either.

BT: You could encode this as 31-bit int with another bit for “more waiters”

LH: You can already do this by adding a “num waiters” instruction.

CW: This is an unrealistic case, linux, windows, etc.

LH: This isn’t just OS threads, also asyncWait.

LW: Is it possible to have wait trap instead of wake?

CW: Would we say that the max number of waiters is 232 then?

That implies we that we specify that we can never create more the 232 waiters.

LH: There’s a poor interaction with JS -- they’d have to agree to this limit.

LW: Engine could just do it.

LW: You probably wouldn’t have made 231 waiters, and …

LH: Trapping is poor semantics.

LW: We already have to trap on grow.

LH: grow is single-threaded

LW: memory.grow is multi threaded though.

CW: Whatever we need is going to require more instructions.

Can we use the unsigned semantics given that we’ll have to add more instructions anyway.

BT: The semantics aren’t quite right, don’t want it to be a loop for “all”

[Discussion about resource limits]

LW: table.grow has to stop before the length fits in the i32

AR: Now that you mention it, there is weirdness with table.size, it’s 32-bits which is 1 more than you can index.

BT: You should be able to index the last one, oh you can’t have a full 4G table.

TL: Why don’t we have wake_all and doesn’t return how many it woke.

LH: It’s a ridiculous corner case, and nobody likes any of the solutions.

BS: In the past we punted on these decisions by adding traps. Maybe we should do the same as LW mentioned.

CW: So it sounds like semantics are preventing > 232 waiters, and using unsigned for wake.

BS: Any issue for TC39 that we’re introducing this limit?

AK: This doesn’t seem like an issue for TC39, there are many limits like this already in the spec.

Poll: trap wait > 232 and unsigned semantics.

SF F N A SA
11 6 3 0 0

JP: bikeshedding wait vs notify.

CW: We’re not doing the same as JS, wait takes nanoseconds in wasm, JS uses a float. So it’s different.

AR: I like wake/wait.

JP: I ran into the confusion, in a conference talk and 1-1. It’s easy to misunderstand. Nice to have a different name to have it different from JS, not a big concern for me. Notify is easier.

BT: I’ve never seen wake used before, always seen notify.

LH: Came from the futex interface in linux.

[discussion about TC39 history here]

LW: Oh, so JS renamed it to notify?

BS: Yes, they did it after all browsers unshipped because of spectre.

LW: So it has the benefit of being in alignment with JS and clarity when speaking.

Poll: Rename atomics.wake to atomics.notify

SF F N A SA
0 15 5 2 0

BS: Two people against, do you want to say anything about why?

AR: Already mentioned before (like wait/wake pairing, and no reason to follow JS)

MR: Wasm is it’s own language so it doesn’t need to follow JS.

Closure