CG-01-17.md
February 14, 2023 · View on GitHub

Agenda for the January 17th video call of WebAssembly's Community Group
- Where: zoom.us
- When: January 17th, 5pm-6pm UTC (January 17th, 9am-10am Pacific Time)
- Location: link on calendar invite
Registration
None required if you've attended before. Send an email to the acting WebAssembly CG chair 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
- Opening, welcome and roll call
- Opening of the meeting
- Introduction of attendees
- Find volunteers for note taking (acting chair to volunteer)
- Proposals and discussions
- Tail calls proposal
- Poll to phase 4
- Tail calls proposal
- Closure
Agenda items for future meetings
None
Schedule constraints
None
Meeting Notes
Attendees
- Luke Wagner
- Yuri Iozzelli
- Plh@w3c
- Ben Titzer
- Yury Delendik
- Conrad Watt
- Slava Kuzmich
- Keith Winstein
- Jeff Charles
- Tom Tartarin
- Saul Cabrera
- Zalim Bashorov
- Paolo Severini
- Francis McCabe
- Nick Fitzgen
- Alex Chrichton
- Ryan Hunt
- Daniel Phillips
- Brendan Dahl
- Thomas Lively
- Ilya Rezvov
- Jakob Kummerow
- Andreas Rossberg
- Sam Lindley
- Sam Clegg
- Ashley Nelson
- Shoab Kamil
- Asumu Takikawa
- Jlbirch
- Manos Koukoutos
- Richard Winterton
- Dbezhetskov
- Sergey Rubanov
- Ioanna Dimitriou
- Kevin Moore
- Robin Freyler
- Thomas Trankler
Announcement
Eric Prud'hommeaux will nop longer be the team W3C contact for the Wasm CG/WG, plh@ who is on this call will be the team contact going forward. Welcome Philipe!
Discussions
Tail calls to phase 4
BT: Talking about an overview of the tail calls proposal
BT: Engines that implement it: V8, JSC, interpreter, this is the last requirement for Phsae 4. Formalism is updates, and toolchain has implemented.
JSC with the last implementation
CW: Are we going to need a follow-on with return_call_ref?
TL: Maybe we can include it in the GC proposal
AR: Func types proposal, it’s in the reference interpreter inn that repo, its implemented there and the spec is updated, bunaryen implements it, V8 implements it.
RH: How does LLVM use this right now?
TL: LLVM in LLVM IR, you can have calls that have must tail calls, they are required to whatever the target thinks the tail calls are. Otherwise the backend throws a fatal IR, so it’ll error out. There are also …, For C++ in particular the codegen for co-wait/co-yield, in clang produces must-tail calls, so clang will fail to compile down to tail calls
RH: Does that just do return call or return call indirect as well?
TL: Not sure, guess is yes, it can do tail call analysis and then use that not entirely sure.
AR: Regarding return call_ref, once we’ve landed this whenever we add a call instruction in the future, we can have a companion return call instruction - they should always come in pairs.
FM
AR: What interaction specifically?
FM: The wording in the tail calls doesn’t mention EH, and EH doesn’t mention this either, what happens if the last call in the try block is tail called?
AR: We have explicit instructions for tail calls, not a syntactic feature, being last doesn’t matter, but question - is a tail call allowed at all in a try block? Unless there are concrete difficulties with implementation we should allow it
FM: It won’t be caught by the handler in V8
AR: it looks like that would be correct, equivalent to a return followed by a call
FM, Ok, came across it, and wanted to highlight it.
CW: Remaining question: Does the wasm level semantics match what LLVM expects?
TL: No idea, guess is yes
CW: Exception handling should probably handle this, because this is going to phase 4 first.
AR: Unlikely that any practical codegen would need this, if they do the backend should somehow fix it up
BT: Should we do the poll then? Any other thoughts or concerns?
POLL
| SF | F | N | A | SA |
|---|---|---|---|---|
| 23 | 8 | 2 | 0 | 0 |
Only 10 years to get this through! 12, if you count JS. Tail calls to Phase 4! Congratulations to all involved.