Changelog of @hackage/sessions 2007.6.20

The most recent changes are at the top of this file.

2007-06-20

Lists no longer hold their own length. Instead I derive it as necessary. This has usefully simplified types all over the place. Removed NextOp as this was pretty much unnecessary, and also many contexts requiring ZeroOrMoreSteps on trival cases.

2007-06-19

Modified the OffersCell and ProcWrapper so that they reflect the return type of the SessionState. This works well, in that it solves the problem of offer being able to reflect the return type of the chosen branch, thus loop can use that information too. However, there still exists the fundamental limitation that all branches should have the same return type.

2007-06-18

Rewrote the looping asynchronous stuff. There were problems with the last idea which meant that at there was a global lock for the whole loop. That has been elimitated by using an explicit chain rather than a Chan. Also, some optimisations of the common case through the loop. So performance is pretty good, and with +RTS -N2 -C10 -RTS, I am seeing > 100% CPU load on a dual core box.

2007-06-17

Made sure loops were truely asynchronous. The problem here is that to do this takes more time and hurts performance. For the tightest loop (mkLoopS $ SendS IntS), this makes performance 2.5 times worse, which isn't surprising when you consider the change in the number of MVars accessed each time through the loop. The fix here was quite different to how I'd imagined it (and documented in the paper).

2007-06-14

Initial release. Cabalised and uploaded to Hackage.