Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

better than ocamldep? #162

Open
UnixJunkie opened this issue Feb 20, 2017 · 0 comments
Open

better than ocamldep? #162

UnixJunkie opened this issue Feb 20, 2017 · 0 comments

Comments

@UnixJunkie
Copy link

Today on caml-list:
[ANN] codept 0.9: an alternative dependency analyzer for ocaml projects

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant