The unpac monorepo manager self-hosting as a monorepo using unpac
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

moved from adoc to markdown

+470 -495
-394
CHANGES
··· 1 - 2 - * marks some incompatible change 3 - 4 - o [WeakTopological] fixed incorrect use of generic hash tables 5 - (#99, Tomáš Dacík) 6 - o [Oper] fixed transitive_reduction (#91) 7 - o fix incorrect uses of polymorphic equality (Steffen Smolka, Boris Yakobowski) 8 - o [Coloring] fixed generation of OCamlDoc documentation 9 - (contributed by Earnestly) 10 - * [Coloring] functions now fail if the graph is directed 11 - * [Coloring] now uses a single, global exception [NoColoring] 12 - o [Coloring] new function two_color to 2-color a graph (or fail) 13 - * [Fixpoint] Take initial labeling of nodes into account (Johannes Kloos) 14 - 15 - version 1.8.8, October 17, 2017 16 - ------------------------------- 17 - o fixed installation (Virgile Prevosto, Jacques-Pascal Deplaix) 18 - o safe-string compatible (Jacques-Pascal Deplaix) 19 - * fixed method get_edge_layout of class abstract_model of DGraphModel.Make. The 20 - bug could have occured when there are several edges between two vertices. 21 - o [Traverse/Pack] added Dfs.fold and Dfs.fold_component (tail-recursive) 22 - (contributed by Guillaume Chelfi) 23 - * fixed implementation of Golberg-Tarjan maximal flow algorithm 24 - (contributed by Guyslain Naves) 25 - No more function min_capacity in the input interface. 26 - Renaming as follows: Flow.Goldberg -> Flow.Goldberg_Tarjan 27 - and Pack.goldberg -> Pack.goldberg_tarjan 28 - o new functors [WeakTopological] and [ChaoticIteration] to compute 29 - fixpoints with widening, following Bourdoncle's algorithms (contributed 30 - by Thibault Suzanne) 31 - 32 - version 1.8.7, April 12, 2016 33 - ----------------------------- 34 - o fixed examples/demo.ml so that it also compiles with an installed OCamlGraph 35 - o [Components] fixed stack overflow with [scc] (patch by Albin Coquereau) 36 - o [Dominator] fixed stack overflow (patch by Albin Coquereau) 37 - o new functor [Path.Johnson] to compute all pairs of shortest paths 38 - using Johnson's algorithm (contributed by Mário Pereira) 39 - o fixed configuration on Windows (patch by Martin R. Neuhäußer) 40 - o new functor [Components.Undirected] to compute connected components 41 - o Graphviz: fixed printing of attribute BgcolorWithTransparency 42 - * Prim, Nonnegative: function weight now has the more general type "edge -> t" 43 - (to be consistent with Path) 44 - o new module type Sig.WEIGHT (used in Path, Prim, and Nonnegative) 45 - o Fixpoint: do not catch Not_found raised by a user-provided function. 46 - o Adding folds to BFS. 47 - 48 - version 1.8.6, January 23, 2015 49 - ------------------------------- 50 - * Dominator: new functor [Make_graph] with may use graph building operations, 51 - while the old functor [Make] now only requires a read-only graph. 52 - Function [compute_all] and [compute_dom_graph] are now only defined in the 53 - new [Make_graph] functor. 54 - o Graphviz: support for additional polygonal-shapes 55 - o New module Clique (contributed by Giselle Reis) 56 - o Avoid ocamldoc error with OCaml 4.02 57 - * Path: function weight now has the more general type "edge -> t" 58 - (contributed by Steffen Smolka) 59 - update your code by turning "weight l" into "weight (G.E.label e)" 60 - o installation: "make install-findlib" now uses DESTDIR when defined 61 - o Traverse: documentation is clarified: providing iterators over the roots of 62 - the graph is enough. 63 - o Imperative concreate (di)graph: fix bug of functions add_edge* of imperative 64 - concrete (di)graphs which appears when the added edge [e] was already in the 65 - graph [g] and one of the vertices of [e] is equal to another vertex of [g] 66 - (when using the user-defined equality [G.V.equal]), but not physically equal 67 - to it. This bug only occurs with OCaml version >= 4.0. 68 - o functions in modules Components, Dominator, Flow, Topological and Traverse 69 - now create smaller auxiliary hash tables 70 - o Graphviz: add the attribute `HtmlLabel to specify html strings. 71 - 72 - version 1.8.5, March 4, 2014 73 - ----------------------------- 74 - o Graphviz: reverted to the old API where edges and vertices are 75 - given a single style attribute; but such attributes are collected 76 - and output in the DOT file into a list (thus allowing multiple style 77 - attributes) 78 - o fixed issue in ./configure with ocamlfind on Win32. 79 - o fixed compilation when laglgnomecanvas is missing (bug introduced in 1.8.4). 80 - o fixed more issues with 'make -j'. 81 - 82 - version 1.8.4, February 4, 2014 83 - ------------------------------- 84 - o fixed [Graphml] printer (contributed by Johannes Schauer) 85 - o Components: the components of [scc_list] are provided in the same order than 86 - the ones of [scc_array]. 87 - o fix compilation with 'make -j' 88 - o Graphviz: handle attribute penwidth on edges and vertices 89 - o also install graph.o and graph.cmxs 90 - o fixed installation with ocamlfind (thanks to Virgile Prevosto) 91 - o new functions [gnp] and [gnp_labeled] in module [Rand] to generate random 92 - graphs using the G(n,p) model (contributed by Thomas Aubry) 93 - o Prim's algorithm (in module [Prim]; not exported in [Pack]) 94 - (contributed by Thomas Aubry) 95 - o Graphviz: support for nested subgraphs. (Backward-incompatible change: 96 - add 'sg_parent = None' to obtain subgraphs whose parents are the main graph) 97 - o Graphviz: edges and vertices can now receive multiple styles. 98 - (Backward-incompatible change: constructors `Style now require a list as 99 - argument) 100 - o Graphviz: new vertex style 'rounded' 101 - o Merge: fixed bug with vertices with no incoming nor outcoming edge. 102 - o fixed compilation issue with OCaml 3.12.1 103 - 104 - version 1.8.3, April 17, 2013 105 - ----------------------------- 106 - o new module Merge implementing several different merges of vertices and 107 - edges into a graph (contributed by Emmanuel Haucourt) 108 - o fixed DOT parser (contributed by Alex Reece) 109 - o Topological: fixed bug in presence of disjoint cycles; new implementation 110 - o new module [Graphml] to export graphs into the graphml format 111 - (contributed by Pietro Abate) 112 - o Builder.S now contains functions remove_*. 113 - o modified Fixpoint module so that it also works with unlabeled 114 - graphs, break backward compatibility yet (contributed by Markus W. Weissmann) 115 - o support of lablgtk2 installed with findlib (contributed by B. Monate) 116 - o new module [Dominator] to compute dominators 117 - (contributed by David Brumley and Ivan Jager) 118 - 119 - version 1.8.2, May 12, 2012 120 - --------------------------- 121 - o new module [Path.BellmanFord] implementing Bellman-Ford algorithm 122 - (contributed by Yuto Takei) 123 - o new module Contraction implementing edge contraction 124 - (contributed by Markus W. Weissmann) 125 - o Gmap: new function [filter_map] (contributed by Markus W. Weissmann) 126 - o Topological: fix bug when a cycle depends on another cycle. That breaks 127 - compatibility: the input graph must implement Sig.COMPARABLE instead of 128 - Sig.HASHABLE 129 - o new module Topological.Make_stable to iterate over a graph in a **stable** 130 - topological order. Stable means that the provided ordering only depends on 131 - the graph topology and on the user's vertices ordering. 132 - o new module Leaderlist to compute the leader list algorithm (see the Dragon) 133 - (contributed by Markus W. Weissmann <markus.weissmann@in.tum.de>) 134 - 135 - version 1.8.1, October 17, 2011 136 - ------------------------------- 137 - o module Gmap now has a signature for edges (E_SRC) compatible with 138 - Sig, so that it is easier to apply functor Gmap.Edge 139 - (contributed by Markus W. Weissmann <markus.weissmann@in.tum.de>) 140 - o new module Fixpoint to compute fixpoints using the work-list 141 - algorithm, e.g. for data flow analysis 142 - (contributed by Markus W. Weissmann <markus.weissmann@in.tum.de>) 143 - 144 - version 1.8, October 4, 2011 145 - ---------------------------- 146 - o removed ocamlyacc shift/reduce conflict in dot_parser.mly 147 - (patch contributed by Till Varoquaux) 148 - o Dgraph: Correct height and width-related problems with text 149 - o DGraph: many bug fixes. Patch by Benjamin Monate 150 - o Sig.G: new function [find_all_edges] for each graph implementation 151 - o Oper: fixed bug with function [intersect]: now use G.E.compare instead of (=) 152 - o fixed "make install-findlib" 153 - 154 - version 1.7, February 23, 2011 155 - ------------------------------ 156 - o Makefile: fixed bug when installing ocamlgraph with ocamlfind 157 - o DGraph: fixed bug with colors on some windows manager 158 - o Configure: fixed issue with automatic detection of extension under 159 - Windows/Mingw 160 - 161 - version 1.6, December 13, 2010 162 - ------------------------------ 163 - o DGraph: new viewer mode (called `tree') which focus on a subset part of the 164 - graph centered on a given node 165 - o Graphviz: fixed bug with attribute `Constraint (was `Constraints) (patch by 166 - Boris Yakobowski) 167 - o DGraph: fixed font size issue when zooming 168 - o DGraph: now interpret text anchors and espaced sequences correctly 169 - o DGraph: offer possibility to disable the default callbacks on nodes 170 - o 'make -j' works again 171 - o new implementation Persistent.Digraph.ConcreteBidirectionalLabeled 172 - o new implementation Persistent.Digraph.ConcreteBidirectional 173 - o Makefile: bug fixed when ocamlc (resp. ocamlopt) and ocamlc.opt 174 - (resp. ocamlopt.opt) are unconsistent 175 - 176 - version 1.5, April 29, 2010 177 - --------------------------- 178 - o Makefile: bug fixed when installing ocamlgraph with ocamlfind 179 - (patch by Virgile Prevosto) 180 - o DGraph: new method set_zoom_padding in DgraphView.view 181 - o Traverse.Dfs.has_cycle: can now be used on undirected graphs as well, 182 - and is now tail recursive 183 - o DGraph: handle dotted ellipse 184 - 185 - version 1.4, March 24, 2010 186 - --------------------------- 187 - o new function [clear] for imperative graphs 188 - o new implementation Imperative.Digraph.ConcreteBidirectionalLabeled 189 - (contribution of Jaap Boender) 190 - o Dgraph displays graphs faster 191 - o DGraph: several bugs fixed 192 - o DGraph: several API changes 193 - (may break compatibility with existing development) 194 - 195 - version 1.3, October 2, 2009 196 - ---------------------------- 197 - o Oper.mirror: undirected graphs are not copied anymore 198 - o Oper.mirror: fixed bug (isolated vertices were lost) 199 - o Graphviz: new signature GraphWithDotAttrs 200 - o Improvements of Dgraph 201 - o Configure: better test for detecting lablgtk 202 - o OcamlGraph is now installed by default in `ocamlc -where`/ocamlgraph 203 - o Viewgraph is now packed in a single module Viewgraph (break compatibility 204 - with previous version) 205 - o Dgraph is now packed in a single module Dgraph (break compatibility with 206 - previous version) 207 - o Makefile: fixed bug when the installation directory of binaries does not 208 - exist 209 - o Makefile: fixed bug of ocamldep under Windows 210 - 211 - version 1.2, August 31, 2009 212 - ---------------------------- 213 - o experimental: new GTK-based graph viewer called Dgraph 214 - (viewGraph is now deprecated) 215 - o added Delaunay.iter_triangles (not of use in Ocamlgraph, actually) 216 - 217 - version 1.1, June 23, 2009 218 - -------------------------- 219 - o added constraint "type E.label = unit" to unlabeled graph data structure 220 - o viewGraph: new module viewGraph_utils; fixed compilation (gtkInit 221 - was missing; patch by Mehdi Dogguy) 222 - o configure: fixed bug under Cygwin (patch by Julien Bernet) 223 - o configure: look for lablgnomecanvas.cmxa when compiling in native code 224 - o Makefile: fixed make install-findlib when lablgtk and/or 225 - lablgnomecanvas not installed (patch by Peter Hawkins) 226 - 227 - version 1.0, October 14, 2008 228 - ----------------------------- 229 - o license: LGPL updated to version 2.1 230 - o ocamlgraph now requires ocaml 3.10 or higher 231 - o experimental: GTK-based graph viewer based on dot 232 - (contribution of Anne Pacalet) 233 - o Makefile: 234 - - fixed bug when lablgnomecanvas is not installed 235 - - fixed bug when ocamlfind is installed 236 - - patch to the build system for a DESTDIR (patch by Igor Galic) 237 - - "make -j" compliant 238 - o new function Blocks.after_unserialization in order to be able to safely 239 - serialize abstract vertices (see the FAQ) 240 - o Dot: 241 - - fixed bug in the parsing of attributes 242 - - fixed bug in the parsing of subgraphs (patch by Anne Pacalet) 243 - o Oper: fixed bug in intersect 244 - o Path: improved efficiency of Dijkstra 245 - o Topological: 246 - - fixed bug in Make.{iter,fold} 247 - - folding is now tail-recursive (patch by Michael Furr) 248 - 249 - version 0.99c, April 3rd, 2008 250 - ------------------------------ 251 - o replicated a bug fix of Bitv (could not affect Matrix, though) 252 - o fixed DFS traversal in Traverse.Dfs.{prefix,prefix_component,iterator} 253 - 254 - version 0.99b, December 18th, 2007 255 - ---------------------------------- 256 - o fixed link bug with ocaml 3.09 257 - (see http://caml.inria.fr/mantis/view.php?id=4124) 258 - 259 - version 0.99a, November 21st, 2007 260 - --------------------------------- 261 - o fixed bug in Makefile when lablgtk2 is not installed 262 - o Sig.I.create and Sig_pack.create are now of type ?size:int -> unit -> t 263 - (instead of unit -> t) to indicate an initial guess on the graph size 264 - 265 - version 0.99, June 27th, 2007 266 - ----------------------------- 267 - o experimental: GTK-based graph editor based on hyperbolic geometry; 268 - to build it and test it, cd to editor/ and type make 269 - o [Components.Make] functor: function [scc] as a new profile and a 270 - more precise specification. New function [scc_array]. 271 - o fixed configure to set ocaml's standard library using "ocamlc -where" 272 - o new module Dot to parse files in Graphviz's DOT format 273 - o slight change in the license (no more clause 6 of the LGPL; see LICENSE) 274 - o new module Strat implementing simple game strategies 275 - o Graphviz: little refactoring and improved documentation 276 - 277 - version 0.98, Sep 27th, 2006 278 - ---------------------------- 279 - o rename Sig.IA to Sig.IM 280 - o add subgraph support in Graphviz 281 - (breaks ascendent compatibility if you use Graphviz: by default add 282 - let get_subgraph _ = None 283 - in the argument of Graphviz.Dot and Graphviz.Neato) 284 - 285 - version 0.97, July 20th, 2006 286 - ----------------------------- 287 - o fixed compilation under Windows/Cygwin (contributed by Denis Berthod) 288 - o fixed bug with escaped string in Graphviz 289 - 290 - version 0.96, May 2nd, 2006 291 - --------------------------- 292 - o new demo program: sudoku.ml (solving the Sudoku using graph coloring) 293 - o new module Coloring for (rather brute force) graph coloring 294 - o new implementation Imperative.Digraph.ConcreteBidirectional 295 - that maintains the set of ingoing edges for each node, thus improving the 296 - efficiency of functions such as iter_pred, pred, in_degree, etc. 297 - (contributed by Ted Kremenek) 298 - 299 - version 0.95, November 2nd, 2005 300 - -------------------------------- 301 - o compatibility with ocaml 3.09 302 - o new module Path.Check to check for paths 303 - 304 - version 0.94, July 6th, 2005 305 - ---------------------------- 306 - o new module Gml to parse and print graphs in GML file format 307 - (see http://www.infosun.fmi.uni-passau.de/Graphlet/GML) 308 - corresponding functions parse_gml_file and print_gml_file in Pack 309 - o added display_with_gv in Pack 310 - o improved implementation of Unionfind (patch by Marc Lasson) 311 - 312 - version 0.93, March 31st, 2005 313 - ------------------------------ 314 - o fixed bug in Rand (integer overflow causing Invalid_argument "random"); 315 - improved code in Rand 316 - o bug fixed in the META file 317 - o add find_edge in Sig.G (and so in all graph implementations) 318 - 319 - version 0.92, January 18th, 2005 320 - -------------------------------- 321 - o fixed escaped labels in Graphviz output (patch by Boris Yakobowski) 322 - o new Graphviz option OrderingOut (patch by Boris Yakobowski) 323 - o fixed sharing bugs in Oper (patch by Boris Yakobowski) 324 - o fixed bug in nb_edges for undirected graphs 325 - o improvement of iterators of undirected concrete graphs 326 - 327 - version 0.91, December 16th, 2004 328 - --------------------------------- 329 - o more precise specifications of remove_edge and shortest_path. 330 - o bug fixed in mem_edge_e of labelled graphs 331 - o generation of random graphs improved 332 - o add Rand.Make and Rand.Planar.Make (generic functors) 333 - o add signatures Persistent.S and Imperative.S 334 - 335 - version 0.90, November 30th, 2004 336 - --------------------------------- 337 - o graph.cma graph.cmxa 338 - o version.ml and META files are now writable 339 - o add interfaces Sig.VERTEX and Sig.EDGE 340 - o "sig.ml" and "sig_pack.ml" removed; ocamlgraph now requires ocaml 3.08.0 341 - o improvement of Minsep 342 - o add Components.scc_list 343 - o Oper.Neighbourhood replaces Neighborhood 344 - o Gmap replaces Copy 345 - o add types Sig_pack.vertex and Sig_pack.edge 346 - o fixed bug in Ford-Fulkerson: G.V.equal instead of = in two asserts 347 - 348 - version 0.81, July 13th, 2004 349 - ----------------------------- 350 - o compatibility with ocaml 3.08 351 - o Oper.Choose.choose_edge: choose an edge in a graph 352 - o add types Sig.G.edge and Sig.G.vertex resp. equal to Sig.G.V.t and Sig.G.E.t 353 - o fixed typos in invalid_arg arguments (in Bitv) 354 - 355 - version 0.80, June 28th, 2004 356 - ----------------------------- 357 - o major contribution by Matthieu Sozeau and Pierre-Loïc Garoche. 358 - New modules are: 359 - - Md: Minimum Degree algorithm 360 - - Cliquetree: the clique tree of a graph 361 - - Mcs_m: Maximal Cardinality Search (MCS-M) algorithm 362 - - Minsep: Minimal separators of a graph 363 - - Neighborhood: compute the neighborhood of a vertex/some vertices 364 - - Oper.Difference: subgraphs induced by the elimination of some vertices 365 - - Oper.Choose: choose a vertex in a graph 366 - - Copy: graphs copying 367 - - Util.DataV: create a vertex type with data attached to it 368 - o out_degree: raises Invalid_argument if v not in g (instead of Not_found) 369 - o Pack.Graph: golberg/ford_fulkerson fail ("not a directed graph") 370 - 371 - version 0.70, Feb 27th, 2004 372 - ---------------------------- 373 - o Makefile.in: dependences ("make -j" works) 374 - o union and intersection (see Oper.S.union and Oper.S.intersection) 375 - o Golberg/Ford_fulkerson algorithms in a single module Flow 376 - o step-by-step iterators in Traverse.{Dfs,Bfs} 377 - o Ford_fulkerson: maxflow now returns a flow function over edges 378 - 379 - version 0.60, Feb 18th, 2004 380 - ---------------------------- 381 - o fixed bug in Ford-Fulkerson 382 - o random planar graphs (see Rand.Planar) 383 - o Delaunay triangulation (see Delaunay) 384 - o implementations with adjacency matrices (see Imperative.Matrix) 385 - o operations on predecessors for undirected graphs optimized 386 - o Traverse.Dfs.{prefix,prefix_component} optimized (now tail recursive) 387 - 388 - version 0.50, Feb 4th, 2004 389 - --------------------------- 390 - o first release 391 - 392 - Local Variables: 393 - mode: text 394 - End:
+392
CHANGES.md
··· 1 + 2 + # 2.0.0 3 + 4 + - [WeakTopological] fixed incorrect use of generic hash tables 5 + (#99, Tomáš Dacík) 6 + - [Oper] fixed transitive_reduction (#91) 7 + - fix incorrect uses of polymorphic equality (Steffen Smolka, Boris Yakobowski) 8 + - [Coloring] fixed generation of OCamlDoc documentation 9 + (contributed by Earnestly) 10 + - * [Coloring] functions now fail if the graph is directed 11 + - * [Coloring] now uses a single, global exception [NoColoring] 12 + - [Coloring] new function two_color to 2-color a graph (or fail) 13 + - * [Fixpoint] Take initial labeling of nodes into account (Johannes Kloos) 14 + 15 + # 1.8.8, October 17, 2017 16 + 17 + - fixed installation (Virgile Prevosto, Jacques-Pascal Deplaix) 18 + - safe-string compatible (Jacques-Pascal Deplaix) 19 + - * fixed method get_edge_layout of class abstract_model of DGraphModel.Make. The 20 + bug could have occured when there are several edges between two vertices. 21 + - [Traverse/Pack] added Dfs.fold and Dfs.fold_component (tail-recursive) 22 + (contributed by Guillaume Chelfi) 23 + - * fixed implementation of Golberg-Tarjan maximal flow algorithm 24 + (contributed by Guyslain Naves) No more function min_capacity in 25 + the input interface. Renaming as follows: Flow.Goldberg -> 26 + Flow.Goldberg_Tarjan and Pack.goldberg -> Pack.goldberg_tarjan 27 + - new functors [WeakTopological] and [ChaoticIteration] to compute 28 + fixpoints with widening, following Bourdoncle's algorithms (contributed 29 + by Thibault Suzanne) 30 + 31 + # 1.8.7, April 12, 2016 32 + 33 + - fixed examples/demo.ml so that it also compiles with an installed OCamlGraph 34 + - [Components] fixed stack overflow with [scc] (patch by Albin Coquereau) 35 + - [Dominator] fixed stack overflow (patch by Albin Coquereau) 36 + - new functor [Path.Johnson] to compute all pairs of shortest paths 37 + using Johnson's algorithm (contributed by Mário Pereira) 38 + - fixed configuration on Windows (patch by Martin R. Neuhäußer) 39 + - new functor [Components.Undirected] to compute connected components 40 + - Graphviz: fixed printing of attribute BgcolorWithTransparency 41 + - * Prim, Nonnegative: function weight now has the more general type "edge -> t" 42 + (to be consistent with Path) 43 + - new module type Sig.WEIGHT (used in Path, Prim, and Nonnegative) 44 + - Fixpoint: do not catch Not_found raised by a user-provided function. 45 + - Adding folds to BFS. 46 + 47 + # 1.8.6, January 23, 2015 48 + 49 + - * Dominator: new functor [Make_graph] with may use graph building operations, 50 + while the old functor [Make] now only requires a read-only graph. 51 + Function [compute_all] and [compute_dom_graph] are now only defined in the 52 + new [Make_graph] functor. 53 + - Graphviz: support for additional polygonal-shapes 54 + - New module Clique (contributed by Giselle Reis) 55 + - Avoid ocamldoc error with OCaml 4.02 56 + - * Path: function weight now has the more general type "edge -> t" 57 + (contributed by Steffen Smolka) 58 + update your code by turning "weight l" into "weight (G.E.label e)" 59 + - installation: "make install-findlib" now uses DESTDIR when defined 60 + - Traverse: documentation is clarified: providing iterators over the roots of 61 + the graph is enough. 62 + - Imperative concreate (di)graph: fix bug of functions add_edge* of 63 + imperative concrete (di)graphs which appears when the added edge 64 + [e] was already in the graph [g] and one of the vertices of [e] is 65 + equal to another vertex of [g] (when using the user-defined 66 + equality [G.V.equal]), but not physically equal to it. This bug 67 + only occurs with OCaml version >= 4.0. 68 + - functions in modules Components, Dominator, Flow, Topological and 69 + Traverse now create smaller auxiliary hash tables 70 + - Graphviz: add the attribute `HtmlLabel to specify html strings. 71 + 72 + # 1.8.5, March 4, 2014 73 + 74 + - Graphviz: reverted to the old API where edges and vertices are 75 + given a single style attribute; but such attributes are collected 76 + and output in the DOT file into a list (thus allowing multiple 77 + style attributes) 78 + - fixed issue in ./configure with ocamlfind on Win32. 79 + - fixed compilation when laglgnomecanvas is missing (bug introduced in 1.8.4). 80 + - fixed more issues with 'make -j'. 81 + 82 + # version 1.8.4, February 4, 2014 83 + 84 + - fixed [Graphml] printer (contributed by Johannes Schauer) 85 + - Components: the components of [scc_list] are provided in the same order than 86 + the ones of [scc_array]. 87 + - fix compilation with 'make -j' 88 + - Graphviz: handle attribute penwidth on edges and vertices 89 + - also install graph.o and graph.cmxs 90 + - fixed installation with ocamlfind (thanks to Virgile Prevosto) 91 + - new functions [gnp] and [gnp_labeled] in module [Rand] to generate random 92 + graphs using the G(n,p) model (contributed by Thomas Aubry) 93 + - Prim's algorithm (in module [Prim]; not exported in [Pack]) 94 + (contributed by Thomas Aubry) 95 + - Graphviz: support for nested subgraphs. (Backward-incompatible change: 96 + add 'sg_parent = None' to obtain subgraphs whose parents are the main graph) 97 + - Graphviz: edges and vertices can now receive multiple styles. 98 + (Backward-incompatible change: constructors `Style now require a 99 + list as argument) 100 + - Graphviz: new vertex style 'rounded' 101 + - Merge: fixed bug with vertices with no incoming nor outcoming edge. 102 + - fixed compilation issue with OCaml 3.12.1 103 + 104 + # 1.8.3, April 17, 2013 105 + 106 + - new module Merge implementing several different merges of vertices and 107 + edges into a graph (contributed by Emmanuel Haucourt) 108 + - fixed DOT parser (contributed by Alex Reece) 109 + - Topological: fixed bug in presence of disjoint cycles; new implementation 110 + - new module [Graphml] to export graphs into the graphml format 111 + (contributed by Pietro Abate) 112 + - Builder.S now contains functions remove_*. 113 + - modified Fixpoint module so that it also works with unlabeled 114 + graphs, break backward compatibility yet (contributed by Markus W. Weissmann) 115 + - support of lablgtk2 installed with findlib (contributed by B. Monate) 116 + - new module [Dominator] to compute dominators 117 + (contributed by David Brumley and Ivan Jager) 118 + 119 + # 1.8.2, May 12, 2012 120 + 121 + - new module [Path.BellmanFord] implementing Bellman-Ford algorithm 122 + (contributed by Yuto Takei) 123 + - new module Contraction implementing edge contraction 124 + (contributed by Markus W. Weissmann) 125 + - Gmap: new function [filter_map] (contributed by Markus W. Weissmann) 126 + - Topological: fix bug when a cycle depends on another cycle. That breaks 127 + compatibility: the input graph must implement Sig.COMPARABLE instead of 128 + Sig.HASHABLE 129 + - new module Topological.Make_stable to iterate over a graph in a **stable** 130 + topological order. Stable means that the provided ordering only depends on 131 + the graph topology and on the user's vertices ordering. 132 + - new module Leaderlist to compute the leader list algorithm (see the Dragon) 133 + (contributed by Markus W. Weissmann <markus.weissmann@in.tum.de>) 134 + 135 + # 1.8.1, October 17, 2011 136 + 137 + - module Gmap now has a signature for edges (E_SRC) compatible with 138 + Sig, so that it is easier to apply functor Gmap.Edge 139 + (contributed by Markus W. Weissmann <markus.weissmann@in.tum.de>) 140 + - new module Fixpoint to compute fixpoints using the work-list 141 + algorithm, e.g. for data flow analysis 142 + (contributed by Markus W. Weissmann <markus.weissmann@in.tum.de>) 143 + 144 + # 1.8, October 4, 2011 145 + 146 + - removed ocamlyacc shift/reduce conflict in dot_parser.mly 147 + (patch contributed by Till Varoquaux) 148 + - Dgraph: Correct height and width-related problems with text 149 + - DGraph: many bug fixes. Patch by Benjamin Monate 150 + - Sig.G: new function [find_all_edges] for each graph implementation 151 + - Oper: fixed bug with function [intersect]: now use G.E.compare instead of (=) 152 + - fixed "make install-findlib" 153 + 154 + # 1.7, February 23, 2011 155 + 156 + - Makefile: fixed bug when installing ocamlgraph with ocamlfind 157 + - DGraph: fixed bug with colors on some windows manager 158 + - Configure: fixed issue with automatic detection of extension under 159 + Windows/Mingw 160 + 161 + # 1.6, December 13, 2010 162 + 163 + - DGraph: new viewer mode (called `tree') which focus on a subset part of the 164 + graph centered on a given node 165 + - Graphviz: fixed bug with attribute `Constraint (was `Constraints) (patch by 166 + Boris Yakobowski) 167 + - DGraph: fixed font size issue when zooming 168 + - DGraph: now interpret text anchors and espaced sequences correctly 169 + - DGraph: offer possibility to disable the default callbacks on nodes 170 + - 'make -j' works again 171 + - new implementation Persistent.Digraph.ConcreteBidirectionalLabeled 172 + - new implementation Persistent.Digraph.ConcreteBidirectional 173 + - Makefile: bug fixed when ocamlc (resp. ocamlopt) and ocamlc.opt 174 + (resp. ocamlopt.opt) are unconsistent 175 + 176 + # 1.5, April 29, 2010 177 + 178 + - Makefile: bug fixed when installing ocamlgraph with ocamlfind 179 + (patch by Virgile Prevosto) 180 + - DGraph: new method set_zoom_padding in DgraphView.view 181 + - Traverse.Dfs.has_cycle: can now be used on undirected graphs as well, 182 + and is now tail recursive 183 + - DGraph: handle dotted ellipse 184 + 185 + # 1.4, March 24, 2010 186 + 187 + - new function [clear] for imperative graphs 188 + - new implementation Imperative.Digraph.ConcreteBidirectionalLabeled 189 + (contribution of Jaap Boender) 190 + - Dgraph displays graphs faster 191 + - DGraph: several bugs fixed 192 + - DGraph: several API changes 193 + (may break compatibility with existing development) 194 + 195 + # 1.3, October 2, 2009 196 + 197 + - Oper.mirror: undirected graphs are not copied anymore 198 + - Oper.mirror: fixed bug (isolated vertices were lost) 199 + - Graphviz: new signature GraphWithDotAttrs 200 + - Improvements of Dgraph 201 + - Configure: better test for detecting lablgtk 202 + - OcamlGraph is now installed by default in `ocamlc -where`/ocamlgraph 203 + - Viewgraph is now packed in a single module Viewgraph (break compatibility 204 + with previous version) 205 + - Dgraph is now packed in a single module Dgraph (break compatibility with 206 + previous version) 207 + - Makefile: fixed bug when the installation directory of binaries does not 208 + exist 209 + - Makefile: fixed bug of ocamldep under Windows 210 + 211 + # 1.2, August 31, 2009 212 + 213 + - experimental: new GTK-based graph viewer called Dgraph 214 + (viewGraph is now deprecated) 215 + - added Delaunay.iter_triangles (not of use in Ocamlgraph, actually) 216 + 217 + # 1.1, June 23, 2009 218 + 219 + - added constraint "type E.label = unit" to unlabeled graph data structure 220 + - viewGraph: new module viewGraph_utils; fixed compilation (gtkInit 221 + was missing; patch by Mehdi Dogguy) 222 + - configure: fixed bug under Cygwin (patch by Julien Bernet) 223 + - configure: look for lablgnomecanvas.cmxa when compiling in native code 224 + - Makefile: fixed make install-findlib when lablgtk and/or 225 + lablgnomecanvas not installed (patch by Peter Hawkins) 226 + 227 + # 1.0, October 14, 2008 228 + 229 + - license: LGPL updated to version 2.1 230 + - ocamlgraph now requires ocaml 3.10 or higher 231 + - experimental: GTK-based graph viewer based on dot 232 + (contribution of Anne Pacalet) 233 + - Makefile: 234 + - fixed bug when lablgnomecanvas is not installed 235 + - fixed bug when ocamlfind is installed 236 + - patch to the build system for a DESTDIR (patch by Igor Galic) 237 + - "make -j" compliant 238 + - new function Blocks.after_unserialization in order to be able to safely 239 + serialize abstract vertices (see the FAQ) 240 + - Dot: 241 + - fixed bug in the parsing of attributes 242 + - fixed bug in the parsing of subgraphs (patch by Anne Pacalet) 243 + - Oper: fixed bug in intersect 244 + - Path: improved efficiency of Dijkstra 245 + - Topological: 246 + - fixed bug in Make.{iter,fold} 247 + - folding is now tail-recursive (patch by Michael Furr) 248 + 249 + # 0.99c, April 3rd, 2008 250 + 251 + - replicated a bug fix of Bitv (could not affect Matrix, though) 252 + - fixed DFS traversal in Traverse.Dfs.{prefix,prefix_component,iterator} 253 + 254 + # 0.99b, December 18th, 2007 255 + 256 + - fixed link bug with ocaml 3.09 257 + (see http://caml.inria.fr/mantis/view.php?id=4124) 258 + 259 + # 0.99a, November 21st, 2007 260 + 261 + - fixed bug in Makefile when lablgtk2 is not installed 262 + - Sig.I.create and Sig_pack.create are now of type ?size:int -> unit -> t 263 + (instead of unit -> t) to indicate an initial guess on the graph size 264 + 265 + # 0.99, June 27th, 2007 266 + 267 + - experimental: GTK-based graph editor based on hyperbolic geometry; 268 + to build it and test it, cd to editor/ and type make 269 + - [Components.Make] functor: function [scc] as a new profile and a 270 + more precise specification. New function [scc_array]. 271 + - fixed configure to set ocaml's standard library using "ocamlc -where" 272 + - new module Dot to parse files in Graphviz's DOT format 273 + - slight change in the license (no more clause 6 of the LGPL; see LICENSE) 274 + - new module Strat implementing simple game strategies 275 + - Graphviz: little refactoring and improved documentation 276 + 277 + # 0.98, Sep 27th, 2006 278 + 279 + - rename Sig.IA to Sig.IM 280 + - add subgraph support in Graphviz 281 + (breaks ascendent compatibility if you use Graphviz: by default add 282 + let get_subgraph _ = None 283 + in the argument of Graphviz.Dot and Graphviz.Neato) 284 + 285 + # 0.97, July 20th, 2006 286 + 287 + - fixed compilation under Windows/Cygwin (contributed by Denis Berthod) 288 + - fixed bug with escaped string in Graphviz 289 + 290 + # 0.96, May 2nd, 2006 291 + 292 + - new demo program: sudoku.ml (solving the Sudoku using graph coloring) 293 + - new module Coloring for (rather brute force) graph coloring 294 + - new implementation Imperative.Digraph.ConcreteBidirectional 295 + that maintains the set of ingoing edges for each node, thus improving the 296 + efficiency of functions such as iter_pred, pred, in_degree, etc. 297 + (contributed by Ted Kremenek) 298 + 299 + # 0.95, November 2nd, 2005 300 + 301 + - compatibility with ocaml 3.09 302 + - new module Path.Check to check for paths 303 + 304 + # 0.94, July 6th, 2005 305 + 306 + - new module Gml to parse and print graphs in GML file format 307 + (see http://www.infosun.fmi.uni-passau.de/Graphlet/GML) 308 + corresponding functions parse_gml_file and print_gml_file in Pack 309 + - added display_with_gv in Pack 310 + - improved implementation of Unionfind (patch by Marc Lasson) 311 + 312 + # 0.93, March 31st, 2005 313 + 314 + - fixed bug in Rand (integer overflow causing Invalid_argument "random"); 315 + improved code in Rand 316 + - bug fixed in the META file 317 + - add find_edge in Sig.G (and so in all graph implementations) 318 + 319 + # 0.92, January 18th, 2005 320 + 321 + - fixed escaped labels in Graphviz output (patch by Boris Yakobowski) 322 + - new Graphviz option OrderingOut (patch by Boris Yakobowski) 323 + - fixed sharing bugs in Oper (patch by Boris Yakobowski) 324 + - fixed bug in nb_edges for undirected graphs 325 + - improvement of iterators of undirected concrete graphs 326 + 327 + # 0.91, December 16th, 2004 328 + 329 + - more precise specifications of remove_edge and shortest_path. 330 + - bug fixed in mem_edge_e of labelled graphs 331 + - generation of random graphs improved 332 + - add Rand.Make and Rand.Planar.Make (generic functors) 333 + - add signatures Persistent.S and Imperative.S 334 + 335 + # 0.90, November 30th, 2004 336 + 337 + - graph.cma graph.cmxa 338 + - version.ml and META files are now writable 339 + - add interfaces Sig.VERTEX and Sig.EDGE 340 + - "sig.ml" and "sig_pack.ml" removed; ocamlgraph now requires ocaml 3.08.0 341 + - improvement of Minsep 342 + - add Components.scc_list 343 + - Oper.Neighbourhood replaces Neighborhood 344 + - Gmap replaces Copy 345 + - add types Sig_pack.vertex and Sig_pack.edge 346 + - fixed bug in Ford-Fulkerson: G.V.equal instead of = in two asserts 347 + 348 + # 0.81, July 13th, 2004 349 + 350 + - compatibility with ocaml 3.08 351 + - Oper.Choose.choose_edge: choose an edge in a graph 352 + - add types Sig.G.edge and Sig.G.vertex resp. equal to Sig.G.V.t and Sig.G.E.t 353 + - fixed typos in invalid_arg arguments (in Bitv) 354 + 355 + # 0.80, June 28th, 2004 356 + 357 + - major contribution by Matthieu Sozeau and Pierre-Loïc Garoche. 358 + New modules are: 359 + - Md: Minimum Degree algorithm 360 + - Cliquetree: the clique tree of a graph 361 + - Mcs_m: Maximal Cardinality Search (MCS-M) algorithm 362 + - Minsep: Minimal separators of a graph 363 + - Neighborhood: compute the neighborhood of a vertex/some vertices 364 + - Oper.Difference: subgraphs induced by the elimination of some vertices 365 + - Oper.Choose: choose a vertex in a graph 366 + - Copy: graphs copying 367 + - Util.DataV: create a vertex type with data attached to it 368 + - out_degree: raises Invalid_argument if v not in g (instead of Not_found) 369 + - Pack.Graph: golberg/ford_fulkerson fail ("not a directed graph") 370 + 371 + # 0.70, Feb 27th, 2004 372 + 373 + - Makefile.in: dependences ("make -j" works) 374 + - union and intersection (see Oper.S.union and Oper.S.intersection) 375 + - Golberg/Ford_fulkerson algorithms in a single module Flow 376 + - step-by-step iterators in Traverse.{Dfs,Bfs} 377 + - Ford_fulkerson: maxflow now returns a flow function over edges 378 + 379 + # 0.60, Feb 18th, 2004 380 + 381 + - fixed bug in Ford-Fulkerson 382 + - random planar graphs (see Rand.Planar) 383 + - Delaunay triangulation (see Delaunay) 384 + - implementations with adjacency matrices (see Imperative.Matrix) 385 + - operations on predecessors for undirected graphs optimized 386 + - Traverse.Dfs.{prefix,prefix_component} optimized (now tail recursive) 387 + 388 + # 0.50, Feb 4th, 2004 389 + 390 + - first release 391 + 392 +
-31
INSTALL.adoc
··· 1 - 2 - = How to create the library ? 3 - 4 - You need Objective Caml >= 3.10.2 to compile this library. 5 - 6 - Configure with 7 - 8 - autoconf 9 - ./configure 10 - 11 - Compile with 12 - 13 - make 14 - 15 - Install (as root if needed) with 16 - 17 - make install 18 - 19 - To install somewhere else, with a different path prefix, use instead 20 - 21 - make DESTDIR=/another/place install 22 - 23 - findlib users may also do 24 - 25 - make install-findlib 26 - 27 - == How to create the documentation ? 28 - 29 - create a local documentation with 30 - 31 - make doc
+28
INSTALL.md
··· 1 + 2 + The simplest way to install OCamlGraph is via opam. 3 + 4 + If instead you choose to compile OCamlGraph from sources, 5 + the simplest way is to use `dune`. 6 + 7 + Otherwise, you can still use the old way: 8 + - Configure with 9 + ``` 10 + autoconf 11 + ./configure 12 + ``` 13 + - Compile with 14 + ``` 15 + make 16 + ``` 17 + - Install (as root if needed) with 18 + ``` 19 + make install 20 + ``` 21 + To install somewhere else, with a different path prefix, use instead 22 + ``` 23 + make DESTDIR=/another/place install 24 + ``` 25 + findlib users may also do 26 + ``` 27 + make install-findlib 28 + ```
-68
README.adoc
··· 1 - = OCamlgraph 2 - 3 - OCamlgraph is a graph library for Ocaml. Its contribution is three-fold: 4 - 5 - 1. It provides an easy-to-use graph implementation together with several 6 - operations and algorithms over graphs, in Graph.Pack.Digraph. 7 - It is a reasonably efficient imperative data structure for directed graphs 8 - with vertices and edges labeled with integers. 9 - + 10 - Have a look at this module first in order to get an overview of what 11 - this library provides. See also `demo.ml`. 12 - 13 - 2. Then OCamlgraph provides several other graph implementations for those 14 - not satisfied with the one above. Some are persistent (immutable) and other 15 - imperative (mutable). Some are directed and other are not. 16 - Some have labels for vertices, or labels for edges, or both. 17 - Some have abstract types for vertices. etc. 18 - + 19 - See interface Sig for the graph signatures and modules Persistent and 20 - Imperative for the implementations. 21 - + 22 - These implementations are written as functors: you give the types of 23 - vertices labels, edge labels, etc. and you get the data structure as a 24 - result. 25 - 26 - 3. Finally, OCamlgraph provides several classic operations and algorithms 27 - over graphs. They are also written as functors i.e. independently of the 28 - data structure for graphs. One consequence is that you can define your own 29 - data structure for graphs and yet re-use all the algorithms from this 30 - library -- you only need to provide a few operations such as iterating over 31 - all vertices, over the successors of a vertex, etc. 32 - 33 - 34 - == How to link with OCamlgraph 35 - 36 - You can use the `ocamlgraph` ocamlfind package: 37 - 38 - ocamlfind ocamlopt -package ocamlgraph ... 39 - 40 - (To produce an executable, also add the `-linkpkg` option.) 41 - 42 - If you want to invoke the compiler directly, OCamlgraph is packaged as 43 - a single module `Graph`. Linking is done as follows: 44 - 45 - bytecode:: 46 - 47 - ocamlc graph.cma <other files> 48 - 49 - native code:: 50 - 51 - ocamlopt graph.cmxa <other files> 52 - 53 - == Examples 54 - 55 - You'll find examples of OCamlgraph use in subdirectory examples/ 56 - (demo.ml, demo_planar.ml, color.ml, etc.). You can compile these 57 - programs with `make examples`. Corresponding binaries are produced in 58 - subdirectory bin/. You can also build them individually, e.g. `make 59 - bin/demo.opt` compiles examples/demo.ml. 60 - 61 - 62 - == Bug reports 63 - 64 - Bug reports can be sent to 65 - 66 - Sylvain Conchon <sylvain.conchon@lri.fr> 67 - Jean-Christophe Filliatre <filliatr@lri.fr> 68 - Julien Signoles <julien.signoles@cea.fr>
+48
README.md
··· 1 + # OCamlgraph 2 + 3 + OCamlgraph is a graph library for Ocaml. Its contribution is three-fold: 4 + 5 + 1. It provides an easy-to-use graph implementation together with several 6 + operations and algorithms over graphs, in Graph.Pack.Digraph. 7 + It is a reasonably efficient imperative data structure for directed graphs 8 + with vertices and edges labeled with integers. 9 + 10 + Have a look at this module first in order to get an overview of what 11 + this library provides. See also `demo.ml`. 12 + 13 + 2. Then OCamlgraph provides several other graph implementations for those 14 + not satisfied with the one above. Some are persistent (immutable) and other 15 + imperative (mutable). Some are directed and other are not. 16 + Some have labels for vertices, or labels for edges, or both. 17 + Some have abstract types for vertices. etc. 18 + 19 + See interface Sig for the graph signatures and modules Persistent and 20 + Imperative for the implementations. 21 + 22 + These implementations are written as functors: you give the types of 23 + vertices labels, edge labels, etc. and you get the data structure as a 24 + result. 25 + 26 + 3. Finally, OCamlgraph provides several classic operations and algorithms 27 + over graphs. They are also written as functors i.e. independently of the 28 + data structure for graphs. One consequence is that you can define your own 29 + data structure for graphs and yet re-use all the algorithms from this 30 + library -- you only need to provide a few operations such as iterating over 31 + all vertices, over the successors of a vertex, etc. 32 + 33 + 34 + ## Documentation 35 + 36 + https://backtracking.github.io/ocamlgraph/ 37 + 38 + 39 + ## Examples 40 + 41 + You'll find examples of OCamlgraph use in subdirectory examples/ 42 + (demo.ml, demo_planar.ml, color.ml, etc.). 43 + 44 + 45 + ## Bug reports 46 + 47 + https://github.com/backtracking/ocamlgraph/issues 48 +
+2 -2
TODO.adoc TODO.md
··· 10 10 only Imperative.Digraph.ConcreteBidirectional exists at this day. 11 11 - Provide generic marks (instead of only integer marks) 12 12 13 - == DGraph 13 + ## DGraph 14 14 15 - === mode Tree: 15 + ### mode Tree 16 16 17 17 - texte trop bas 18 18 - texte multi-ligne