ocaml/opam-repository — pull request #1582 by bmillwood (2014-01-16 16:08:12+00:00)
Title: core 109.60.00

# 109.60.00

## async_extra

- Replaced `Tcp_file.serve`'s `~port:int` argument with
`Tcp.Where_to_listen.inet`.

## async_kernel

- Changed the scheduler to clear a job from its queue when it runs the
job, eliminating a performance regression from 109.57.

Clearing avoids spurious promotion of what would otherwise be dead
data associated with already-executed jobs.

## async_unix

- Fixed a bug in detection of the thread pool being stuck that could
overstate the amount of time the pool was stuck.

It had been incorrectly reporting the duration of the thread pool
being stuck if the pool had no work in it and then got enough jobs
to be stuck. In that situation, the duration included the time span
before the pool got stuck. If the pool had been idle long enough,
this could even spuriously abort the program.

## comparelib

- Fixed a type error in `with compare` of polymorphic variant inclusions.

## core

- Added `Iobuf.unsafe_advance`.

This can be used to benchmark inner loops that have redundant bounds
checking, to see if the checks matter. For example, see the
following two `advance` calls:

let rec process_buffer buf ~f =
let len = Iobuf.length buf in
if header_len <= len then
let msg_len = header_len + Iobuf.Unsafe.Peek.uint16_be buf ~pos:0 in
if msg_len <= len then begin
let len = msg_len - header_len in
Iobuf.advance buf header_len;
f (Protocol.packed_of_iobuf buf);
Iobuf.advance buf len;
process_buffer buf ~f
end

- Added `Weak_hashtbl.add_exn` and `sexp_of_t`.
- Fixed `Lock_file.create` to behave correctly if the target mountpoint
is out of space.

Previously in this situation, `Lock_file.create` would create an
empty lock and exit with exception trying to write pid/message
there. Subsequent runs would not able to read pid out of empty pid
file and `blocking_create` would block instead of removing defective
lock.

- Dropped the `-principal` flag from corebuild

## core_kernel

- Added `Gc.keep_alive`, which ensures its argument is live at the point
of the call.
- Added `Sexp.With_text` module, which keeps a value and the a sexp it
was generated from, preserving the original formatting.

## custom_printf, faillib, pipebang, type_conv

- Compatibility with warning 7 (method override)