1As of 0.95 Graph is unsupported, sorry about that. See README. 2 32013-05-24 Jarkko Hietaniemi <jhi@iki.fi> 4 5 * Mop-up release for 0.95. Still is and will be unsupported. 6 7 * Release as 0.96. 8 92013-05-23 Jarkko Hietaniemi <jhi@iki.fi> 10 11 * Address rt.cpan.org #85449: 12 "Graph-0.94 tests fail under perl 5.18.0" 13 14 * Address rt.cpan.org #82324: 15 "Test failures due to hash randomisation in perl 5.17.6" 16 17 The two above fixes were the same: the biconnectedness 18 code was rewritten from scratch. The new code behaves 19 differently (but I believe more correctly) on certain 20 edge cases, in general it will generate more biconnected 21 components and bridges, for example for "a=b=c" it will 22 now return the same two biconnected components and bridges 23 (cut edges), namely "a=b" and "b=c", the "b" of course being 24 the articulation point (cut vertex). 25 26 * Address rt.cpan.org #67213: 27 "[PATCH] pod fixes" 28 29 * Remove the t/u_bo.t and t/u_bo1.t since they die in 5.18 due 30 to some strange failure, looks unrelated to Graph as such, 31 probably some fix/change made by newer Perls. 32 33 * Release as 0.95. 34 352010-03-13 Jarkko Hietaniemi <jhi@iki.fi> 36 37 * Address rt.cpan.org #43580: 38 "Reversed logic on overload::StrVal() in AdjacencyMap::Vertex::__set_path" 39 Had to add a new option, refvertexed_stringified. 40 41 * Address rt.cpan.org #50210: 42 "Graph-0.91: bug in unionfind parameter" 43 44 One cannot delete from a unionfind graph: now enforcing that. 45 46 * Address rt.cpan.org #48090: 47 "all_reachable on directed $g->add_edges(['a','b'],['b','a'])" 48 49 Now if there are loops, all_reachable() will include 50 the initial vertices themselves. Also all_neighbors() 51 had some problems in certain cases, fixed those too. 52 53 * Address rt.cpan.org #50210: 54 "Graph-0.91: bug in unionfind parameter" 55 56 One cannot delete edges or vertices from a unionfind 57 graph: now enforce that in code. 58 59 * Address rt.pcan.org #42549: "stron" 60 61 Document that strongly connected components will include 62 isolated and sink and source vertices. 63 64 * Release as 0.94. 65 662010-03-07 Jarkko Hietaniemi <jhi@iki.fi> 67 68 * Revert the SPTHeapElem.pm change made in Graph 0.92, 69 installing Heap 0.80 broke Graph. Better be conservative. 70 71 * Release as 0.93. 72 732010-03-03 Jarkko Hietaniemi <jhi@iki.fi> 74 75 * Address rt.cpan.org #55912 "Broken links in the documentation" 76 77 * Address rt.cpan.org #55196 "Heap 0.80 compatibility fix" 78 79 * Add copyright and clearer license statement. 80 81 * Release as 0.92. 82 832009-01-16 Jarkko Hietaniemi <jhi@iki.fi> 84 85 * Minor documentation cleanups. 86 87 * Add 'use strict;' to lib/Graph/TransitiveClosure.pm. 88 89 * Modernize the META.yml. 90 91 * Release as 0.91. 92 932008-12-29 Jarkko Hietaniemi <jhi@iki.fi> 94 95 * Storable deparse of coderefs for deep_copy() does not 96 work at all with 5.6.2: if modern enough Storable 97 and B::Deparse are not available, fall back to 98 the previous version which used Data::Dumper. 99 100 * Release as 0.90. 101 1022008-12-27 Jarkko Hietaniemi <jhi@iki.fi> 103 104 * Some PAUSE upload problem with 0.88, retrying. 105 106 * Release as 0.89. 107 1082008-12-26 Jarkko Hietaniemi <jhi@iki.fi> 109 110 * The 0.87 forgot to specify the Storable (and Safe, 111 used in the deserialization step of deep_copy) 112 prerequirement(s) in Makefile.PL. 113 114 * Release as 0.88. 115 1162008-12-26 Jarkko Hietaniemi <jhi@iki.fi> 117 118 * Addressed a performance problem in successors() 119 and predecessors(), reported by Jonathan Moore. 120 121 * Reimplement deep_copy() by using Storable 122 freeze() and thaw() instead of Data::Dumper, 123 inspired by Jonathan Moore. Probably now safer 124 and faster, but Storable is now a prerequirement. 125 126 * Release as 0.87. 127 1282008-11-27 Jarkko Hietaniemi <jhi@iki.fi> 129 130 * Addressed a performance problem in connected_components() 131 for 1000+ vertex graphs, reported by David Grobe. 132 Should in general speed up graph traversal. 133 134 * Release as 0.86. 135 1362008-11-27 Jarkko Hietaniemi <jhi@iki.fi> 137 138 * Address rt.cpan.org #31608 "Graph::Undirected, unionfind and 139 connected_component" 140 141 * Address rt.cpan.org #34377 "recursive successors and predecessors" 142 (added all_successors/all_predecessors/all_neighbours/all_reachable) 143 144 * Address rt.cpan.org #39444 "inconsistent return value" 145 (make add_edges and add_vertices to always return the graph) 146 147 * Address rt.cpan.org #39614 "copy should retain more attributes" 148 (now copies also refvertexed/hypervertexed/countvertexed/ 149 multivertexed/hyperedged/countedged/multiedged/omniedged) 150 151 * Address rt.cpan.org #39805 "UnionFind: Repeated adds clobbers 152 graph component information" 153 154 * Address rt.cpan.org #41190 "add_edge_by_id on multigraph 155 malfunctioning" 156 157 * Added betweenness(), clustering_coefficient(), and 158 subgraph_by_radius(), contributed by Matt Spear. 159 160 * Release as 0.85. 161 1622007-08-13 Jarkko Hietaniemi <jhi@iki.fi> 163 164 * Tels found one more attributed edge problem. 165 166 * Release as 0.84. 167 1682007-08-12 Jarkko Hietaniemi <jhi@iki.fi> 169 170 * One test in 73_diameter.t had too many possible answers, 171 dependent on the hash ordering, removed the test. 172 173 * Release as 0.83. 174 1752007-08-11 Jarkko Hietaniemi <jhi@iki.fi> 176 177 * Since Heap 0.80 broke Graph, as a stop-gap measure 178 I will include the Heap::Elem and Heap::Fibonacci 179 of Heap 0.71, renamed as 'Heap071', addresses rt.cpan.org 180 #26943: "Heap 0.80 breaks Graph", and numerous bug reports 181 by email 182 183 * Address rt.cpan.org #27840: "add-edge_attributes() on 184 undirected graph wrongly depends on node order", from Tels 185 186 * Address rt.cpan.org #27959: "radius method incorrect", 187 code and test case from ROSULEK. 188 189 * Release as 0.82. 190 1912007-01-21 Jarkko Hietaniemi <jhi@iki.fi> 192 193 * Address rt.cpan.org #24417: "next_successor unavailable in 194 Traversal (PATCH)", from Ted Carnahan. 195 196 * Small pod tweaks. 197 198 * Minor internal cleanup for the caching code. 199 200 * Release as 0.81. 201 2022006-09-10 Jarkko Hietaniemi <jhi@iki.fi> 203 204 * SP_Bellman_Ford() used actually SPT_Dijkstra(), not 205 SPT_Bellman_Ford(), noticed by "aramos". This changed 206 some regression test results a bit. 207 208 * The NAME line of Graph::Undirected said "directed graphs", 209 noticed by "Ruslan", the first one to notice this in two 210 years, including the author yours truly... 211 212 * Add Scalar::Util to the prereqs listed in Makefile.PL since 213 one of the tests uses refaddr, shouldn't be a problem because 214 List::Util already is a prereq. 215 216 * Fix few broken intra-pod links. 217 218 * Release as 0.80. 219 2202006-08-06 Jarkko Hietaniemi <jhi@iki.fi> 221 222 * The u_bo_ap1.t wasn't really testing the same for 20 times, 223 which meant that one bug was waiting for Koen van der Drift. 224 (If one start vertex of biconnectivity search was a self-loop, 225 an empty list of articulation points was returned.) 226 227 * Add a new API family: $g->..._clear_cache(), which allows 228 one to forget a cached value such as biconnectivity(). 229 Without clearing the cache once the result has been computed 230 it stays the same (until the graph is modified, of course). 231 If the cache is cleared, (pseudo)randomness is applied again, 232 and the algorithm results may become different. 233 234 * Release as 0.79. 235 2362006-07-16 Jarkko Hietaniemi <jhi@iki.fi> 237 238 * Address rt.cpan.org #20476: "SPT_Bellman_Ford does not respect 239 refvertexed" - now fixed, and SPT_Dijkstra() had the same problem. 240 241 * Release as 0.78. 242 2432006-07-08 Jarkko Hietaniemi <jhi@iki.fi> 244 245 * Address rt.cpan.org #20185: "problem with SPT_Bellman_Ford", 246 SPT_Bellman_Ford() was broken for undirected graphs 247 (they were handled as directed ones, therefore missing vertices). 248 249 * weakly_connected_component_by_vertex() usage example 250 was wrong, was using weakly_connected_component(), 251 noted by 'yanick' in annocpan.org. 252 253 * Implement and document the saving of the SPT_Dijkstra() 254 and SPT_Bellman_Ford() start vertices. 255 256 * Document add_edges() alternative API. 257 258 * Aerate the Changes by adding empty lines between the * items. 259 260 * Release as 0.77. 261 2622006-06-28 Jarkko Hietaniemi <jhi@iki.fi> 263 264 * Problem found by Xiaoli Zheng in diameter(): adding vertices 265 did not change diameter, this was due to a deeper bug where 266 the transitive closure matrix was being cached wrong: 267 sometimes saved too long, sometimes recomputed too often. 268 Enhanced 73_diameter.t to detect this. 269 270 * Problem found by Andree Toonk and Ronald van der Pol: 271 SP_Dijkstra() tried too hard to find a path between 272 vertices even if there was none - and returned rubbish. 273 Added t/u_at3.t to detect this. 274 275 * Address rt.cpan.org #20021: "bridges() sometimes returns 276 empty list when isolated vertices present". biconnectivity() 277 did not work right if isolated vertices were picked as roots, 278 it either hung or returned empty. Added t/u_bill.t to detect this. 279 280 * Document that add_vertex() is often unnecessary. 281 282 * Directed.pm and Undirected.pm were missing "use strict". 283 284 * Release as 0.76. 285 2862006-06-09 Jarkko Hietaniemi <jhi@iki.fi> 287 288 * Had accidentally removed Digest::MD5 from the Makefile.PL 289 prereq list, found by Anton Berezin (using Perl 5.6.2, which 290 doesn't include that), solved by removing the dependency 291 to Digest::MD5. 292 293 * Speeded up repeated longest/shortest paths computations 294 by using a cached (Floyd-Warshall) transitive closure. 295 296 * Implemented: 297 - graph radius 298 - graph center (vertices) 299 - vertex eccentricity 300 301 * Release as 0.75. 302 3032006-05-31 Jarkko Hietaniemi <jhi@iki.fi> 304 305 * Bug in SP_Dijkstra() found by Andree Toonk and Ronald van der Pol. 306 The edge weights of the Dijkstra shortest paths graph were 307 not cumulative (if the whole graph is a-b = 1 and b-c = 2, 308 a-c should be 3), which caused the SP_Dijsktra() results 309 sometimes to be nonsense. Two test cases, one of them rather 310 large (about 5000 edges). 311 312 * Bugs when using references as vertices in bridges() 313 and (Traversal) seen() found by Brian Osborne. 314 315 * Added another articulation_points() test by Brian Obsorne. 316 317 * Explicitly disallow adding undef as a vertex. 318 319 * Release as 0.74. 320 3212006-05-27 Jarkko Hietaniemi <jhi@iki.fi> 322 323 * Still one bug hiding in articulation points: if the 324 (randomly chosen) first vertex was a self-loop, an 325 empty list was returned for articulation points. 326 t/u_bo_ap.t now tests the test case from Brian 327 Osborne 20 times to stress test more cases, 328 and extra five tests testing self-loops and 329 articulation points. 330 331 * Release as 0.73. 332 3332006-05-27 Jarkko Hietaniemi <jhi@iki.fi> 334 335 * Brian Osborne found a graph where articulation_points() 336 ended up in an infinite loop. Resolved and the graph 337 test case added as t/u_bo_ap.t. 338 339 * Release as 0.72. 340 3412006-05-22 Jarkko Hietaniemi <jhi@iki.fi> 342 343 * Tweak the pod-coverage.t so that it looks more like 344 Test::Pod::Coverage documentation suggests in this case. 345 346 * Fix the u_bo.t not to have a test class with a broken 347 stringification method to avoid spurious warnings and 348 failure (also do away with the use of Math::Complex to 349 avoid problems because of different Math::Complex releases), 350 and more even importantly fix the "next_root" logic in 351 connected components not to advance to the next component 352 if there is nothing to advance to. This seems to be prone 353 to failure in 5.6.2, for some reason 5.8.8 works fine. 354 355 * Test under Perl 5.6.2. 356 357 * Force has_cycle() to return true/false, not the list of edges, 358 reported by Casey Bergman. 359 360 * Release as 0.71. 361 3622006-05-21 Jarkko Hietaniemi <jhi@iki.fi> 363 364 * delete_vertex() from a refvertexed graph left an unnecessary 365 reference to the referenced vertex hanging around in the graph, 366 reported by Christoph Lamprecht. 367 368 * Implement new 'super_component' option for connected_graph(), 369 biconnected_graph(), and strongly_connected_graph(), to allow 370 more complex ways of forming 'supercomponents' (and more 371 customized ways of naming them). 372 373 * Address rt.cpan.org #17159: "Nodes appear to unblessed after 374 using articulation_points() - 2" (elaboration of rt.cpan.org 375 #17108: "Nodes appear to unblessed after using 376 articulation_points())" 377 378 * Address rt.cpan.org #17160: "Nodes appear to unblessed after 379 using connected_components()" 380 381 * Address rt.cpan.org #17161: "Nodes appear to unblessed after 382 using bridges()" 383 384 * Address rt.cpan.org #17162: "Nodes appear to unblessed after 385 using connected_graph()" 386 387 * Address rt.cpan.org #17163, "SP_Dijkstra() is complaining" 388 389 * Address rt.cpan.org #17164, "SP_Bellman_Ford() is complaining" 390 391 * Address rt.cpan.org #17165, documentation error in 392 SP_Bellman_Ford(). 393 394 * Address rt.cpan.org #17405: "has_cycle with empty args 395 should return FALSE" 396 397 * Address rt.cpan.org: #17592: "articulation_points doesn't 398 find all vertices" (didn't find all the vertices of non-connected 399 graphs, only the vertices of the first (randomly chosen) connected 400 subgraph) 401 402 The rt.cpan.org cases 17159-17592 reported by Brian Obsorne. 403 404 * Add Test::Pod and Test::Pod::Coverage tests. 405 406 * Release as 0.70. 407 4082005-12-06 Jarkko Hietaniemi <jhi@iki.fi> 409 410 * Add SP_Dijkstra() and SP_Bellman_Ford() to find the shortest 411 path between any two vertices, the result is returned as 412 the list of the vertices in the path. 413 414 * In addition to the SPT per vertex result weight, also add 415 a predecessor ('p') vertex attribute (the SP_Dijkstra() and 416 SP_Bellman_Ford() unsurprisingly use this.) 417 418 * Cache the SPT results for better speed. 419 420 * Document that the SPT also allow a single argument 421 as the starting (root) vertex. 422 423 * Fix a bug in SPT_Dijkstra() which would ignore an "untrue" vertex 424 (such as '0') if it was any other vertex than the root vertex 425 (boolean context is dangerous, when you really mean "exists"). 426 427 * For "components" (strongly, biconnected, and connected) graphs 428 store the list of the original vertices as a vertex attribute 429 'subvertices' (so there is no need to do split(/\+/, ...) tricks), 430 the list is stored as a array reference. 431 432 * Release as 0.69. 433 4342005-11-23 Jarkko Hietaniemi <jhi@iki.fi> 435 436 * SPT_Dijkstra() wasn't setting the vertex attributes of 437 the result graph, noticed by Susan Tang, only the edge 438 attributes were being set. SPT_Bellman_Ford() was doing neither! 439 440 * There was an actual typo in the SPT test case from Sedgewick, 441 a weight of 0.32 was mistyped as 0.22, this luckily didn't 442 affect the result graph but it of course affected the 443 resulting vertex 'weight' attributes. 444 445 * Add tests to t/70_spt.t for the vertex and egde attributes 446 of the SPT_Dijkstra() and SPT_Bellman_Ford() results. 447 448 * Minor documentation tweaks, most importantly clarify the 449 return value of the SPT_Dijkstra() and SPT_Bellman_Ford(). 450 451 * Document that Perl 5.6.0 is the minimum (because of weak references) 452 and also make Graph.pm require that (Makefile.PL was already doing 453 the probing using Scalar::Util qw(weaken)). 454 455 * Add an early test (02_trap.t) for catching the development-time-only 456 setting of __DIE__ and __WARN__ handlers (as a result of this almost 457 all the numbered tests were renumbered, so the diff is falsely 458 gigantic). (If the handlers were mistakenly left turned on, 459 a lot of later tests that checked the $@ got confusing failures.) 460 461 * Release as 0.68. 462 4632005-08-03 Jarkko Hietaniemi <jhi@iki.fi> 464 465 * The 0.66 add_edge_get_id() fix was not yet quite right, Tels 466 found another problem with it. Now with another fix, and 467 another test case (t/u_te_ae.t) 468 469 * Documentation fixes from John P. Linderman. 470 471 * Release as 0.67. 472 4732005-07-20 Jarkko Hietaniemi <jhi@iki.fi> 474 475 * Fix [rt.cpan.org #13193] "Documentation error in set_edge_attributes" 476 and [rt.cpan.org #13194] "Documentation error in set_edge_attributes" 477 (duplicate report) 478 479 * Fixes for problems listed in [rt.cpan.org #13195] 480 "add_vertex_get_id/add_edge_get_id() return wrong result on first call" 481 - add_edge_get_id() was returning an array reference instead 482 of the id with the first call (the array reference was the 483 ids of the vertices of the edge) 484 - add_vertex_get_id() was even more broken (a multivertexed 485 graph was using Graph::AdjacencyMap::Vertex for the vertex 486 map, not Graph::AdjacencyMap::Heavy) 487 - Added test t/u_te_me.t for the two above issues. 488 - document in which order multiedge ids are returned (random) 489 - require Data::Dumper only for deep_copy() and _dump() 490 (not changes for two listed items, "check directly multiedged 491 via a flag" and "remove returns for speed" because I have 492 issues with speed hacks without actual measurements, and even 493 if so would fear reduced maintainability) 494 495 * Fix [rt.cpan.org #13352] "Dijkstra heap logic" 496 Dijkstra was fine, the SPTHealElem cmp() routine was wrong 497 in having no tie breakers in case the weights compared equal. 498 Added test t/u_re_sd.t. 499 500 * Release as 0.66. 501 5022005-05-15 Jarkko Hietaniemi <jhi@iki.fi> 503 504 * Tests added to 64_ref.t to verify that using different kinds 505 of blessed references as vertices works okay. Few bugs found 506 by these tests squashed. 507 508 * Release as 0.65. 509 5102005-05-14 Jarkko Hietaniemi <jhi@iki.fi> 511 512 * Fix for [rt.cpan.org #12509] "Errors using objects as nodes", 513 patch from the reporter of the bug, add t/u/bb_rv.t. 514 515 * Fix for refvertexed isolated vertices not having overloaded cmp 516 and graph string presentation failing because of that. 517 518 * The <NOTE>s needed to be B<NOTE>s. 519 520 * Release as 0.64. 521 5222005-04-16 Jarkko Hietaniemi <jhi@iki.fi> 523 524 * After setting a vertex attribute one could not delete 525 non-attributed vertices, reported by Joseph Hamilton. 526 527 * Inlining to speed up path_vertices() slightly. 528 529 * Release as 0.63. 530 5312005-04-10 Jarkko Hietaniemi <jhi@iki.fi> 532 533 * The documentation of add_weighted_vertices was wrong: 534 the arguments are (v1, w1, v2, w2, ...) instead of (v1, v2, ..., w). 535 536 * Made calling interfaces with an "options hash" like new() 537 and random_graph() more robust, now bails out earlier instead 538 of dieing mysteriously later with an "odd number of arguments" 539 540 * Allow running under -d:DProf even when using random shuffling: 541 workaround for List::Util::shuffle and -d:DProf not working 542 together ([perl #32383]) by falling back to Fisher-Yates shuffle 543 if (any use of) the -d: is detected. 544 545 * Allow calling random_graph() also as a class method: 546 Graph::random_graph(...) (the resulting graph will be a 'Graph'). 547 548 * in_degree() and out_degree() (and therefore vertex_degree()) 549 were one too low for self-loop vertices in undirected graphs 550 (the self-loop edge was not counted). 551 552 * Release as 0.62. 553 5542005-03-27 Jarkko Hietaniemi <jhi@iki.fi> 555 556 * [rt.cpan.org #12023] from Macha Nikolski: 557 deleting an attributed vertex left the graph in a state 558 where has_vertex() returned correctly false but vertices() 559 still wrongly returned the freshly deleted vertex. 560 561 * A few missing "See":s added to the pod. 562 563 * Release as 0.61. 564 5652005-03-25 Jarkko Hietaniemi <jhi@iki.fi> 566 567 * Bug reported by Richard Ball: connected_component_by_index() 568 and connected_component_by_vertex() were starting their indexing 569 from one, not zero. 570 571 * t/27_hyperedged.t was really testing for turning on 572 hypervertexedness (the actual functionality was being 573 tested correctly in t/32_hyperedge.t). 574 575 * Release as 0.60. 576 5772005-03-03 Jarkko Hietaniemi <jhi@iki.fi> 578 579 * deep_copy_graph() could not handle code references since 580 Data::Dumper by default doesn't handle those. Now uses 581 the Deparse option for 5.8.x and later. 582 583 * The removed interfaces add_graph() and delete_graph() still 584 had their documentation hanging around. 585 586 * Release as 0.59. 587 5882005-02-19 Jarkko Hietaniemi <jhi@iki.fi> 589 590 * Document that using attributes does have a slowing down 591 effect on other graph operations 592 [rt.cpan.org #11498] 593 "Performance problem: edge attributes slow source_vertices" 594 This is unlikely to get fixed any time soon, I am afraid, 595 this is one of those working-as-designed-and-correctly-but- 596 unfortunately-slow things. 597 598 * Document that Graph 0.2xxx edges($v) is now edges_at($v) 599 [rt.cpan.org #11494] 600 601 * [rt.cpan.org #11543]: self-edges reported twice by edges_at(). 602 603 * Declare/document that any attributes beginning with an underscore 604 are reserved for the internal use of Graph. 605 606 * Various inlining optimizations: should run 5-10% faster 607 than the 0.57. 608 609 * Release as 0.58. 610 6112005-02-12 Jarkko Hietaniemi <jhi@iki.fi> 612 613 * Further 10% speedup on 'make test' on top of 0.56 by inlining 614 various code paths related to finding edges, now 'make test' 615 is cumulatively about 15% faster than the 0.55 release. 616 The test case of [rt.cpan.org #11465] is about 10 times faster. 617 618 * Release as 0.57. 619 6202005-02-12 Jarkko Hietaniemi <jhi@iki.fi> 621 622 * Rewrite edges finding code (like edges_at()) to avoid a 623 quadratic algorithm. Shame on me. Luckily this extremely 624 slow path was not touched that often, but [rt.cpan.org #11465] 625 shows one known bad case, source_vertices() for compat02 626 graphs. The removal of the slow path sped up 'make test' 627 by about 5-10%. 628 629 * Remove a voodoo keys() from vertices_at(). 630 631 * Document stubs for Graph::Directed and Graph::Undirected. 632 633 * Tiny documentation tweaks. 634 635 * Release as 0.56. 636 6372005-01-22 Jarkko Hietaniemi <jhi@iki.fi> 638 639 * Add unset_row(), get_row(), set_row(), and unset_row(), methods 640 to Graph::BitMatrix and make it public (remove the "internal use 641 only" warning from it). Add t/82_bitmatrix.t. 642 643 * Add vertex_degree() as an alias for degree(). 644 645 * One more alternative solution for spt.t from Koen. 646 647 * I seem to have this drive to misspell people's names. 648 Sorry, Koen. 649 650 * Release as 0.55. 651 6522005-01-16 Jarkko Hietaniemi <jhi@iki.fi> 653 654 * More bugs found in set_vertex_attribute(), fixed and tests 655 added. (Basically the same failure pattern as with the 656 [rt.cpan.org #9461]: after setting vertex attributes many of 657 the 'structural' methods such as predecessors() often returned 658 wrong results.) 659 660 * More alternative solutions to spt.t, diameter.t, and dump.t, 661 found by the PRNG of Koen van der Drift in Mac OS X 10.3.7, 662 Perl 5.8.1. 663 664 * Release as 0.54. 665 6662005-01-14 Jarkko Hietaniemi <jhi@iki.fi> 667 668 * The #9461 was still there. 669 But now we have a simple test case from Sebastian Nagel. 670 The real culprit seemed to be a misapplied optimisation. 671 672 * Release as 0.53. 673 6742005-01-12 Jarkko Hietaniemi <jhi@iki.fi> 675 676 * Fix set_graph_attribute() documentation not to talk about $u, $v 677 (noticed by Kurt Jaeger). 678 679 * A mysterious failure fixed by a mysterious fix: under some 680 circumstances it seems that an each() doesn't walk through 681 all the key-value pairs, the workaround is to reset the 682 each() iterator by a keys() call. Not simple test code, 683 sadly, since the existing test code (see the case) is 13 kB 684 and non-trivial. 685 [rt.cpan.org #9461] 686 687 * Add a safety guard against a missing Scalar::Util::weaken 688 [rt.cpan.org #9481] 689 690 * Release as 0.52. 691 6922005-01-09 Jarkko Hietaniemi <jhi@iki.fi> 693 694 * Allow calling Makefile.PL with arguments other than --renum 695 (which is for internal use only, and therefore undocumented). 696 [rt.cpan.org #9481] 697 698 * Remove the add_graph() and delete_graph() interfaces, sorry 699 if you were already using them, but the current interface was 700 very poor and the concept ill-planned. If you want to merge or 701 remove edges and vertices between your graph, you can probably 702 yourself implement the exactly right things to do. 703 [rt.cpan.org #9493] 704 705 * Document that one cannot assume Graphs are blessed hash references 706 (and the likely error message one will get if one so assumes). 707 [rt.cpan.org #9505] 708 709 * Fix Andras' last name (sorry). 710 711 * Merge duplicate documentation of find_a_cycle(). 712 713 * Graph::AdjacencyMap::Base does not exist, fix Graph/AdjacencyMap.pm 714 pod to comply. 715 716 * Release as 0.51. 717 7182005-01-01 Jarkko Hietaniemi <jhi@iki.fi> 719 720 * The 0.50. 721 7222004-10-30 Jarkko Hietaniemi <jhi@iki.fi> 723 724 * Start wrapping up for the 0.50 release. 725 726 * Start bothering beta testers. 727