From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail3-relais-sop.national.inria.fr (mail3-relais-sop.national.inria.fr [192.134.164.104]) by sympa.inria.fr (Postfix) with ESMTPS id 2CF6080143 for ; Wed, 31 May 2017 12:18:39 +0200 (CEST) Authentication-Results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=daniel.buenzli@erratique.ch; spf=None smtp.mailfrom=daniel.buenzli@erratique.ch; spf=None smtp.helo=postmaster@smtp.webfaction.com Received-SPF: None (mail3-smtp-sop.national.inria.fr: no sender authenticity information available from domain of daniel.buenzli@erratique.ch) identity=pra; client-ip=74.55.86.74; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="daniel.buenzli@erratique.ch"; x-sender="daniel.buenzli@erratique.ch"; x-conformance=sidf_compatible Received-SPF: None (mail3-smtp-sop.national.inria.fr: no sender authenticity information available from domain of daniel.buenzli@erratique.ch) identity=mailfrom; client-ip=74.55.86.74; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="daniel.buenzli@erratique.ch"; x-sender="daniel.buenzli@erratique.ch"; x-conformance=sidf_compatible Received-SPF: None (mail3-smtp-sop.national.inria.fr: no sender authenticity information available from domain of postmaster@smtp.webfaction.com) identity=helo; client-ip=74.55.86.74; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="daniel.buenzli@erratique.ch"; x-sender="postmaster@smtp.webfaction.com"; x-conformance=sidf_compatible IronPort-PHdr: =?us-ascii?q?9a23=3ArjhYTBLc7VpgGCNlONmcpTZWNBhigK39O0sv0rFi?= =?us-ascii?q?tYgXKvz9rarrMEGX3/hxlliBBdydsKMazbeJ++C4ACpbsMnH6ChDOLV3FDY7yu?= =?us-ascii?q?wu3DYcSPafDkP6KPO4JwcbJ+9lEGFfwnegLEJOE9z/bVCB6le77DoVBwmtfVEt?= =?us-ascii?q?fre9FYHdldm42P6v8JPPfQpImCC9YbRvJxmqsAndrMcbjI9jJ6oryhbEoGZDd+?= =?us-ascii?q?BKyW91P16ekRLx68Wq8JJ/7yhcvu8q+tJdX6n9Y6k3QrtUASg8PWwy+MPlqwTI?= =?us-ascii?q?QxGV5nsbXGUWkx5IDBbA4RrnQJr/sTb0u/Rk1iWCMsL4Ub47WTK576d2UxDokz?= =?us-ascii?q?sINyQ48G7MlMN9ir9QrQ+7qBx+x47UZ5yVNOZ7c6jAc94WWXZNU8BMXCFaHIiy?= =?us-ascii?q?c5UAAPYAPeZAronyuV0OrQelBQKxAO/j0yJEimPq0aE/1ekqDAPI0xE6H98Wvn?= =?us-ascii?q?rarMv7OqQPX+6yw6bH0TrNYO5N1Dfh6oXFcAwtrOuQUb9yd8fa1EkhFxnCjlWV?= =?us-ascii?q?sYHrMSma1uIMs2eF6+pvTf+ik3IhqwBwpjivx9onh47UiY0PzFDE9Dt2wIIvKd?= =?us-ascii?q?KjVU50f9ikEZpUtyGbLIZ5XNkiQ3tytyYmy70GoIO7czYQxJs7xx7ScvqKeJWG?= =?us-ascii?q?7BLkUeaeOzZ4hHR9db2hnRay61KvyvH9VsmtzVZFsDBJncXMtnwV0hzT69KHRe?= =?us-ascii?q?Fy/ki/wzqP1gfT5vlLIUA1iarbK4MhzaUqmpUPtkTDGyn7k1j1gq+Obkgp+Oel?= =?us-ascii?q?5/7nb7jmvJORNI55hhv8P6khgsCzHOo1PhUUU2SG5Oiwyafv8VD9TbhFlPE6j7?= =?us-ascii?q?XVvZbHLsoBvKG5GRVa0oM75ha/ETim1NMYkGEcLFJAZBKHl5LlOl/QL//jA/ew?= =?us-ascii?q?mUijkCtqx/DBOL3tGInCLn/GkLv5fLZ97VBTyBYrwN1d6J9YELEMLfLpVkLytd?= =?us-ascii?q?HUFB00PgOsz+biEtp914ceWWyVAq+eNaPfqUKH6fgpI+mNeoAVvCzxJOM45/Hw?= =?us-ascii?q?i384mFsdfaiy0JQJcnC4BO5pI1mYYXr1n9cOD30GsRY+TODykl2NTSZTZ2quX6?= =?us-ascii?q?I7/jw7DJypDYndSYC2m7yOxiG7E4ZXZ2BHD1CDCm3oeJ+eV/cNbiKSOM5hnSYe?= =?us-ascii?q?WbivUY8rzQuuuxPiy7p7MurU/TUVuo7529hw4+3fjBUy9T1vD8SByGyNVGF1nm?= =?us-ascii?q?YQRzAsxqx/oEp9yk2C0adimfBYG8ZTtLt1VVIdHpfZy6ReCsvuElbKd9KNDVKn?= =?us-ascii?q?WcmOADcrT9t3zcVYMGhnHND3ohnF3ieuNJWBka6PBdRg/qva3nX1YcxgxnDU0K?= =?us-ascii?q?gJgkM8S9dOLHCrwKV/oVuAT7XVmlmUwv75PZ8X2zTAoSLalTKD?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0DtXAA/ly5Zh0pWN0pchGcDgQoBg3GLC?= =?us-ascii?q?5ArmFgsgkKDNoMiFAEBAQEBAQEBAQEBEgEBAQoLCQgoL4IzJAGCak0JNQImAkk?= =?us-ascii?q?WG4oiEKtUgiaLUQwmgQuHNoITiQcvgjEFniN5hieDNYhegXtVhGeDORCGagKLW?= =?us-ascii?q?Yh1NoErhmKBcHWJUwEBAQ?= X-IPAS-Result: =?us-ascii?q?A0DtXAA/ly5Zh0pWN0pchGcDgQoBg3GLC5ArmFgsgkKDNoM?= =?us-ascii?q?iFAEBAQEBAQEBAQEBEgEBAQoLCQgoL4IzJAGCak0JNQImAkkWG4oiEKtUgiaLU?= =?us-ascii?q?QwmgQuHNoITiQcvgjEFniN5hieDNYhegXtVhGeDORCGagKLWYh1NoErhmKBcHW?= =?us-ascii?q?JUwEBAQ?= X-Spam-Status: Yes X-IronPort-AV: E=Sophos;i="5.38,423,1491256800"; d="scan'208";a="226853236" Received: from mail6.webfaction.com (HELO smtp.webfaction.com) ([74.55.86.74]) by mail3-smtp-sop.national.inria.fr with ESMTP/TLS/DHE-RSA-AES256-SHA; 31 May 2017 12:18:37 +0200 Received: from [192.168.198.61] (gw-eduroam.dar.cam.ac.uk [131.111.194.10]) by smtp.webfaction.com (Postfix) with ESMTP id C7BED20793AD; Wed, 31 May 2017 10:18:33 +0000 (UTC) Date: Wed, 31 May 2017 11:18:32 +0100 From: =?utf-8?Q?Daniel_B=C3=BCnzli?= To: OCaml List Cc: Thomas Refis , Leo White , Jeremy Yallop , David Sheets , Fabrice Le Fessant Message-ID: X-Mailer: sparrow 1.6.4 (build 1178) MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Content-Disposition: inline Subject: [Caml-list] [ANN] Odig 0.0.2 Hello, It's my pleasure to announce odig 0.0.2. odig is an ISC licensed library and command line tool to mine installed OCaml packages. It supports package distribution documentation and metadata lookups and generates cross-referenced API documentation for your opam switches. Homepage: http://erratique.ch/software/odig Sample output: http://docs.mirage.io The two main features of this release are: # odoc generated API documentation The default documentation backend was changed from `ocamldoc` to `odoc` [0]. Using `odoc` notably provides inter-package cross-references and correct output on functor heavy code bases. As with the `ocamldoc` backend, odig remains a dumb command driver, all the hard API doc generation work is being done by `odoc` on the `cmt[i]` files and credits should go to: * Thomas Refis and Leo White for the current `odoc` incarnation. * Fabrice Le Fessant for designing and implementing the essential `cmt[i]` files. * David Sheets, Leo White and Jeremy Yallop for working through a lot of the initial hard details and implementing earlier prototypes. To get API documentation for the packages installed in your current opam switch the following sequence of commands should be sufficient: opam install odoc ocaml-manual odig odig odoc odig doc If you are a packager consult `odig help packaging` to understand how `odig` generates API documentation using `odoc` and other conventions to provide a good odig experience to the users of your package. This is the last release of `odig` that will provide the `ocamldoc` backend. If you are interested in improving `odoc`'s output by comparing with what ocamldoc gave on your package this is the time to do it. This can be done here: http://docs.mirage.io/ http://docs.mirage.io/_ocamldoc/ or, if your package is not listed there with `odig ocamldoc PKG && odig odoc PKG && odig doc --compare PKG`. File any issue on the `odoc` tracker, but please make sure it's not already reported, we are already aware of some problems. [0] https://github.com/ocaml-doc/odoc # Experimental data-driven toplevel loaders This release adds experimental toplevel loaders. The idea here is to kill the general need for `.ocamlinit` files in your projects and not bother you having to know in whichever package and/or archive a particular module you need might be tucked. In order to load any toplevel module `M` simply: #use "odig.top";; Odig.load "M";; this will lookup in your build directory and/or in the package install base and load appropriate dependencies by simply consulting the OCaml compiled object files (no `META` file are involved in this process). The loaders are not perfect yet, the main *current* limitations are: 1. No support to resolve ambiguities, if there is one you can't load. 2. No support to mandate specific load order for modules that rely on side-effects (this will be achieved via opam v2 extension fields). 3. For now they are also too slow on some modules with many deps (e.g. `Odig.load "Core"`). However the load time is entirely reasonable on small and medium scale libraries (e.g. `Odig.load "Irmin_mem"`). The very first load might be a bit slow though. See: http://erratique.ch/software/odig/doc/Odig.html#toplevel https://github.com/dbuenzli/odig/issues/10 and `Odig.help ()` for more details. Except for failures due to ambiguous resolutions, feedback and concrete failures/problems report are welcome on `odig`'s issue tracker. Best, Daniel