Minutes, SG5
26 November 2018
Participants: Hans Boehm, Mike Spear, Michael Scott, Victor Luchangco,
Michael Wong
Michael Scott taking minutes.
Secretary rota: Maged Michael, Jens Maurer, Mike Spear, Michael Wong,
Hans Boehm, Victor Luchangco
Hans is now chairing the group, with thanks to Michael Wong for his past
service.
How often to meet?
Every 4 weeks, starting Jan. 7.
(Four weeks from now would be Christmas Eve.)
For what it's worth, that schedule will avoid PPoPP, NVMW, and ASPLOS.
Where are we?
No one has yet written anything up for "TM Lite".
Mike Spear "under water" until Dec. 7.
Remembering/clarifying where we are:
Tentative agreement to use atomic{...} syntax rather than executors
(pass-a-lambda).
What restrictions to put on the code in atomic blocks?
Victor: Herb would prefer something where "whether it's ok" is
self-evident -- prefer error messages to performance anomalies.
Michael Scott: can always extend later.
Mike Spear: forbid bad things, or make behavior undefined?
Victor: forbidding is better, if we can.
Hans: undefined is more typical C++.
Mike Spear: want life to be simpler for the implementor.
General agreement: undefined (compiler can of course do more).
Michael Scott: what _is_ allowed in an atomic block?
Victor:
ordinary reads & writes
ordinary control flow
no volatiles or atomics
no exceptions
calls to known-to-be-safe functions -- definitely including those of
the current compilation unit (as in constexpr)
Library functions?
Victor: not yet?
General agreement: whatever constexpr allows
Michael Scott: that is, if constexpr says you can use foo() if you
pass constant arguments, we would say you can use foo() (w/out
necessarily passing constants)
Hans: that probably rules out vectors.
Hans: note that constexpr is a moving target. People are looking at
vectors and even exceptions.
Semantics should be (a slightly less flexible version of) what we have
for atomic_noexcept in the current tech. spec.
Hans: except nonconforming blocks will have undefined behavior, so the
compiler is not required to check conformance.
Want to admit stupid global lock implementation.
Looks like we're in enough agreement that somebody should be writing.
Michael Wong created a Google Doc for this. We should edit it as time
is available.
Mike Spear's older lambda-based proposal (for reference):
Skeleton for a new atomic block proposal (edit this one):
Next meeting: 7 Jan., noon PST.