[ANN] Core Suite 111.25.00

23 views
Skip to first unread message

Jeremie Dimino

unread,
Jul 31, 2014, 10:44:17 AM7/31/14
to ocaml...@googlegroups.com, caml...@inria.fr
I am pleased to announce the 111.25.00 release of the Core suite.

With this release all packages are now compatible with OCaml 4.02.

The following packages were upgraded:

- async_extra
- async_kernel
- async
- async_parallel
- async_unix
- core_extended
- core_kernel
- core
- custom_printf
- jenga
- ocaml_plugin
- patdiff
- patience_diff
- sexplib
- textutils

Files and documentation for this release are available on our
website and all packages are in opam:


Here is list of changes for this version:

## 111.25.00

### async

- add a dns example

### async_extra

- Removed `lazy` from the core of `Log`.
- Made `Log.Message.t` have a stable `bin_io`.

  The `Stable.V1` is the current serialization scheme, and `Stable.V0`
  is the serialization scheme in 111.18.00 and before, which is needed
  to talk to older systems.
- Changed `Rpc` to return `Connection_closed` if a connection ends
  before a response makes it to the caller.

  Previously, the dispatch output was never determined.

  Also, removed an unused field in one of the internal data structures
  of Async RPC.
- In `Versioned_rpc`, added `version:int` argument to `implement_multi` functions.
- In `Versioned_rpc`, the `Pipe_rpc.Make` functors now return an
  additional output functor.

  `Register'` is like `Register` but has in its input module:

  ```ocaml
  val response_of_model :
    Model.response Queue.t -> response Queue.t Deferred.t
  ```

  rather than

  ```ocaml
  val response_of_model : Model.response -> response
  ```

  This is analogous to `Pipe.map'` and `Pipe.map`.
- Added to `Log` a `V2` stable format and better readers for
  time-varying formats.
- In `Log`, added an optional `?time:Time.t` argument to allow callers
  to pass in the logged time of an event rather than relying on
  `Time.now ()`.

### async_kernel

- Fixed `Clock.run_at_intervals` to make the initial callback at an
  interval multiple.

  Previously, if `start` was in the past, `f` would run immediately
  rather than waiting for an interval of the form `start + i * span`.
  Now it always waits for an interval, even the first time it runs.

### async_parallel

- improve error handling

### async_unix

- Added `Unix.Addr_info` and `Name_info`, which wrap `getaddrinfo` and
  `getnameinfo`.
- Improved the scheduler's error message when the thread pool is
  stuck.

### core

- Added `Gc.disable_compaction` function.
- Added `Time.to_string_abs_trimmed`, which prints a trimmed time and
  takes a `zone` argument.
- Fixed `unix_stubs.c` to suppress a warning when building with some
  versions of gcc.
- Changed `Time.Zone` to allow the zoneinfo location to be specified
  by an environment variable.

  Closes #40
- Fix compatibility with 4.02

### core_extended

- Moved `Quickcheck` from `core`.
- Added [Int.gcd].

### core_kernel

- Fix build on FreeBSD

  Closes #10
- Added functions to `Container` interface: `sum`, `min_elt`,
  `max_elt`.

  ```ocaml
  (** Returns the sum of [f i] for i in the container *)
  val sum
    : (module Commutative_group.S with type t = 'sum)
    -> t -> f:(elt -> 'sum) -> 'sum

  (** Returns a min (resp max) element from the collection using the provided [cmp]
      function. In case of a tie, the first element encountered while traversing the
      collection is returned. The implementation uses [fold] so it has the same
      complexity as [fold]. Returns [None] iff the collection is empty. *)
  val min_elt : t -> cmp:(elt -> elt -> int) -> elt option
  val max_elt : t -> cmp:(elt -> elt -> int) -> elt option
  ```
- Made `Core_hashtbl_intf` more flexible. For instance supports
  modules that require typereps to be passed when creating a table.

  Address the following issues:

  The type `('a, 'b, 'z) create_options` needs to be consistently used
  so that `b` corresponds with the type of data values in the returned
  hash table.  The type argument was wrong in several cases.

  Added the type `('a, 'z) map_options` to `Accessors` so that
  map-like functions -- those that output hash tables of a different
  type than they input -- can allow additional arguments.
- Fixed a bug in `Dequeue`'s `bin_prot` implementation that caused it
  to raise when deserializing an empty dequeue.
- Made `Container.Make`'s interface match `Monad.Make`.
- Deprecated infix `or` in favor of `||`.
- Simplified the interface of `Arg` (which was already deprecated in
  favor of `Command`).
- Replaced `Bag.fold_elt` with `Bag.filter`.
- `Memo.general` now raises on non-positive `cache_size_bound`.
- Removed `Option.apply`.
- Removed `Result.call`, `Result.apply`.
- Moved `Quichcheck` to `core_extended`.

  It should not be used in new code.

### custom_printf

- Fix 4.02 compatibility.

### jenga

- Switched to un-version-numbered API.
- Renamed `Tenacious_sample_lib.Tenacious` to
  `Tenacious_sample_lib.Tenacious_sample` to avoid conflicts in the
  public release.
- Write `buildable_targets.list` (on alias `.info`).

### ocaml_plugin

- ignore more warnings by default

### patdiff

- add a `?file_names` argument to `Compare_core.diff_strings`

### patience_diff

- refactoring and more unit tests

### sexplib

- Fix compatibility with OCaml 4.02

-- 
Jeremie Dimino, for the Core team
Reply all
Reply to author
Forward
0 new messages