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 mail3-relais-sop.national.inria.fr (mail3-relais-sop.national.inria.fr [192.134.164.104]) by sympa.inria.fr (Postfix) with ESMTPS id 16F587FA32 for ; Tue, 15 Jul 2014 12:52:13 +0200 (CEST) Received-SPF: None (mail3-smtp-sop.national.inria.fr: no sender authenticity information available from domain of bmillwood@janestreet.com) identity=pra; client-ip=38.105.200.233; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="bmillwood@janestreet.com"; x-sender="bmillwood@janestreet.com"; x-conformance=sidf_compatible Received-SPF: Pass (mail3-smtp-sop.national.inria.fr: domain of bmillwood@janestreet.com designates 38.105.200.233 as permitted sender) identity=mailfrom; client-ip=38.105.200.233; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="bmillwood@janestreet.com"; x-sender="bmillwood@janestreet.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@mxout3.mail.janestreet.com) identity=helo; client-ip=38.105.200.233; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="bmillwood@janestreet.com"; x-sender="postmaster@mxout3.mail.janestreet.com"; x-conformance=sidf_compatible X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AloBAAEHxVMmacjpnGdsb2JhbABZg2BbgnK+dYdBgQIeDwEBAQEBCBQJPIQcEQQZAQE4GA03AiQSAQUBIgE0iCADCpR9kBdqijB3hQIBBZMCEQIECo5/PoMCgUyXAIQbhxKLHxgphHVrAYED X-IPAS-Result: AloBAAEHxVMmacjpnGdsb2JhbABZg2BbgnK+dYdBgQIeDwEBAQEBCBQJPIQcEQQZAQE4GA03AiQSAQUBIgE0iCADCpR9kBdqijB3hQIBBZMCEQIECo5/PoMCgUyXAIQbhxKLHxgphHVrAYED X-IronPort-AV: E=Sophos;i="5.01,664,1400018400"; d="scan'208";a="71425153" Received: from mxout4.mail.janestreet.com (HELO mxout3.mail.janestreet.com) ([38.105.200.233]) by mail3-smtp-sop.national.inria.fr with ESMTP/TLS/DHE-RSA-AES256-SHA; 15 Jul 2014 12:52:11 +0200 Received: from tot-oib-smtp1.delacy.com ([172.27.22.15] helo=tot-smtp) by mxout3.mail.janestreet.com with esmtps (UNKNOWN:DHE-RSA-AES256-GCM-SHA384:256) (Exim 4.82) (envelope-from ) id 1X70L9-00061x-9O for caml-list@inria.fr; Tue, 15 Jul 2014 06:52:07 -0400 Received: from [172.27.229.230] (helo=mxgoog1.mail.janestreet.com) by tot-smtp with esmtps (UNKNOWN:AES256-GCM-SHA384:256) (Exim 4.72) (envelope-from ) id 1X70L6-0007TZ-6i for caml-list@inria.fr; Tue, 15 Jul 2014 06:52:04 -0400 Received: from mail-qg0-f43.google.com ([209.85.192.43]) by mxgoog1.mail.janestreet.com with esmtps (TLSv1:RC4-SHA:128) (Exim 4.72) (envelope-from ) id 1X70L6-00010G-3X for caml-list@inria.fr; Tue, 15 Jul 2014 06:52:04 -0400 Received: by mail-qg0-f43.google.com with SMTP id a108so4568281qge.30 for ; Tue, 15 Jul 2014 03:52:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=janestreet.com; s=google; h=mime-version:date:message-id:subject:from:to:content-type; bh=u4nKMopthod7XQwJ8qMX9zkL7vY0NngyUTJthuEseDE=; b=SyUrWbo0KMNaTQVVbTcKbi/5JxlPBybw4miBKA1KC3v7sdD1ZaQkIoWK4qNeaFcyJL hupjKfCZEyjp0E/HodMuVufaVPubXyWCLze/WEGWB+za9njSpWGDzEmIsh9dERQyfJu3 W067VkE91pIm19pOx8bxh1zQVn3et9/6NsCUI= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:date:message-id:subject:from:to :content-type; bh=u4nKMopthod7XQwJ8qMX9zkL7vY0NngyUTJthuEseDE=; b=BnmpqsDqedTLdAHzzaV++ULBbAzUd8u94iSHsmvAHZrOl0+l7p60oqaGDXV/pDwKcq HxU2YtJJwbzs08gjQoKuYY+6Q6arbgvuicgQPQxePwOTV84GiAKEOsmKxdUJPHP5mL4s 4P3w/aLBoatW8z/6k6RMciLbHA9TZctWiOPWXvtDxvxsfpfcxcC/+YlWi9dDvy9eWTzA dd2AruLvPuEDPSEvKIreSvGnRPr7OLcxj13yHEqF4q1a8AdrhlO5PAGOAaShKJM1gnst U4VwPCp/WN6llFtnwWkw6v+6psci2bz/nUcr9nxxaRE+RFnDSkHiy0ShdeXend6gW9JX LTVA== X-Gm-Message-State: ALoCoQkeH7AN+v9AWiyZft1QghDh3Yi5zK6DoVPTmE+SigCguF3x9Ek6IysuZrK86mVXXG1A2y5PQJx5f47jF5mbebAidw7Oy7F9rquKQnX+Nm7mXs4Aig6wRHdsXgUQtk8eADyCriQu X-Received: by 10.140.32.166 with SMTP id h35mr19899002qgh.114.1405421523887; Tue, 15 Jul 2014 03:52:03 -0700 (PDT) MIME-Version: 1.0 X-Received: by 10.140.32.166 with SMTP id h35mr19898986qgh.114.1405421523794; Tue, 15 Jul 2014 03:52:03 -0700 (PDT) Received: by 10.140.103.67 with HTTP; Tue, 15 Jul 2014 03:52:03 -0700 (PDT) Date: Tue, 15 Jul 2014 11:52:03 +0100 Message-ID: From: Ben Millwood To: caml users , ocaml-core@googlegroups.com Content-Type: multipart/alternative; boundary=001a11397ec0af95a704fe39328d Subject: [Caml-list] [ANN] Core Suite 111.21.00 --001a11397ec0af95a704fe39328d Content-Type: text/plain; charset=UTF-8 I'm happy to announce the 111.21.00 release of the Core suite. The following packages were upgraded: - async_extended - async_extra - async_ssl - async_unix - core - core_kernel - custom_printf - jenga - ocaml_plugin - patdiff - patience_diff Files and documentation for this release are available on our website and all packages are in opam: https://ocaml.janestreet.com/ocaml-core/111.21.00/individual https://ocaml.janestreet.com/ocaml-core/111.21.00/doc Here is the list of changes for this version: ## async_extra - Added `Sexp_hum` `Log.Output.format`, which is useful for making logs more human readable. - Added `with compare` to `Rpc.Implementation.Description`. ## async_ssl - Upgraded to use new ctypes and its new stub generation methods. ## async_unix - Added `Process.wait_stdout` and `wait_stdout_lines`, which are like `run` and `run_lines`, but take a `Process.t`. ## core - Fixed an issue where `Time.Zone.init` would not properly traverse the directory containing timezone information. - Added `Time.With_utc_sexp`, which has stable serialization of `Time.t` that is byte-for-byte equal across timezones. - Made `Uuid` stable. - Made `Piecewise_linear` stable. ## core_kernel - Removed our custom C stub for closing channels, reverting to the one in the OCaml runtime. A long time ago we found that the OCaml runtime did not release the lock before calling `close` on the fd underlying a channel. On some filesystems (e.g. smb, nfs) this could cause a runtime hang. We filed a bug with INRIA and wrote our own `close` function which `In_channel` calls to this day. The bug has long been fixed, and our function is probably buggy, so this reverts us to the runtime's `close`. - Added `Float.{of,to}_int64_preserve_order`, which implement the order-preserving zero-preserving bijection between non-NaN floats and 99.95% of `Int64`'s. Used the new function to improve `one_ulp`, which is now exposed: (** The next or previous representable float. ULP stands for "unit of least precision", and is the spacing between floating point numbers. Both [one_ulp `Up infinity] and [one_ulp `Down neg_infinity] return a nan. *) val one_ulp : [`Up | `Down] -> t -> t - Changed `Map.symmetric_diff` to return a `Sequence.t` instead of a `list`. - Added `Sequence.filter_map`. - Improved `Stable_unit_test.Make_sexp_deserialization_test`'s error message so that it includes the expected sexp. ## custom_printf - Fixed a bug in which custom-printf syntax was incompatible with labeled arguments. For example, the preprocessor used to raise an exception on this code: let f ~labeled_arg:() fmt = ksprintf (fun _ -> ()) fmt in f !"hello" ~labeled_arg:() ## jenga - Introduced jenga API v3, a small cleanup of v2 which has been planned for a while. ## ocaml_plugin - Fixed a bug in `ocaml_embed_compiler` on 32-bit machines. `ocaml_embed_compiler` tries to read the full contents of the file as a string, but the string might be too big on 32bits: https://github.com/ocaml/opam-repository/pull/2062#issuecomment-43045491 ## patdiff - Added `Patdiff_core.iter_ansi`. (** Iter along the lines of the diff and the breaks between hunks. Offers more flexibility regarding what the caller wants to do with the lines *) val iter_ansi : f_hunk_break:((int*int) -> (int*int) -> unit) -> f_line:(string -> unit) -> string Patience_diff.Hunk.t list -> unit ## patience_diff - Added plain differ `Plain_diff` and use it in some cases for improved results. - Move modules under `Patience_diff_lib.Std`. --- We hope you find it useful! -- Ben Millwood, on behalf of the Core team. --001a11397ec0af95a704fe39328d Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
I'm happy to announce the 111.21.0= 0 release of the Core suite.

The following packages were upgra= ded:

- async_extended
- async_extra
- async_ssl
- async_uni= x
- core
- core_kernel
- custom_printf
- jenga
- ocaml_plugin
= - patdiff
- patience_diff

Files and documentation for this r= elease are available on our website and all packages are in opam:

Here is the list of changes for this version:
## async_extra

- Added `Sexp_hum` `Log.Output.format`, which is useful for making logs=
=C2=A0 more human readable.
- Added `with compare` to `Rpc.Implement= ation.Description`.

## async_ssl

- Upgraded to use new ctypes= and its new stub generation methods.

## async_unix

- Added `Process.wait_stdout` and `wait_stdout_lin= es`, which are like
=C2=A0 `run` and `run_lines`, but take a `Process.t`= .

## core

- Fixed an issue where `Time.Zone.init` would not p= roperly traverse the
=C2=A0 directory containing timezone information.
- Added `Time.With_utc= _sexp`, which has stable serialization of `Time.t`
=C2=A0 that is byte-f= or-byte equal across timezones.
- Made `Uuid` stable.
- Made `Piecewi= se_linear` stable.

## core_kernel

- Removed our custom C stub for closing channels,= reverting to the one
=C2=A0 in the OCaml runtime.

=C2=A0=C2=A0= =C2=A0 A long time ago we found that the OCaml runtime did not release the<= br>=C2=A0=C2=A0=C2=A0 lock before calling `close` on the fd underlying a ch= annel.=C2=A0 On some
=C2=A0=C2=A0=C2=A0 filesystems (e.g. smb, nfs) this could cause a runtime h= ang.=C2=A0 We
=C2=A0=C2=A0=C2=A0 filed a bug with INRIA and wrote our ow= n `close` function which
=C2=A0=C2=A0=C2=A0 `In_channel` calls to this d= ay.=C2=A0 The bug has long been fixed, and
=C2=A0=C2=A0=C2=A0 our functi= on is probably buggy, so this reverts us to the runtime's
=C2=A0=C2=A0=C2=A0 `close`.

- Added `Float.{of,to}_int64_preserve_or= der`, which implement the
=C2=A0 order-preserving zero-preserving biject= ion between non-NaN floats and
=C2=A0 99.95% of `Int64`'s.=C2=A0
=C2=A0=C2=A0=C2=A0 Used the new function to improve `one_ulp`, which i= s now exposed:

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (** The next or previous rep= resentable float.=C2=A0 ULP stands for "unit of least precision",=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 and = is the spacing between floating point numbers.=C2=A0 Both [one_ulp `Up infi= nity] and
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0 [one_ulp `Down neg_infinity] return a nan. *)
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 val one_ulp : [`Up | `Down] ->= ; t -> t

- Changed `Map.symmetric_diff` to return a `Sequence.t`<= br>=C2=A0 instead of a `list`.
- Added `Sequence.filter_map`.
- Impro= ved `Stable_unit_test.Make_sexp_deserialization_test`'s error
=C2=A0 message so that it includes the expected sexp.

## custom_prin= tf

- Fixed a bug in which custom-printf syntax was incompatible with=
=C2=A0 labeled arguments.

=C2=A0=C2=A0=C2=A0 For example, the pr= eprocessor used to raise an exception on this code:

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 let f ~labeled_arg:() fmt = =3D ksprintf (fun _ -> ()) fmt in
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0 f !"hello" ~labeled_arg:()

## jenga

- Int= roduced jenga API v3, a small cleanup of v2 which has been planned
=C2= =A0 for a while.

## ocaml_plugin

- Fixed a bug in `ocaml_embed_compiler` on 32-bi= t machines.

=C2=A0=C2=A0=C2=A0 `ocaml_embed_compiler` tries to read = the full contents of the file as
=C2=A0=C2=A0=C2=A0 a string, but the st= ring might be too big on 32bits:

=C2=A0=C2=A0=C2=A0 https://github.com/ocaml= /opam-repository/pull/2062#issuecomment-43045491

## patdiff
<= br>- Added `Patdiff_core.iter_ansi`.

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (** Iter along the lines of = the diff and the breaks between hunks. Offers more flexibility
=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 regarding what th= e caller wants to do with the lines *)
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0 val iter_ansi
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0 :=C2=A0 f_hunk_break:((int*int) -> (int*int) -> unit)
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 -> f_line:(string= -> unit)
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ->= ; string Patience_diff.Hunk.t list
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 -> unit

## patience_diff

- Added plain = differ `Plain_diff` and use it in some cases for
=C2=A0 improved results= .
- Move modules under `Patience_diff_lib.Std`.

---

We hope you find it useful!

-- Ben Millwood, on behalf of the= Core team.
--001a11397ec0af95a704fe39328d--