0.50 * THIS IS NOT COMPATIBLE with the old 0.2xxx series of the Graph module. Your scripts are likely to break. I did try to fashion a nice compatibility mode but there was no way to do that cleanly and to cover all the old oddities. You can try the compatibility mode but I suggest changing your code instead because the compat mode is not going to be carried over to the next releases of the module. * The main reason for introducing the incompatibilities was that the new Graph supports graphs of 'higher dimensions', and the assumptions made by the old module (most importantly that edges could only span two vertices) in effect made it impossible to extend the interfaces. * The most serious incompatibility is edges(): with the old way in list context it returned the vertices of the edges as a flat list. Now it returns a list of anonymous arrays that contain the vertices for each edge. * vertices() now returns the vertices in an undefined order. * This release does not worry much about speed (some inlining of the "hot paths" has been done, however), but instead about correctness and documentation. Everything is probably slower than 0.2xx by a factor of two to five, or worse. * The average size of an empty graph is about 1160 bytes. * The average size per vertex is about 110 bytes. * The average size per edge is about 390 bytes. * These figures are for a 32-bit Perl. * If you want speed (or especially if you want small memory footprint), you shouldn't be using pure Perl. Consider using things like PDL (pdl.perl.org), XS interfaces to LEDA or Boost Graph libraries (no, I don't know of such interfaces), or build your own algorithms on top of Bit::Vector, or resort non-Perl solutions like MATLAB or Mathematica, or again LEDA or Boost. * The current implementation of Graph objects is decidedly non-trivial (see DESIGN), which means that you cannot extend it in trivial ways (e.g. access vertices of a graph as keys in a hash). But you shouldn't be doing things like that anyway, peeking and poking at objects' innards, right? * The next version of Graph (most likely 0.90) is going to aim for speed. The backward compatibility for the 0.2xxx series will be dropped (because that, too, slows down this release). * No DAG SSSP has been implemented for this release. Dijkstra and Bellman-Ford SSSPs are available, though. * No flow network algorithms (like Ford-Fulkerson) have been implemented for this release. This omission will no doubt bring out from the woodwork all the myriad users of flow networks. * This release depends on the List::Util module, part of Perl releases since Perl 5.8.0, or available from the CPAN. (Also the Heap module is required, as it was already with Graph 0.2xxx.) * This release requires at least Perl 5.005, a step up from 5.004_04 as required by 0.2xx. (I just don't have 5.004 installed any more, so I simply wasn't able to test this release with 5.004.) --