OCamlPro/opam-repository — pull request #785 by diml (2013-06-11 10:04:22+00:00)
Title: core 109.28.00-rc1

# 109.28.00

## async_core

- Eliminated a messy dependency cycle in `async_core`, so that
`Monitor.t` no longer contains a `Tail.t`.

`async_core` was messy because of cycle between the following types:

```
Execution_context
--> Scheduler
--> Ivar
--> Deferred
--> Tail
--> Monitor
```

This messiness caused the need for the `Raw` signature, for the
various `Scheduler_dependent` functors, for making various types
polymorphic in `execution_context`, and then instantiating the
polymorphism later.

The cause of the problem was that `Monitor` contained a `Tail`. We
eliminated that, so that there is no longer a cycle, and defined
things in order:

```
Monitor
Execution_context
Job
Scheduler
Ivar
Deferred
Tail
Stream
```

Replaced the `errors` tail from the monitor type:

```ocaml
errors : (exn, 'execution_context) Raw_tail.t;
```

with a list of handlers:

```ocaml
mutable error_handlers : (exn -> unit) list;
```

Cleaned up all the messiness caused by the cycle -- eliminated the
`Raw` signature, the `Scheduler_dependent` functors, and the
unnecessary polymorphism.

Cleaned up the long standing annoyance with `Async.Stream`, in which
we couldn't expose the `next` sum type and people had to use
annoying `Stream.of_raw` calls. `Stream.of_raw` is now gone.

## async_extra

- Fixed an error message in `Versioned_rpc` that was swapping which
versions were supported by the caller and the callee.

## core

- Moved `Timing_wheel` from `Zero`.

## core_extended

- In `Shell` functions, made the amount of captured stderr/stdout
configurable.

## core_kernel

- Moved all the contents of the `Zero` library into `Core`, mostly
into `Core_kernel`.

We want to start using `Zero` stuff more in `Core`, which couldn't
be done with `Zero` as a separate library.

Everything moved into `Core_kernel`, except for `Timing_wheel`,
which moved into `Core` proper, due to its dependence on `Time`.
- Renamed `Flat_tuple_array` as `Flat_array`.
- Added `Dequeue.{front,back}_index_exn`

These are more efficient than using `{front,back}_index` and then
`Option.value_exn`.
- Exposed `Core.String.unsafe_{get,set}`.

## pipebang

- Fixed `pa_pipebang` in the toplevel.

`pa_pipebang` had registered an AST filter for implementations but
not for the toplevel.

## type_conv

- Fixed an issue with `type_conv` in the toplevel.

Used AST filters for the `_no_unused_value_warning_` machinery.
`type_conv` modifies the parser but it didn't work well in the
toplevel.

Removed the `parsing_mli` reference, an instead always add the
special `_no_unused_value_warning_` type and just strip it for
signature items.