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 0C2977EE99 for ; Sun, 19 Jan 2014 19:23:14 +0100 (CET) Received-SPF: None (mail3-smtp-sop.national.inria.fr: no sender authenticity information available from domain of gabriel.scherer@gmail.com) identity=pra; client-ip=209.85.214.48; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="gabriel.scherer@gmail.com"; x-sender="gabriel.scherer@gmail.com"; x-conformance=sidf_compatible Received-SPF: Pass (mail3-smtp-sop.national.inria.fr: domain of gabriel.scherer@gmail.com designates 209.85.214.48 as permitted sender) identity=mailfrom; client-ip=209.85.214.48; receiver=mail3-smtp-sop.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 (mail3-smtp-sop.national.inria.fr: no sender authenticity information available from domain of postmaster@mail-bk0-f48.google.com) identity=helo; client-ip=209.85.214.48; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="gabriel.scherer@gmail.com"; x-sender="postmaster@mail-bk0-f48.google.com"; x-conformance=sidf_compatible X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApACAM0W3FLRVdYwlWdsb2JhbAA/GoNDVrw1CBYOAQEBAQcNCQkSKoJTGQEbHgMSEF0BEQEFASIbDIdcAQMRDTaYH4MIjFyDCZIVChknDWSFAwEFDIx4gROFJwSYIpArGCmEWjs X-IPAS-Result: ApACAM0W3FLRVdYwlWdsb2JhbAA/GoNDVrw1CBYOAQEBAQcNCQkSKoJTGQEbHgMSEF0BEQEFASIbDIdcAQMRDTaYH4MIjFyDCZIVChknDWSFAwEFDIx4gROFJwSYIpArGCmEWjs X-IronPort-AV: E=Sophos;i="4.95,685,1384297200"; d="scan'208";a="45347307" Received: from mail-bk0-f48.google.com ([209.85.214.48]) by mail3-smtp-sop.national.inria.fr with ESMTP/TLS/RC4-SHA; 19 Jan 2014 19:23:13 +0100 Received: by mail-bk0-f48.google.com with SMTP id ej10so398099bkb.7 for ; Sun, 19 Jan 2014 10:23:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:from:date:message-id:subject:to:content-type :content-transfer-encoding; bh=LFVPJkp6RLSx3gd9RpbKZ+dRYr847FnjCRm1h+13c+U=; b=Q2LPV9wPV29Toy7M+2Rr3x5OBW7E6b457L9r8bQjY57w+VBkkxrpd18tM4nkk2gbDZ dHVZRRTNR9m3yGZEsfpad2hCFbqKjUug+hyfAF0N/AfFhRg/b46SDNUAkTmK/C2s6xK7 hzrGTWosS7D/seZXIbAHIMwH3NaKtipZHQEFZegoKCZRs9ka2IE2EVaBfVaU5XVQhcut CW1LXKuMq2Upf8L+7Vgy2mtq/ayzX81iipTevGQonqtM4Ouj254nRNawnvNqJdRdvtHn O2ypE1HmvwEbkCgW8tpXQic1RzsDBhNuzX2Jk8CGxqsBwVrpg/4Sg2zu0x00s3OwZOtj sJLg== X-Received: by 10.204.53.75 with SMTP id l11mr1670596bkg.35.1390155792750; Sun, 19 Jan 2014 10:23:12 -0800 (PST) MIME-Version: 1.0 Received: by 10.205.45.5 with HTTP; Sun, 19 Jan 2014 10:22:31 -0800 (PST) From: Gabriel Scherer Date: Sun, 19 Jan 2014 19:22:31 +0100 Message-ID: To: caml users Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Subject: [Caml-list] ANN: batteries 2.2.0 Batteries (OCaml Batteries Included) is a community-developed overlay over the "standard" library distributed with the compiler, that aims to provide general-purpose data-structures and convenient functions. The project follows a semantic versioning scheme; the new version is backward-compatible with the previous releases 2.1.0 (July 2013) and 2.0.0 (January 2013). The lowest OCaml version certainly supported is 3.12. The new release is available in OPAM, or as a tarball https://forge.ocamlcore.org/frs/download.php/1363/batteries-2.2.tar.gz https://github.com/ocaml-batteries-team/batteries-included/releases/tag/v= 2.2.0 or from the sources https://github.com/ocaml-batteries-team/batteries-included The online API documentation is at: http://ocaml-batteries-team.github.io/batteries-included/hdoc2/ This new version saw increased commits from new contributors, which did most of the work that is included in this release: Fran=E7ois Berenger (which also did a good share of work for the previous release), Simon Cruanes, and Jacques-Pascal Deplaix. As you can see, it is the right time for people with a name in the beginning of the alphabet to contribute -- and others. As always, the work in this release is split between some code improvements and some new functions. Some highlights include: - val split_opt: elt -> t -> t * elt option * t on sets, as a generalization of stdlib's split : elt -> t -> t * bool * t (Fran=E7ois Berenger) - various cartesian_product functions, including one for Enum accommodating infinite enumerations (Simon Cruanes) - kahan_sum functions for slower but numerically-accurate summation of floats ( http://en.wikipedia.org/wiki/Kahan_summation_algorithm ) (Gabriel Scherer) - val filteri : (int -> 'a -> bool) -> 'a list -> 'a list val filteri_map : (int -> 'a -> 'b option) -> 'a list -> 'b list (Jacques-Pascal Deplaix) - val bsearch : 'a BatOrd.ord -> 'a array -> 'a -> [ `At of int | `Just_after of int | `All_lower | `All_bigger | `Empty ] (Simon Cruanes) Remarkably, there was only one bug fixed (by its reporter Jonas Jensen) during this release circle. With many thanks to Francois Berenger, Cedric Cellier, Simon Cruanes, Jacques-Pascal Deplaix, David Fourchaux, Rudi Grinberg, Jonas Jensen, Kensuke Matsuzaki, and Eric Norige.