Changelog for sessions-2007.7.15
The most recent changes are at the top of this file.
2007-07-15
A reviewer has pointed out that the ChoiceTests.hs module which is
necessary to use the Tests.hs file was missing. This is the only
change.
2007-06-20
Modified select so that it does not take the continuation: rather
than select Label (Proc nextFunc), I now support select Label >~>
nextFunc which is much better. offer, select and findOfferProc can
probably all be simplified.
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.