Previous week Up Next week

Hello

Here is the latest OCaml Weekly News, for the week of February 14 to 21, 2017.

  1. OCaml 4.05.0+beta1
  2. ocamlyacc missing from the beta
  3. codept 0.9: an alternative dependency analyzer for ocaml projects
  4. Ocaml Github Pull Requests
  5. Other OCaml News

OCaml 4.05.0+beta1

Archive: https://sympa.inria.fr/sympa/arc/caml-list/2017-02/msg00096.html

Damien Doligez announced:
The release of OCaml 4.05.0 will take place in a few weeks. We have created a
beta version to help you adapt your software to the new features ahead of the
release.

The source code is available at this address:

  https://github.com/ocaml/ocaml/archive/4.05.tar.gz

and the compiler is also available as the "4.05.0+beta1" and
"4.05.0+beta1+flambda" OPAM switches.

We want to know about all bugs. Please report them here:
  http://caml.inria.fr/mantis/bug_report_page.php
      

ocamlyacc missing from the beta

Archive: https://sympa.inria.fr/sympa/arc/caml-list/2017-02/msg00098.html

Sébastien Hinderer announced:
Sorry, the beta release for OCaml 4.05 that has just been published has
the bug that it does not install ocamlyacc.
This is due to an omission in PR #1033(*).

The bug has already been fixed by PR #1048(**) in OCaml's GitHub repository,
but a new release should be announced in the coming days.

Sorry for any inconvenience,

Sébastien.

(*) http://github.com/ocaml/ocaml/pull/1033
(**) http://github.com/ocaml/ocaml/pull/1048
      

codept 0.9: an alternative dependency analyzer for ocaml projects

Archive: https://sympa.inria.fr/sympa/arc/caml-list/2017-02/msg00113.html

octachron announced:
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 .
      
Gerd Stolpmann then said:
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.
      

Ocaml Github Pull Requests

Gabriel Scherer and the editor compiled this list:
Here is a sneak peek at some potential future features of the Ocaml
compiler, discussed by their implementers in these Github Pull Requests.

- A new check that 'let rec' bindings are well formed
  https://github.com/ocaml/ocaml/pull/556
- Use _mkgmtime64 instead of _mktime64 to implement Windows Unix.stat
  https://github.com/ocaml/ocaml/pull/861
- Ocamldep: -shared option
  https://github.com/ocaml/ocaml/pull/1045
- Add functions Unix.timegm and Unix.timelocal
  https://github.com/ocaml/ocaml/pull/1046
      

Other OCaml News

From the ocamlcore planet blog:
Here are links from many OCaml blogs aggregated at OCaml Planet,
http://ocaml.org/community/planet/.

Conex, establish trust in community repositories
 https://hannes.nqsb.io/Posts/Conex

Who maintains package X?
 https://hannes.nqsb.io/Posts/Maintainers

Jane Street Tech Talks: Verifying Puppet Configs
 https://blogs.janestreet.com/jane-street-tech-talks-verifying-puppet-configs/

Ezirmin : An easy interface to the Irmin library
 http://kcsrk.info/ocaml/irmin/crdt/2017/02/15/an-easy-interface-to-irmin-library/

ANN: parallpairs
 http://examachine.net/blog/ann-parallpairs/
      

Old cwn

If you happen to miss a CWN, you can send me a message and I'll mail it to you, or go take a look at the archive or the RSS feed of the archives.

If you also wish to receive it every week by mail, you may subscribe online.


Alan Schmitt