Introducing the dependency solver, a method for scheduling access to a shared resource
Talk about a dependency solver, which automatically schedules
iterative updates to a shared resource such that they do not conflict
with one another, and allows for parallelism where possible.
The shared resource is a table with multiple columns. Each update is
assumed to modify every row in the table, but only specific columns.
By requiring that clients need permissions to read/write to columns,
one can infer the correct ordering to schedule client requests on the
The approach of using rather fine-grained permissions also makes the
clients' intentions clearer than might otherwise be the case. This is
a common argument for static typing, and its merits are well exhibited
in Haskell programs.
Attended by: Ed Freyfogle, Neil Hemingway (neilh), Gabi Hack (gabimuc), Gertraud Unterreitmeier (Gertraud), Simon Williams, Sags, Joel Bernstein (joel), JJ Allen, Michael Jemmeson (michael), Martin Evans (mjevans),