OCamlPro/opam-repository — pull request #1063 by ysulsky (2013-09-06 13:39:22+00:00)
Title: core 109.41.00-rc1

## Async_parallel

- Renamed `Parallel` as `Async_parallel`.

## Async_unix

- Changed `Reader` to treat more `errno` responses to a `read()` system call as `EOF` rather than raise.

The following are now treated as `EOF`.

```
ENETDOWN
ENETRESET
ENETUNREACH
ETIMEDOUT
```

- Improved the error message that async prints when the thread pool is stuck, including the time of the error.

## Bin_prot

- Remove all uses of "unwrapped" pointers

Unwrapped pointers cannot coexist with the remove-page-table
optimization.

Removed all the C stubs for reading/writing and used instead either
the new primitives of the next OCaml or standard OCaml code
reading/writing integers byte by byte.

Since we don't have unsafe/safe functions anymore but only safe ones,
removed all the `bin_{read,write}_t_` functions.

Also renamed `bin_read_t__` to `__bin_read_t__` for the same reason as
sexplib: to avoid confusion with the function generated for `t_` and
hide it in the toplevel.

## Core_kernel

- Added `Map.of_alist_reduce`.

This function is a natural addition alongside `of_alist_fold`. Its
advantage is that it does not require an `init` argument like
`of_alist_fold`. Moreover, it does not involve `option` types, like
`List.reduce` does in order to handle the empty list case.

## Core

- Added `Command.Spec.map_anon` and `map_flag`.

```ocaml
(** [map_flag flag ~f] transforms the parsed result of [flag] by applying [f] *)
val map_flag : 'a flag -> f:('a -> 'b) -> 'b flag

(** [map_anons anons ~f] transforms the parsed result of [anons] by applying [f] *)
val map_anons : 'a anons -> f:('a -> 'b) -> 'b anons
```

- Fixed `Unix.open_flag` to compile with OCaml 4.01.

It needed the additional constructor `O_CLOEXEC`.

## Core_bench

- Columns that have a `+` prefix are now always displayed, whereas
columns that don't are displayed only if they have meaningful data.

- Added the ability to reload saved metrics (benchmark test data) so
that bench can re-analyze them.

## Ocaml_plugin

- Added option `-strict-sequence`, which is set to `true` by default.

## Type_conv

- Fixed the generated code of `typerep` and `sexplib` on sum types containing `True` or `False`.

Without this fix, `typerep` would wrong constructor names for
`Blang.t`, for instance.

`Variantslib` has the same problem but applying the same fix there
would still not make the generated code compile because the generated
code would contain labels and variable named `true` or `false`.

Other syntax extensions should not be affected because they don't
build strings from constructor names.