v2.4.0

@gasche gasche released this Feb 11, 2016 · 331 commits to master since this release

This release contains a handful of new functions and bugfixes -- see the detailed changelog below. Two highlights are the pop_{min,max} in BatSet and pop_{min,max}_bindings in BatMap contributed by François Berenger, and a nasty bug when hashing values close to min_int spotted by Martin Neuhäußer -- this long-hidden bug was due to a mistake in the backward-compatibility code for the hashing function transition between OCaml 3.12 and OCaml 4.00.

With many thanks to the contributors to this new release, including Guillaume Allais, Aleksey Z. Arens, Nils Becker, François Berenger, Sang Kil Cha, Simon Cruanes, Bob Fang, Anders Fugmann, Rudi Grinberg, Herry, Christoph Höger, Max Mouratov, Martin R. Neuhäußer, Gabriel Scherer, Quentin Stievenart, Kevin Brubeck Unhammer, Ralf Vogler, and Xavier Van de Woestyne.

New contributors are always welcome, you can have a look at the issue list to find something you would be interested into working on and discuss with the maintainers.

With our best regards,
The OCaml batteries-included team.

Detailed changelog

- BatBitSet: use Bytes instead of String
  (Gabriel Scherer)
- BatHashtbl: fix hash computation bug introduced by 4.01 (issue #609)
  (Gabriel Scherer, report by Martin R. Neuhäußer)
- BatText: synchronize nsplit to match BatString.nsplit
  (Gabriel Scherer)
- BatLazyList: fix remove_all_such documentation
  (Xavier Van de Woestyne)
- BatMap: add pop_min_binding: 'a t -> (key * 'a) * 'a t
      and pop_max_binding: 'a t -> (key * 'a) * 'a t
  (Francois Berenger)
- BatMap: add at_rank_exn: int -> ('key, 'a) t -> ('key * 'a)
      and update: key -> key -> 'a -> 'a t -> 'a t
  (Francois Berenger)
- BatEnum: add interleave: 'a t array -> 'a t
  (Aleksey Z. Arens)
- BatFormat: expose asprintf for V>=4.01
  (Ralf Vogler)
- BatSet: add at_rank_exn: int -> t -> elt
      and update: elt -> elt -> t -> t
  (Francois Berenger)
- BatUTF8: add enum: t -> BatUChar.t BatEnum.t
  (Kevin Brubeck Unhammer)
- BatSet: add to_array: t -> elt array
      and of_array: elt array -> t
      and test for to_list
  (Francois Berenger)
- BatSet: add pop_max: 'a t -> 'a * 'a t
      and pop_min: 'a t -> 'a * 'a t
  (Francois Berenger)
- BatSplay: hardened against read-only-data compiler optimization
  (Gabriel Scherer)
- BatList: simplified interleave implementation
  (Francois Berenger)
- BatOption: add
  Infix.(>>=): 'a option -> ('a -> 'b option) -> 'b option
  (Herry Herry)
- BatHashtbl: modify now have same semantics than replace for the key
  (Anders Fugmann)
- BatHashtbl: more efficient modify_opt and modify_def
  (Anders Fugmann)
- BatFormat: add pp_print_list: ?pp_sep:(formatter -> unit -> unit) ->
                            (formatter -> 'a -> unit) ->
                            (formatter -> 'a list -> unit)
         and pp_print_text: formatter -> string -> unit
  (Christoph Höger)
- BatEnum: add uniq_by: ('a -> 'a -> bool) -> 'a t -> 'a t
       and uniqq: 'a t -> 'a t
  (Max Mouratov)
- BatEnum: fix uniq to use structural comparison
  (Max Mouratov)
- BatUnix: add run_and_read: string -> process_status * string