This is an automated email from the git hooks/post-receive script. zack pushed a commit to branch master in repository cudf.
commit 6289681d8a273d1c477d7814ac707af2e648fa8b Author: Stefano Zacchiroli <z...@upsilon.cc> Date: Mon Mar 30 19:44:16 2015 +0200 Imported Upstream version 0.8 --- ChangeLog | 8 ++++++++ Makefile | 1 + Makefile.config | 2 +- cudf.ml | 15 ++++++++------- cudf.mli | 5 +++++ cudf_parser.ml | 17 ++++++++++++++--- 6 files changed, 37 insertions(+), 11 deletions(-) diff --git a/ChangeLog b/ChangeLog index d01e8a1..31c5d3a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2015-03-31 Stefano Zacchiroli <z...@upsilon.cc> + * ALL release 0.8 + * Cudf: performance improvement by allocating larger hashtbl + * Cudf: expose empty_universe + (Thanks to Pietro Abate for the above 2 patches) + * Makefile: inhibit parallel build (thanks to Roberto Di Cosmo) + * Cudf_parser: prevent in_channel leaks when using from_file + 2014-04-29 Stefano Zacchiroli <z...@upsilon.cc> * ALL release 0.7 * Cudf_checker: do not report as multi-upgrade error a package diff --git a/Makefile b/Makefile index b03c6c8..f503631 100644 --- a/Makefile +++ b/Makefile @@ -130,3 +130,4 @@ world: all opt c-lib c-lib-opt doc .PHONY: all opt world clean top-level headers test tags install uninstall .PHONY: dep rpm c-lib c-lib-opt dist doc +.NOTPARALLEL: diff --git a/Makefile.config b/Makefile.config index 7c4b9ed..6f69c17 100644 --- a/Makefile.config +++ b/Makefile.config @@ -1,4 +1,4 @@ -VERSION = 0.7 +VERSION = 0.8 export DESTDIR = diff --git a/cudf.ml b/cudf.ml index 3ab7cdd..d82359d 100644 --- a/cudf.ml +++ b/cudf.ml @@ -106,12 +106,12 @@ let default_request = { req_extra = [] ; } -let empty_universe () = - { id2pkg = Hashtbl.create 1023 ; - uid2pkgs = Hashtbl.create 1023; - id2uid = Hashtbl.create 1023; - name2pkgs = Hashtbl.create 1023 ; - features = Hashtbl.create 1023 ; +let empty_universe ?(size=1023) () = + { id2pkg = Hashtbl.create size ; + uid2pkgs = Hashtbl.create size; + id2uid = Hashtbl.create size; + name2pkgs = Hashtbl.create size; + features = Hashtbl.create size; univ_size = 0 ; inst_size = 0 ; } @@ -184,7 +184,8 @@ let remove_package univ id = end let load_universe pkgs = - let univ = empty_universe () in + let size = List.length pkgs in + let univ = empty_universe ~size () in let uid = ref 0 in List.iter (fun pkg -> diff --git a/cudf.mli b/cudf.mli index 9bddf66..93fee10 100644 --- a/cudf.mli +++ b/cudf.mli @@ -98,6 +98,11 @@ type cudf = preamble * universe * request status *) type solution = preamble * universe +(** return an empty universe. + + @param size represents the initial size of the universe (default: 1023) *) +val empty_universe : ?size:int -> unit -> universe + (** @raise Constraint_violation when a global CUDF constraint is violated in the given package list *) val load_universe : package list -> universe diff --git a/cudf_parser.ml b/cudf_parser.ml index 48d7ecd..5b4e966 100644 --- a/cudf_parser.ml +++ b/cudf_parser.ml @@ -1,6 +1,6 @@ (*****************************************************************************) (* libCUDF - CUDF (Common Upgrade Description Format) manipulation library *) -(* Copyright (C) 2009-2012 Stefano Zacchiroli <z...@upsilon.cc> *) +(* Copyright (C) 2009-2015 Stefano Zacchiroli <z...@upsilon.cc> *) (* *) (* This library is free software: you can redistribute it and/or modify *) (* it under the terms of the GNU Lesser General Public License as *) @@ -20,6 +20,10 @@ type cudf_parser = { lexbuf: Lexing.lexbuf ; fname: string ; mutable typedecl: Cudf_conf.stanza_typedecl ; + priv_in_chan: in_channel option; + (* in_channel to be closed upon close() invocation, to avoid leaving up to + OCaml GC when to close it. Will be set only if it is Cudf_parser itself + who has created the in_channel, e.g., upon Cudf_parser.from_file *) } type loc_map = (string * loc) list @@ -31,6 +35,7 @@ let from_in_channel ?(typedecl=Cudf_conf.stanza_typedecl) ic = { lexbuf = Lexing.from_channel ic ; typedecl = typedecl ; fname = "" ; + priv_in_chan = None ; } let from_IO_in_channel ?(typedecl=Cudf_conf.stanza_typedecl) ic = @@ -38,18 +43,24 @@ let from_IO_in_channel ?(typedecl=Cudf_conf.stanza_typedecl) ic = { lexbuf = Lexing.from_function f; typedecl = typedecl ; fname = "" ; + priv_in_chan = None ; } let from_file ?(typedecl=Cudf_conf.stanza_typedecl) fname = (* Syntax error with OCaml 3.10.2: * { from_in_channel ?typedecl (open_in fname) * with fname = fname } *) - { lexbuf = Lexing.from_channel (open_in fname) ; + let ic = open_in fname in + { lexbuf = Lexing.from_channel ic ; typedecl = typedecl ; fname = fname ; + priv_in_chan = Some ic ; } -let close p = () +let close p = + match p.priv_in_chan with + | None -> () + | Some ic -> close_in ic let parse_stanza p = try -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-ocaml-maint/packages/cudf.git _______________________________________________ Pkg-ocaml-maint-commits mailing list Pkg-ocaml-maint-commits@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-ocaml-maint-commits