[PEAK] Trellis 0.5b1 feature complete in SVN
Phillip J. Eby
pje at telecommunity.com
Sun Jul 29 16:20:16 EDT 2007
All of the previously-announced features, including coroutine-based
pseudothreads, and observable Dict/List/Set types, are now available
in Trellis SVN. You should also now be able to install it in binary
form using only:
easy_install svn://svn.eby-sarna.com/svnroot/Trellis
with all the dependencies being supplied from releases on the Cheeseshop.
The documentation isn't done yet, to say the least. I have some
stuff in progress on my machine, but it's not in Subversion yet. The
best way at the moment to see how the new features work is to look at
the mini-demos in Internals.txt.
The "List" type didn't turn out as well as I would have hoped for;
the standard list interface is far too expressive with things like
sort(), remove(), and reverse(), to be able to generate a meaningful
change log. So List objects just provide a 'changed' receiver
attribute that's True whenever the list changes. It's also not
efficient for maintaining very large lists, as it uses a
copy-on-write strategy to preserve Trellis time invariants (i.e., you
can only write to the future of an object).
Fortunately, the TrellisDB library will ultimately include a
list-like type that's a sorted, read-only view of a query set, and
will be able to give out some kind of simple change events, suitable
for updating say, a wx grid or table model.
Overall, the Trellis library is now a compelling replacement for the
portion of the old peak.events that was not devoted to timing, I/O,
OS signals, or Twisted. (Those features will be replaced later with
TrellisIO.) Indeed, with the new List/Set/Dict types, the Trellis
far exceeds the old peak.events in what kind of objects can be
observed, as well as the other major advances.
So, once TrellisIO is available, I'd like to deprecate the legacy
peak.events code, although I'm not sure how well this will work given
that peak.tools.supervisor and peak.running.process do not have
adequate test suites for direct migration to using the Trellis. (The
other parts of peak.running that use peak.events are small enough in
scope and sufficiently testable to allow for refactoring to Trellis
APIs, however.)
So, it's not clear to me how the main PEAK framework will move
forward. I suspect it may be necessary to create a
separately-installed "PEAK-Legacy" or "PEAK-Unsupported" distribution
to retain things that get dropped from the mainline core as we move forward.
More information about the PEAK
mailing list