#094

Jul 5, 2020

Open Source

I made a new release of dejafu fixing an issue with the atomic restoration of masking state when an exception is thrown inside a restored mask.

This test case now always returns either Left ThreadKilled or Left UserInterrupt:

do
  var <- newEmptyMVar
  tId <- uninterruptibleMask $ \restore -> fork $ do
    result <- (Right <$> restore (throw UserInterrupt)) `E.catch` (pure . Left)
    putMVar var result
  killThread tId
  v <- takeMVar var
  pure (v :: Either AsyncException ())

Unlike before, when it would sometimes deadlock instead.

Work

This week we finished our discovery, so on the dev side of things we were finishing up all the in-progress work and reviewing our documentation. Next week we’ve got a lot of whole-team activities looking at the bigger picture of what we’re working on, before moving onto the next phase of prototyping.

The Plague

Things are starting to re-open, but I don’t expect it to have much of an impact on me.

Books

This week I read:

Miscellaneous

Turns out it’s pretty easy to make flapjacks. I should use this new knowledge carefully.