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: JJ Allen, Gertraud Unterreitmeier (Gertraud), Joel Bernstein (joel), Sags, Ed Freyfogle, Michael Jemmeson (michael), Neil Hemingway (neilh), Gabi Hack (gabimuc), Martin Evans (mjevans), Simon Williams,