Hello, Here is the latest OCaml Weekly News, for the week of May 30 to June 06, 2017.
1) qcheck 0.6 2) Odig 0.0.2 3) deprecating opam 1.2.0 4) OCaml hacking evening in Cambridge, (MA, *US*) on June 6th 5) findlib-1.7.3 6) From the OCaml discourse 7) Ocaml Github Pull Requests 8) Other OCaml News ======================================================================== 1) qcheck 0.6 Archive: <https://sympa.inria.fr/sympa/arc/caml-list/2017-05/msg00130.html> ------------------------------------------------------------------------ ** Simon Cruanes announced: I have the please to announce the release of QCheck 0.6. QCheck is a feature rich property testing library inspired from Haskell's QuickCheck. This new release contains several significant improvements, thanks to the help of Guillaume Bury and Jan Midtgaard. - better generation of functions, with proper printing and shrinking. - functions to leverage generators to produce values satisfying a predicate. - colorful runners. - better shrinkers and random generators. - gathering basic statistics and optionally displaying an histogram of sampled values. QCheck is available on opam. Release URL: <https://github.com/c-cube/qcheck/releases/tag/0.6> Documentation: <https://c-cube.github.io/qcheck/0.6/> ======================================================================== 2) Odig 0.0.2 Archive: <https://sympa.inria.fr/sympa/arc/caml-list/2017-05/msg00133.html> ------------------------------------------------------------------------ ** Daniel Bünzli announced: 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. ======================================================================== 3) deprecating opam 1.2.0 Archive: <https://sympa.inria.fr/sympa/arc/caml-list/2017-06/msg00002.html> ------------------------------------------------------------------------ ** Anil Madhavapeddy announced: [ this is cross-posted from <https://discuss.ocaml.org/t/rfc-deprecating-opam-1-2-0/332> ] This is all for remaining users of OPAM 1.2.0, to see if it can be actively deprecated in favour of OPAM 1.2.2 and higher. ### Why deprecate opam 1.2.0 OPAM 1.2.0 was released in October 2014, and saw rapid uptake from the community. We did some rapid bugfixing to solve common problems, and OPAM 1.2.2 was released in April 2015. Since then, 1.2.2 has been a very solid release and has been the stable version in use to date. Unfortunately, part of the bugfixes in the 1.2.2 series resulted in an `opam` file format that is not fully backwards compatible with the 1.2.0 syntax, and the net effect is that users of 1.2.0 now see a broken package repository. Our CI tests for new packages regularly fail on 1.2.0, even if they succeed on 1.2.2 and higher. As we prepare the plan for [1.2.2 -> 2.0 migration](<https://github.com/ocaml/opam/issues/2918>), it is clear that we need a "one-in one-out" policy on releases in order to preserve the overall health of the package repository -- maintaining three separate releases and formats of the repository is not practical. Therefore the 1.2.0 release needs to be actively deprecated, and we could use some help from the community to make this happen. ### Who is still using opam 1.2.0? I found that the Debian Jessie (stable) release includes 1.2.0, and this is probably the last major distribution including it. The [Debian Stretch](<https://wiki.debian.org/DebianStretch>) is due to become the stable release on the 17th June 2017, and so at that point there will hopefully be no distributions actively sending opam 1.2.0 out. Is there anyone else that is still packaging 1.2.0? Please comment here if so, and we should move them away. ### How do we deprecate it? Due to the format changes happening in a minor version, it's a bit difficult to give opam 1.2.0 users a smooth transition experience, to my knowledge (Louis Gesbert or Thomas Gazagnaire may correct me here). I would propose: - putting a notice on opam.ocaml.org that 1.2.2 is the only supported stable release. - can we somehow put in a request to debian-stable to add a post-installation message that the upstream package will no longer work since the repository? If there are any users of opam 1.2.0, particularly industrial ones, please do speak up now. By performing an active deprecation of an older release, I hope we can focus our efforts on ensuring the opam users have a good out-of-the-box experience with opam 1.2.2 and the forthcoming opam 2.0 :-) ** Hendrik Boom replied: Yes. There's Devuan stable. It is Debian without systemd, and it will take a while for it to catch up when Debian relabels their releases. I'll ask about it on the devuan mailing list. Perhaps they can accelerate the opam-related packages. I don't know whether that will be compatible with their automated workflow. ** Anil Madhavapeddy then said: Thanks for checking, Hendrik. It may be worth mentioning to them that OPAM 1.2.0 is already broken in practical terms (unless the repository it defaults to is rolled back), and so we encourage backports to 1.2.2 in this case. ** Evgeny Roubinchtein also replied: FreeBSD ports still only has opam 1.2.0: <https://www.freebsd.org/cgi/ports.cgi?query=opam&stype=all>. DragonFly may be in the same boat, since, IIRC the ports collection is shared between the two. Also, what about pkgsrc? The opam-2.x/master's "cold" target "just worked" for me when I tried it on FreeBSD (after a tiny patch that has already been merged), so I am optimistic that producing an updated port for FreeBSD is mostly a matter of going through the motions. One annoyance is that well-behaved ports are only supposed to access network during the "fetch" stage, so one would need to replicate in the FreeBSD port's Makefile the targets from the opam source tree that download various things during opam's build (I think it's mostly things in src_ext). That isn't an insurmountable obstacle, by any means, but just a bit of work that needs to be done. ** David Allsopp then said: See <https://github.com/ocaml/opam/pull/2956/commits/13fdc7e4707d16748b9994cd6299bc259b4dd6da> (which is in the process of being merged) and <https://github.com/dra27/opam/commit/0f22342962d18aff4da4da0f206fb3a0aa278742> (which will head in a similar direction soon). 13fdc7e gives you make -C src_ext cache-archives which will download all the src_ext tarballs to src_ext/archives If you then explicitly download the ocaml sources tarball to src_ext/archives/, then 0f2234 ensures that make cold uses it ** Hannes Mehnert also replied to Evgeny: > FreeBSD ports still only has opam 1.2.0: To clarify, FreeBSD ports has opam 1.2.2 (since May 2015), not 1.2.0. ======================================================================== 4) OCaml hacking evening in Cambridge, (MA, *US*) on June 6th Archive: <https://sympa.inria.fr/sympa/arc/caml-list/2017-06/msg00012.html> ------------------------------------------------------------------------ ** Gabriel Scherer announced: I am happy to announce an OCaml hacking session in the evening of June 6th in Cambridge, MA, US. The event will take place at MIT, between 17:00 and 23:30, in the room 4-145. Access instructions can be found at: <http://www.ccs.neu.edu/home/gasche/tmp/ocaml-hacking-session-june-6-2017/announce.html> This event, organized by Clément Pit-Claudel, Thomas Bourgeat and myself, is open to all OCaml programmers, advanced or beginners. Attendees will be encouraged and assisted in making a contribution to an OCaml open source project, including in particular the OCaml compiler implementation itself -- we will propose a list of tasks and project ideas, and try to help in providing technical advice, feedback and guidance for contribution. Coming with a project in mind is also welcome, on the compiler codebase or any other OCaml codebase. Many blocks of the OCaml ecosystem would benefit from contributions, including documentation contributions and the <https://ocaml.org> website. If you were waiting for an opportunity to scratch an OCaml-y itch in a friendly place, there it is! Event implementation details are still being arranged, but we are not planning on having food at the event itself. We may go out in groups around dinner time, but feel free to eat beforehand or bring your own food. Feel free to ask any question to me by email, on the list, or on the Discourse forum thread: <https://discuss.ocaml.org/t/ocaml-hacking-session-at-mit-cambridge-us-on-june-6th/334> ======================================================================== 5) findlib-1.7.3 Archive: <https://sympa.inria.fr/sympa/arc/caml-list/2017-06/msg00023.html> ------------------------------------------------------------------------ ** Gerd Stolpmann announced: in the last version of findlib there was a small error regarding the num library. It was announced that this library is now optional (as it will be omitted from ocaml-4.06 onwards), however the build did not skip over all parts of it if missing. There is now findlib-1.7.3 fixing this single bug. <http://projects.camlcity.org/projects/findlib.html> ======================================================================== 6) From the OCaml discourse ------------------------------------------------------------------------ ** The editor compiled this list: Here are some links to messages at <http://discuss.ocaml.org> that may be of interest to the readers. - Anton Bachin talks about "A welcoming, community-oriented Lwt" <https://discuss.ocaml.org/t/a-welcoming-community-oriented-lwt/325/1> - Petter A. Urkedal talks about "ppx_regexp 0.2.0 and 0.3.0" <https://discuss.ocaml.org/t/ann-ppx-regexp-0-2-0-and-0-3-0/344/1> - Petter A. Urkedal talks about "ppx_compose 0.0.3" <https://discuss.ocaml.org/t/ann-ppx-compose-0-0-3/345/1> - Thomas Gazagnaire talks about "DataKit dev reports" <https://discuss.ocaml.org/t/datakit-dev-reports/224/9> - Alfredo Beaumont talks about "salsa20-core 0.2.0" <https://discuss.ocaml.org/t/ann-salsa20-core-0-2-0/358/1> ======================================================================== 7) 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. - Manual: minimal documentation for compiler plugins <https://github.com/ocaml/ocaml/pull/1187> ======================================================================== 8) Other OCaml News ------------------------------------------------------------------------ ** From the ocamlcore planet blog: Here are links from many OCaml blogs aggregated at OCaml Planet, <http://ocaml.org/community/planet/>. New in libguestfs: Rewriting bits of the daemon in OCaml <https://rwmj.wordpress.com/2017/06/04/new-in-libguestfs-rewriting-bits-of-the-daemon-in-ocaml/> Full Time: Front-end Developer at issuu in Copenhagen <http://jobs.github.com/positions/9c9c5cac-28e3-11e7-8515-f5b67b252bbb> PureScript/React Front-End Developer at CollegeVine (Full-time) <https://functionaljobs.com/jobs/9018-purescript-react-front-end-developer-at-collegevine> Frama-C 15 - Phosphorus is out. Download ithere. <http://frama-c.com/index.html> A modular formalization of type theory in Coq <http://math.andrej.com/2017/05/29/a-modular-formalization-of-type-theory-in-coq/> More type classes in OCaml <http://blog.shaynefletcher.org/2017/05/more-type-classes-in-ocaml.html> ======================================================================== Old cwn ------------------------------------------------------------------------ If you happen to miss a CWN, you can send me a message (alan.schm...@polytechnique.org) and I'll mail it to you, or go take a look at the archive (<http://alan.petitepomme.net/cwn/>) or the RSS feed of the archives (<http://alan.petitepomme.net/cwn/cwn.rss>). If you also wish to receive it every week by mail, you may subscribe online at <http://lists.idyll.org/listinfo/caml-news-weekly/> . ======================================================================== -- OpenPGP Key ID : 040D0A3B4ED2E5C7 Monthly Athmospheric CO₂, Mauna Loa Obs. 2017-05: 409.65, 2016-05: 407.70
signature.asc
Description: PGP signature
_______________________________________________ caml-news-weekly mailing list caml-news-weekly@lists.idyll.org http://lists.idyll.org/listinfo/caml-news-weekly