OCamlPro/opam-repository — pull request #693 by ysulsky (2013-05-07 20:56:47+00:00)
Title: core 109.22.00-rc1

async_core
----------

- Changed `Clock` to use `Zero.Timing_wheel` rather than `Core.Heap`.

This should significantly improve performance of programs that have
many simultaneous `Clock`events

core
----

- Added new module `Validate`

Added bounds validation to `Comparable`, so that all comparable modules
automatically get:

```ocaml
val validate_lbound: min : t bound -> t Validate.check
val validate_ubound: max : t bound -> t Validate.check
val validate_bound : min : t bound -> max : t bound -> t Validate.check
```

One can also call `Comparable.With_zero` to get:

```ocaml
val validate_positive : t Validate.check
val validate_non_negative : t Validate.check
val validate_negative : t Validate.check
val validate_non_positive : t Validate.check
val is_positive : t -> bool
val is_non_negative : t -> bool
val is_negative : t -> bool
val is_non_positive : t -> bool
```

By convention, we are going to name `Validate.check` functions that are added to a module
by prefixing the name with `validate_`. We considered making a `Validate` submodule, but
that would be too hard to deal with because of restrictions in OCaml that make it hard to
extend and compose submodules.

- Improved `Lock_file.Nfs` to clean up after itself if a program is restarted on the same machine.
- Added function `Signal.can_send_to : Pid.t -> bool`.
- Eliminated check in `Flags.Make` for zero flags so we don't fail when a flag is zero.

Often, flags that are not available are set to `0` (for example `O_CLOEXEC` is not
available on all systems).

- Changed the `Stable` unit tests for `Time.V1` to actually use `Time.V1.sexp_of_t` instead of an independently defined function.
- In the C stubs, factored out code for converting between `timespec`s and `double`s.

```c
struct timespec timespec_of_double(double seconds);
double timespec_to_double(struct timespec ts);
```
ocaml_plugin
------------

- Fixed a temporary directory leak when using the executable without the embedded archive.
- Fixed a confusing error message when giving files that are not valid OCaml filenames.