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 9F94E7FACE for ; Thu, 25 Sep 2014 16:23:44 +0200 (CEST) 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.218.44; 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.218.44 as permitted sender) identity=mailfrom; client-ip=209.85.218.44; 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-oi0-f44.google.com) identity=helo; client-ip=209.85.218.44; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="gabriel.scherer@gmail.com"; x-sender="postmaster@mail-oi0-f44.google.com"; x-conformance=sidf_compatible X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AjMCANckJFTRVdoslGdsb2JhbABgg2FXBIJ9tlmRFYdMfAgWAREBAQEBBwsLCRIuhBwRBBkBGx4DEgMNNwIkAREBBQEiJw6IBwEDEQ2PKo0Rgx1uizCBcoMQiSEKGScNZoZMAQUOjyhkgwOBUwWSZYM1hwmTZBgpgxsggVs7LwGCSQEBAQ X-IPAS-Result: AjMCANckJFTRVdoslGdsb2JhbABgg2FXBIJ9tlmRFYdMfAgWAREBAQEBBwsLCRIuhBwRBBkBGx4DEgMNNwIkAREBBQEiJw6IBwEDEQ2PKo0Rgx1uizCBcoMQiSEKGScNZoZMAQUOjyhkgwOBUwWSZYM1hwmTZBgpgxsggVs7LwGCSQEBAQ X-IronPort-AV: E=Sophos;i="5.04,597,1406584800"; d="scan'208";a="80891341" Received: from mail-oi0-f44.google.com ([209.85.218.44]) by mail3-smtp-sop.national.inria.fr with ESMTP/TLS/RC4-SHA; 25 Sep 2014 16:23:43 +0200 Received: by mail-oi0-f44.google.com with SMTP id v63so7378763oia.3 for ; Thu, 25 Sep 2014 07:23:42 -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:content-type; bh=lGxbhsGh/eOxedGBx9Ea9d0RMOcl+hROIriDxQGV038=; b=Ws2c5NYlLvlBwfRDXbqR/zoIg+seSM53xjMX/pGs/o01Yn3KDw4NG6jMlw0c3Qr94u 0KPbXHmXVz0daLYHXec7Pe4AiCerwphhxtU2ls01YW0ekzThoaBTmYtcNl2MM98jt6qw UlImnNBhDailuScDVZbLQ61G824Kg/Wh+KumE0UM0cJdzPueVE8Xo3HZGvpvAj7NGAbc l28zaXi58UG55e1n32a5JUQXQuJDO49uVsIDNbaVGPjCL1ihWltK+VvWtTjoKerrF+OG +Rvkk0BQsOFkximAdIaU+H4KcHYSNgq6X0IWQX0/wnGAMY4rUhgD0xjwtZk4JRcYIHZU I38w== X-Received: by 10.60.84.134 with SMTP id z6mr7298668oey.32.1411655022251; Thu, 25 Sep 2014 07:23:42 -0700 (PDT) MIME-Version: 1.0 Received: by 10.76.141.165 with HTTP; Thu, 25 Sep 2014 07:23:02 -0700 (PDT) From: Gabriel Scherer Date: Thu, 25 Sep 2014 16:23:02 +0200 Message-ID: To: caml users Content-Type: multipart/alternative; boundary=089e01176a0125996b0503e48c06 Subject: [Caml-list] ANN: batteries 2.3.0 -- with support for OCaml 4.02.0 --089e01176a0125996b0503e48c06 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable 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.2.0 was in January 2014). The lowest OCaml version certainly supported is 3.12. The new release is available in OPAM, or as a tarball https://github.com/ocaml-batteries-team/batteries-included/releases/tag/v2.= 3.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/ The main novelty of this new version is the support for the new OCaml version 4.02. Whenever possible, we have backported new functions from the 4.02 compiler library: using Batteries 2.3.0 will let you use them from any OCaml version. You can thus write code using the new 4.2.0 functions that compiles on old OCaml versions. The only exception is the support for inspecting the callstack, which is not available on older OCaml versions -- it depends on an OCaml runtime change. In particular, all new functions related to the new `bytes` datatype are usable with Batteries 2.3.0, even from older OCaml versions. However, the new Batteries release does *not* itself compile with -safe-string (the new OCaml option to make strings immutable). We plan to release another minor version soon that is -safe-string ready. You can use Batteries 2.3.0 in user programs compiled with -safe-string themselves, but you should expect compilation under -safe-string to break at the next Batteries release, as some interfaces change from `string` to `bytes`. With many thanks to the contributors to this new release, including Fran=C3=A7ois Berenger, Vincent Bernardoff, Simon Cruanes, Jacques-Pascal Deplaix, Mads Hartmann, Max Mouratov, Gabriel Radanne, Xavier Van de Woestyne, Ralf Vogler and Christopher Zimmermann. # Detailed changelog - improved test coverage (Simon Cruanes and Xavier Van de Woestyne) - Enum: bugfix in `clamp` (Simon Cruanes) - Stream: add `concat_map` (Gabriel Radanne) - List: fix a stack-overflow bug in `transpose` (Gabriel Scherer) - List: add `unfold_exc : (unit -> a) -> 'a list * exn` (Fran=C3=A7ois Berenger) - List: add `fold_righti` and `fold_lefti` (Fran=C3=A7ois Berenger) - Substring : fix `fold_left`, add `fold_lefti`, `fold_righti` (Xavier Van de Woestyne) - String : add `fold_lefti` and `fold_righti` (Xavier Van de Woestyne) - Set.Make: add `of_list` (Jacques-Pascal Deplaix) - AvlTree: add `check : 'a tree -> bool` to check well-formedness (Simon Cruanes) - Hashtbl: make `modify_opt/def` resize the table to preserve amortized costs (Mads Hartmann, report by user 'jj-issuu') - Enum: fix combine's count in presence of infinite enums (Gabriel Scherer, report by user 'mwnx') - Makefile: add a qtest-byte target (Gabriel Scherer) - List: add `modify_opt_at: int -> ('a -> 'a option) -> 'a list -> 'a list` (Gabriel Scherer) - List: add `modify_at: int -> ('a -> 'a) -> 'a list -> 'a list` (Gabriel Scherer) - List: add `remove_at: int -> 'a list -> 'a list` (Fran=C3=A7ois Berenger) - Int: add `copysign` (Simon Cruanes) - Deque: add `rotate_forward`, `rotate_backward : 'a dq -> 'a dq` (Max Mouratov) - Int: fix overflow checking in `Safe_int.mul` (Max Mouratov, Christopher Zimmermann) - add a local OPAM description (Vincent Bernardoff) - Queue: add `map : ('a -> 'b) -> 'a t -> 'b t` (Christopher Zimmermann) - compatibility with 4.02: + Printf: remove CamlinternalPr for OCaml versions >=3D 4.02 (Ralf Vogler) + Printf: legacy code assumed (string =3D fmt) (Gabriel Scherer) + new 4.02 functions: String.mapi (String.init was already in Batteries) List.sort_uniq (List.sort_unique existed before) Array.make_float (less efficient implementation provided for <4.02 versions) a BatBytes module relying on ocamlfind's compatibility module bytes-related functions in Buffer,Digest,Marshal,Printexc,Stream,Unix new Printexc callstack interface (not available for <4.02 versions) (Gabriel Scherer) --089e01176a0125996b0503e48c06 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Batteries (OCaml Batteries Included) is a community-develo= ped overlay
over the "standard" library distributed with the c= ompiler, that aims
to provide general-purpose data-structures and conven= ient functions.

The project follows a semantic versioning scheme; th= e new version is
backward-compatible with the previous releases (2.2.0 w= as in January
2014). The lowest OCaml version certainly supported is 3.1= 2.

The new release is available in OPAM, or as a tarball
=C2=A0 <= a href=3D"https://github.com/ocaml-batteries-team/batteries-included/releas= es/tag/v2.3.0">https://github.com/ocaml-batteries-team/batteries-included/r= eleases/tag/v2.3.0
or from the sources
=C2=A0 https://github.com/ocam= l-batteries-team/batteries-included
The online API documentation is = at:
=C2=A0 http://ocaml-batteries-team.github.io/batteries-included/hdo= c2/

The main novelty of this new version is the support for the = new OCaml
version 4.02. Whenever possible, we have backported new functi= ons from
the 4.02 compiler library: using Batteries 2.3.0 will let you u= se them
from any OCaml version. You can thus write code using the new 4.= 2.0
functions that compiles on old OCaml versions. The only exception is=
the support for inspecting the callstack, which is not available on
= older OCaml versions -- it depends on an OCaml runtime change.

In pa= rticular, all new functions related to the new `bytes` datatype
are usab= le with Batteries 2.3.0, even from older OCaml
versions. However, the ne= w Batteries release does *not* itself compile
with -safe-string (the new= OCaml option to make strings immutable). We
plan to release another min= or version soon that is -safe-string
ready. You can use Batteries 2.3.0 = in user programs compiled with
-safe-string themselves, but you should e= xpect compilation under
-safe-string to break at the next Batteries rele= ase, as some
interfaces change from `string` to `bytes`.

With man= y thanks to the contributors to this new release, including
Fran=C3=A7oi= s Berenger, Vincent Bernardoff, Simon Cruanes, Jacques-Pascal
Deplaix, M= ads Hartmann, Max Mouratov, Gabriel Radanne, Xavier Van de
Woestyne, Ral= f Vogler and Christopher Zimmermann.


# Detailed changelog
- improved test coverage
=C2=A0 (Simon Cruanes and Xavier Van de Woesty= ne)
- Enum: bugfix in `clamp`
=C2=A0 (Simon Cruanes)
- Stream: add= `concat_map`
=C2=A0 (Gabriel Radanne)
- List: fix a stack-overflow b= ug in `transpose`
=C2=A0 (Gabriel Scherer)
- List: add `unfold_exc : = (unit -> a) -> 'a list * exn`
=C2=A0 (Fran=C3=A7ois Berenger)<= br>- List: add `fold_righti` and `fold_lefti`
=C2=A0 (Fran=C3=A7ois Bere= nger)
- Substring : fix `fold_left`, add `fold_lefti`, `fold_righti`
= =C2=A0 (Xavier Van de Woestyne)
- String : add `fold_lefti` and `fold_ri= ghti`
=C2=A0 (Xavier Van de Woestyne)
- Set.Make: add `of_list`
= =C2=A0 (Jacques-Pascal Deplaix)
- AvlTree: add `check : 'a tree ->= ; bool` to check well-formedness
=C2=A0 (Simon Cruanes)
- Hashtbl: ma= ke `modify_opt/def` resize the table to preserve amortized costs
=C2=A0 = (Mads Hartmann, report by user 'jj-issuu')
- Enum: fix combine&#= 39;s count in presence of infinite enums
=C2=A0 (Gabriel Scherer, report= by user 'mwnx')
- Makefile: add a qtest-byte target
=C2=A0 (= Gabriel Scherer)
- List: add `modify_opt_at: int -> ('a -> = 9;a option) -> 'a list -> 'a list`
=C2=A0 (Gabriel Scherer= )
- List: add `modify_at: int -> ('a -> 'a) -> 'a l= ist -> 'a list`
=C2=A0 (Gabriel Scherer)
- List: add `remove_a= t: int -> 'a list -> 'a list`
=C2=A0 (Fran=C3=A7ois Bereng= er)
- Int: add `copysign`
=C2=A0 (Simon Cruanes)
- Deque: add `rot= ate_forward`, `rotate_backward : 'a dq -> 'a dq`
=C2=A0 (Max = Mouratov)
- Int: fix overflow checking in `Safe_int.mul`
=C2=A0 (Max = Mouratov, Christopher Zimmermann)
- add a local OPAM description
=C2= =A0 (Vincent Bernardoff)
- Queue: add `map : ('a -> 'b) ->= 'a t -> 'b t`
=C2=A0 (Christopher Zimmermann)
- compatibi= lity with 4.02:
=C2=A0 + Printf: remove CamlinternalPr for OCaml version= s >=3D 4.02
=C2=A0=C2=A0=C2=A0 (Ralf Vogler)
=C2=A0 + Printf: lega= cy code assumed (string =3D fmt)
=C2=A0=C2=A0=C2=A0 (Gabriel Scherer)=C2=A0 + new 4.02 functions:
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 String.mapi= (String.init was already in Batteries)
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 L= ist.sort_uniq (List.sort_unique existed before)
=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0 Array.make_float (less efficient implementation provided for <4.0= 2 versions)
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 a BatBytes module relying on = ocamlfind's compatibility module
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 byte= s-related functions in Buffer,Digest,Marshal,Printexc,Stream,Unix
=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0 new Printexc callstack interface (not available fo= r <4.02 versions)
=C2=A0=C2=A0=C2=A0 (Gabriel Scherer)

--089e01176a0125996b0503e48c06--