Larry Wall wrote:
my hope is that we can delegate locking entirely to the innards of
the implementation and never mention it at all on the language level.
Hmm, sounds to me analogous to hoping that type inference will avoid the
need to expose type-annotations at the language level (synchronization
constraints can be seen as an extension the type system -- that is, the
formal theory that defines what it means for a program to be well behaved).
Even if it is possible to infer everything automagically, it is still
useful for the user to reinforce the inference with explicit, precise,
declarations: makes things faster, and avoids pathological corner cases.
Plus it catches errors. Which I guess is why perl6 provides a
user-visible explicit typing system.
Even if locking itself remains under-the-hood, the constraints that
imply the locking need to be user-visible. S03 says that a hyperoperator
is a promise that the operator is parallelizable; but that promise
implies that the author has taken care of any sync issues in the side
effects. It cannot simultaneously be both a promise that the code is
safe, and a demand that that compiler add locking to make it safe.