caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* [Caml-list] [ANN] codept 0.9: an alternative dependency analyzer for ocaml projects
@ 2017-02-20 10:25 octachron
  2017-02-20 17:29 ` Gerd Stolpmann
  0 siblings, 1 reply; 2+ messages in thread
From: octachron @ 2017-02-20 10:25 UTC (permalink / raw)
  To: Caml-list

Dear all,

It is my pleasure to announce the release on opam of codept's first 
alpha version:
codept is a dependency analyzer for OCaml projects and an alternative to 
ocamldep: https://github.com/Octachron/codept .


Compared to ocamldep, codept major features are:

     − whole project analysis
     − extensive warning and error messages
     − uniform handling of delayed alias dependencies (aka "-no-alias-deps")
     − experimental full dependencies, when dependencies up to 
transitive closure are not precise enough

Both ocamldep and codept compute an over-approximation of the dependency 
graph of OCaml projects. However, codept uses whole project analysis to 
reduce the number of fictitious dependencies inferred at the project 
scale, whereas ocamldep is, by design, limited to local file-by-file 
analysis.

Consequently, bugs notwithstanding, codept computes an exact dependency 
graph in any situation that does not involve unknown external modules or 
first class modules, and is still reliable in some standard use cases of 
first class modules.

Moreover, codept will emit warning messages any time it encounters a 
source of potential inaccuracies in the dependency graph, thus ensuring 
that computed dependencies are always exact in the absence of warning 
messages.

Another important point is that codept's whole project analysis feature 
makes it possible to handle uniformly the delayed dependency aspect of 
module aliases introduced by the "-no-alias-deps" option.

At last, in situation where dependencies up to transitive closure are 
not precise enough, codept's experimental "-expand-deps" option can 
track more precisely type aliases induced dependencies, making it easier 
to track all cmi files required to compile a given file for instance.

Basic performance measures indicate that the average time increase when 
compared to ocamldep.opt ranges between 10% to 50%.

Codept can be used directly as a drop-in replacement to ocamldep. 
However, to be fully effective codept needs to be feed information on 
the whole project. Consequently, some build systems require some 
adaptations. As a first step, codept is distributed with an ocamlbuild 
plugin subpackage that adapts ocamlbuild dependency computation to 
codept's needs. Integration with other build tools is still a work in 
progress.

More information is available at https://github.com/Octachron/codept .

− octachron



^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [Caml-list] [ANN] codept 0.9: an alternative dependency analyzer for ocaml projects
  2017-02-20 10:25 [Caml-list] [ANN] codept 0.9: an alternative dependency analyzer for ocaml projects octachron
@ 2017-02-20 17:29 ` Gerd Stolpmann
  0 siblings, 0 replies; 2+ messages in thread
From: Gerd Stolpmann @ 2017-02-20 17:29 UTC (permalink / raw)
  To: octachron, Caml-list

[-- Attachment #1: Type: text/plain, Size: 3540 bytes --]

This is really great. I'm now using more and more packed libraries, and
hence nested modules are much more frequent, and I think ocamldep is no
longer good enough in this world.

I figured out that you can often switch to codept using

OCAMLFIND_COMMANDS="ocamldep=codept" make

when ocamldep is invoked via ocamlfind.

My first testing results are positive. Thanks for this huge
contribution.

Gerd

Am Montag, den 20.02.2017, 11:25 +0100 schrieb octachron:
> Dear all,
> 
> It is my pleasure to announce the release on opam of codept's first 
> alpha version:
> codept is a dependency analyzer for OCaml projects and an alternative
> to 
> ocamldep: https://github.com/Octachron/codept .
> 
> 
> Compared to ocamldep, codept major features are:
> 
>      − whole project analysis
>      − extensive warning and error messages
>      − uniform handling of delayed alias dependencies (aka "-no-
> alias-deps")
>      − experimental full dependencies, when dependencies up to 
> transitive closure are not precise enough
> 
> Both ocamldep and codept compute an over-approximation of the
> dependency 
> graph of OCaml projects. However, codept uses whole project analysis
> to 
> reduce the number of fictitious dependencies inferred at the project 
> scale, whereas ocamldep is, by design, limited to local file-by-file 
> analysis.
> 
> Consequently, bugs notwithstanding, codept computes an exact
> dependency 
> graph in any situation that does not involve unknown external modules
> or 
> first class modules, and is still reliable in some standard use cases
> of 
> first class modules.
> 
> Moreover, codept will emit warning messages any time it encounters a 
> source of potential inaccuracies in the dependency graph, thus
> ensuring 
> that computed dependencies are always exact in the absence of
> warning 
> messages.
> 
> Another important point is that codept's whole project analysis
> feature 
> makes it possible to handle uniformly the delayed dependency aspect
> of 
> module aliases introduced by the "-no-alias-deps" option.
> 
> At last, in situation where dependencies up to transitive closure
> are 
> not precise enough, codept's experimental "-expand-deps" option can 
> track more precisely type aliases induced dependencies, making it
> easier 
> to track all cmi files required to compile a given file for instance.
> 
> Basic performance measures indicate that the average time increase
> when 
> compared to ocamldep.opt ranges between 10% to 50%.
> 
> Codept can be used directly as a drop-in replacement to ocamldep. 
> However, to be fully effective codept needs to be feed information
> on 
> the whole project. Consequently, some build systems require some 
> adaptations. As a first step, codept is distributed with an
> ocamlbuild 
> plugin subpackage that adapts ocamlbuild dependency computation to 
> codept's needs. Integration with other build tools is still a work
> in 
> progress.
> 
> More information is available at https://github.com/Octachron/codept
> .
> 
> − octachron
> 
> 
> 
-- 
------------------------------------------------------------
Gerd Stolpmann, Darmstadt, Germany    gerd@gerd-stolpmann.de
My OCaml site:          http://www.camlcity.org
Contact details:        http://www.camlcity.org/contact.html
Company homepage:       http://www.gerd-stolpmann.de
------------------------------------------------------------



[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 473 bytes --]

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2017-02-20 17:29 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-02-20 10:25 [Caml-list] [ANN] codept 0.9: an alternative dependency analyzer for ocaml projects octachron
2017-02-20 17:29 ` Gerd Stolpmann

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).