From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Original-To: caml-list@sympa.inria.fr Delivered-To: caml-list@sympa.inria.fr Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by sympa.inria.fr (Postfix) with ESMTPS id 3400B7F780 for ; Thu, 12 May 2016 16:41:46 +0200 (CEST) IronPort-PHdr: 9a23:vIPYRB0wYds5FwqCsmDT+DRfVm0co7zxezQtwd8ZsegTIvad9pjvdHbS+e9qxAeQG96LurQd2qGJ7+jJYi8p39WoiDg6aptCVhsI2409vjcLJ4q7M3D9N+PgdCcgHc5PBxdP9nC/NlVJSo6lPwWB6kO74TNaIBjjLw09fr2zQd6DyZ3mnL/us7ToICx2xxOFKYtoKxu3qQiD/uI3uqBFbpgL9x3Sv3FTcP5Xz247bXianhL7+9vitMU7q3cY6Lod8JtLWKD+N7kjQKZDRGAtOmUxocnqrgXrTA2V53JaXH9AwTRSBA2QwxjwRJb8tmPBvepwwiSAdZn5RLouWDmmqbxgSBLyhT0vODsw8WWRgct12vEI6Cm9rgByltaHKLqeM+BzK/vQ Authentication-Results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=gabriel.scherer@gmail.com; spf=Pass smtp.mailfrom=gabriel.scherer@gmail.com; spf=None smtp.helo=postmaster@mail-ig0-f173.google.com Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of gabriel.scherer@gmail.com) identity=pra; client-ip=209.85.213.173; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="gabriel.scherer@gmail.com"; x-sender="gabriel.scherer@gmail.com"; x-conformance=sidf_compatible Received-SPF: Pass (mail2-smtp-roc.national.inria.fr: domain of gabriel.scherer@gmail.com designates 209.85.213.173 as permitted sender) identity=mailfrom; client-ip=209.85.213.173; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="gabriel.scherer@gmail.com"; x-sender="gabriel.scherer@gmail.com"; x-conformance=sidf_compatible; x-record-type="v=spf1" Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of postmaster@mail-ig0-f173.google.com) identity=helo; client-ip=209.85.213.173; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="gabriel.scherer@gmail.com"; x-sender="postmaster@mail-ig0-f173.google.com"; x-conformance=sidf_compatible X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A0B0AQAWlTRXj63VVdFeg1Y3fQanDAQDhzaKFXYBDYF2IocgBzgUAQEBAQEBAQERAQEBAQcLCwkhL4Itgi4RBBkBGx4DEhAPAiYCJAERAQUBIicOh3IBAxcOmyqCB4ExPjGLO4FqgliHPQoZJw1Sg3UBBQoFbYUkiFeDNIJZBY1fikiBVoQoiCCPFwKOAxIegQ4eAQGCWIFxIDKIMQEBAQ X-IPAS-Result: A0B0AQAWlTRXj63VVdFeg1Y3fQanDAQDhzaKFXYBDYF2IocgBzgUAQEBAQEBAQERAQEBAQcLCwkhL4Itgi4RBBkBGx4DEhAPAiYCJAERAQUBIicOh3IBAxcOmyqCB4ExPjGLO4FqgliHPQoZJw1Sg3UBBQoFbYUkiFeDNIJZBY1fikiBVoQoiCCPFwKOAxIegQ4eAQGCWIFxIDKIMQEBAQ X-IronPort-AV: E=Sophos;i="5.24,610,1454972400"; d="scan'208";a="218041064" Received: from mail-ig0-f173.google.com ([209.85.213.173]) by mail2-smtp-roc.national.inria.fr with ESMTP/TLS/AES128-GCM-SHA256; 12 May 2016 16:41:45 +0200 Received: by mail-ig0-f173.google.com with SMTP id lr7so56173601igb.1 for ; Thu, 12 May 2016 07:41:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:from:date:message-id:subject:to; bh=Hyc9JqpostSwphY4YV5zGHGtC+KAPhgFbyR3G7axD6o=; b=t2Sjqq9MrIGVgpO6DxXdPwXBw3St1YqxwxI3Gp1f8igRKYf2+mrpPeb7pbUFOvdIFw NMVgE9yAZgNvKJM4uT0TxmHtJrO8S+lWkPPSnv3e3Xf/N0YozBtw+MsMjNBk9REKHksD JI3vt7d1Zi/XQDWvoABSPD4fqwMpTPJg6dXpTWR2kVI2rhFQl77kyKbnY7BmrRfx/kT/ Wf3gfx/dpQWVPSbtpKeq+6xq4Jrk9+gWlEOZFNfBRXhkVgMPZxx1zysGkRT2BHv9GTyG CgFHD23xRW3Cz0WCK37kCrXNPswP9LIhUD5ty9Dy3JyVfTNp3hDeuphUw6CcgkEyXVHb cDfQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=Hyc9JqpostSwphY4YV5zGHGtC+KAPhgFbyR3G7axD6o=; b=YXQgQKvC2SrqbHGkVAXVV7ls/NoRHxzEdeHUyUzd1f9h3/AXaI8sVuGeZPlGJtSfta KkK8rC11pSwsXtPcUuHbYCJItaWEPZ323XiBLp3fEho9SGJchc7XgfM2HNRAqL3Gyzv9 ejpd1pXOLKsAwvec16HLHoiyQFuzkcfWTCsPpzeeyeyt6KXlJw9vr86lGx3v2OaUOBK0 1hA5qknVSHmk5jtG6YG6NMPgL9kjtdMjJzyi0vFMpAZkKOdGkCSTG6R30FohL+YsHavE RByHeuPn12qugUKAOJrFY0a9DGLGJGgPjWy6Pwa/kvfduQM+DP+LLdZz/+kXNq3vnlrz gImw== X-Gm-Message-State: AOPr4FUacz+vcz6Xxd5FA/6afoHAbOXsm3MvLy5KuufSxNoFoLk7cgjrTQe+0+LCBkEGdPjyZlz6Y8RUxJ2T+w== X-Received: by 10.50.62.13 with SMTP id u13mr26743638igr.42.1463064104172; Thu, 12 May 2016 07:41:44 -0700 (PDT) MIME-Version: 1.0 Received: by 10.79.89.195 with HTTP; Thu, 12 May 2016 07:41:04 -0700 (PDT) From: Gabriel Scherer Date: Thu, 12 May 2016 10:41:04 -0400 Message-ID: To: caml users Content-Type: text/plain; charset=UTF-8 Subject: [Caml-list] [ANN] Batteries 2.5.0, compatible with OCaml 4.03 ## Batteries Batteries Included is a community-maintained standard library extension, with a focus on stability and compatibility. Bug reports, pull requests and other contributions are warmly welcome, see the project page at https://github.com/ocaml-batteries-team/batteries-included/ The library's API documentation at: http://ocaml-batteries-team.github.io/batteries-included/hdoc2/ Batteries 2.5.0 is a minor release, coming shortly after 2.4.0 released in December 2015. The main change in 2.5.0 is that it is compatible with the newly released OCaml 4.03. Note that, as usual for Batteries release, Batteries 2.5.0 is compatible with older OCaml releases as well, and provides back-ported versions of most standard library functions made available in 4.03 only. For example, BatString.uppercase_ascii is usable under all OCaml versions. If the documentation of a Batteries function says @since 2.5.0 then it is available under all supported OCaml versions (3.12.1 and up). If it says @since 2.5.0 and OCaml 4.03.0 then it is only available under OCaml 4.03.0. Many thanks to the contributors for this release, Cedric Cellier, Pieter Goetschalckx KC Sivaramakrishnan, Gabriel Scherer, and Thibault Suzanne. ## Detailed Changelog - BatTuple: add Tuple{N}.make : 'a1 -> ... -> 'an -> 'a1 * ... * 'an #657 (Thibault Suzanne) - BatBig_int: fix sequence operators (--), (---) to avoid polymorphic comparison #674, #675, #676 (Pieter Goetschalckx and Cedric Cellier) - Extend all Batteries module to cover OCaml 4.03 features #670 (Gabriel Scherer, KC Sivaramakrishnan) ## Future plans OCaml 4.03 introduced a type `('a, 'b) result` contributed by Yaron Minsky, meant to serve as common denominator between the various libraries relying on some kind of sum/either type. type ('a,'b) result = Ok of 'a | Error of 'b Batteries has long had its own `result` type, which unfortunately uses a different name for the second constructor: type ('a, 'b) result = Ok of 'a | Bad of 'b Unfortunately, this means that the two types are incompatible (see PR#7102 for a feature request on renaming variant constructors). Batteries 2.5.0 is compatible with previous Batteries versions, and keeps using Batteries' result type. Of course, the right long-term move for Batteries is to drop its own result type and use the standard result type instead. But this means a breaking change for our users as well. We plan to make a major release 3.0 in the following months, that integrates this breaking changes and some other incompatible interface changes that were proposed over the 2.x lifetime. Happy hacking!