prepare for 1.4

This commit is contained in:
Simon Cruanes 2017-10-11 09:29:31 +02:00
parent 66a8dfc396
commit d6f7f1570e
10 changed files with 32 additions and 12 deletions

View file

@ -1,5 +1,25 @@
= Changelog = Changelog
== 1.4
- add `CCMap.union`
- add `CCRef.swap`
- add `CCArray.swap`
- change signature of `CCWBTree.get_rank`
- add `CCWBTree.get_rank{,_exn}`
- more efficient `List.map` Using efficient chunking algorithm
- Fix `CCVector.append_array` (empty vector case)
- `CCFQueue.take_back_exn` raised InvalidArg instead of Empty on an empty queue
- faster `CCString.{prefix,suffix}`
- speed improvements and benchmarks for `CCString.{prefix,suffix}`
- add ocp-indent file
- fix `CCFun.tap` example in doc
- specify behavior of `CCFQueue.take_{front,back}_l` in some corner cases
- More tests for CCVector.append and CCVector.append_array
- assertions and cleanup in `CCPool`
== 1.3 == 1.3
- deprecate `CCBool.negate` - deprecate `CCBool.negate`

View file

@ -10,7 +10,7 @@ can be removed.
. `make update_next_tag` (to update `@since` comments; be careful not to change symlinks) . `make update_next_tag` (to update `@since` comments; be careful not to change symlinks)
. check status of modules (`{b status: foo}`) and update if required; . check status of modules (`{b status: foo}`) and update if required;
removed deprecated functions, etc. removed deprecated functions, etc.
. update `CHANGELOG.md` (see its end to find the right git command) . update `CHANGELOG.adoc` (see its end to find the right git command)
. commit the changes . commit the changes
. `git checkout stable` . `git checkout stable`
. `git merge master` . `git merge master`

2
_oasis
View file

@ -1,6 +1,6 @@
OASISFormat: 0.4 OASISFormat: 0.4
Name: containers Name: containers
Version: 1.3 Version: 1.4
Homepage: https://github.com/c-cube/ocaml-containers Homepage: https://github.com/c-cube/ocaml-containers
Authors: Simon Cruanes Authors: Simon Cruanes
License: BSD-2-clause License: BSD-2-clause

View file

@ -25,7 +25,7 @@ val compare : 'a ord -> 'a t ord
val swap : 'a t -> int -> int -> unit val swap : 'a t -> int -> int -> unit
(** [swap arr i j] swaps elements at indices [i] and [j]. (** [swap arr i j] swaps elements at indices [i] and [j].
@since NEXT_RELEASE *) @since 1.4 *)
val get : 'a t -> int -> 'a val get : 'a t -> int -> 'a

View file

@ -162,7 +162,7 @@ val some : 'a printer -> 'a option printer
"what is your @{<White>favorite color@}? @{<blue>blue@}! No, @{<red>red@}! Ahhhhhhh@.";; "what is your @{<White>favorite color@}? @{<blue>blue@}! No, @{<red>red@}! Ahhhhhhh@.";;
]} ]}
{b status: experimental} {b status: unstable}
@since 0.15 *) @since 0.15 *)
val set_color_tag_handling : t -> unit val set_color_tag_handling : t -> unit
@ -177,13 +177,13 @@ val set_color_default : bool -> unit
val with_color : string -> 'a printer -> 'a printer val with_color : string -> 'a printer -> 'a printer
(** [with_color "Blue" pp] behaves like the printer [pp], but with the given (** [with_color "Blue" pp] behaves like the printer [pp], but with the given
style. style.
{b status: experimental} {b status: unstable}
@since 0.16 *) @since 0.16 *)
val with_colorf : string -> t -> ('a, t, unit, unit) format4 -> 'a val with_colorf : string -> t -> ('a, t, unit, unit) format4 -> 'a
(** [with_colorf "Blue" out "%s %d" "yolo" 42] will behave like {!Format.fprintf}, (** [with_colorf "Blue" out "%s %d" "yolo" 42] will behave like {!Format.fprintf},
but wrapping the content with the given style but wrapping the content with the given style
{b status: experimental} {b status: unstable}
@since 0.16 *) @since 0.16 *)
val with_color_sf : string -> ('a, t, unit, string) format4 -> 'a val with_color_sf : string -> ('a, t, unit, string) format4 -> 'a
@ -193,7 +193,7 @@ val with_color_sf : string -> ('a, t, unit, string) format4 -> 'a
{[ {[
CCFormat.with_color_sf "red" "%a" CCFormat.Dump.(list int) [1;2;3] |> print_endline;; CCFormat.with_color_sf "red" "%a" CCFormat.Dump.(list int) [1;2;3] |> print_endline;;
]} ]}
{b status: experimental} {b status: unstable}
@since 0.21 *) @since 0.21 *)
val with_color_ksf : f:(string -> 'b) -> string -> ('a, t, unit, 'b) format4 -> 'a val with_color_ksf : f:(string -> 'b) -> string -> ('a, t, unit, 'b) format4 -> 'a

View file

@ -32,7 +32,7 @@ module type S = sig
val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
(** Union of both maps, using the function to combine bindings (** Union of both maps, using the function to combine bindings
that belong to both inputs that belong to both inputs
@since NEXT_RELEASE *) @since 1.4 *)
val of_seq : (key * 'a) sequence -> 'a t val of_seq : (key * 'a) sequence -> 'a t

View file

@ -35,7 +35,7 @@ module type S = sig
val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
(** Union of both maps, using the function to combine bindings (** Union of both maps, using the function to combine bindings
that belong to both inputs that belong to both inputs
@since NEXT_RELEASE *) @since 1.4 *)
val of_seq : (key * 'a) sequence -> 'a t val of_seq : (key * 'a) sequence -> 'a t
(** Same as {!of_list} *) (** Same as {!of_list} *)

View file

@ -33,7 +33,7 @@ val get_then_incr : int t -> int
val swap : 'a t -> 'a t -> unit val swap : 'a t -> 'a t -> unit
(** Swap values. (** Swap values.
@since NEXT_RELEASE *) @since 1.4 *)
val compare : 'a ord -> 'a t ord val compare : 'a ord -> 'a t ord

View file

@ -86,7 +86,7 @@ module type S = sig
(** [get_rank k m] looks for the rank of [k] in [m], i.e. the index (** [get_rank k m] looks for the rank of [k] in [m], i.e. the index
of [k] in the sorted list of bindings of [m]. of [k] in the sorted list of bindings of [m].
[let (`At n) = get_rank k m in nth_exn n m = get m k] should hold. [let (`At n) = get_rank k m in nth_exn n m = get m k] should hold.
@since NEXT_RELEASE *) @since 1.4 *)
val add : key -> 'a -> 'a t -> 'a t val add : key -> 'a -> 'a t -> 'a t

View file

@ -51,7 +51,7 @@ module type S = sig
(** [get_rank k m] looks for the rank of [k] in [m], i.e. the index (** [get_rank k m] looks for the rank of [k] in [m], i.e. the index
of [k] in the sorted list of bindings of [m]. of [k] in the sorted list of bindings of [m].
[let (`At n) = get_rank k m in nth_exn n m = get m k] should hold. [let (`At n) = get_rank k m in nth_exn n m = get m k] should hold.
@since NEXT_RELEASE *) @since 1.4 *)
val add : key -> 'a -> 'a t -> 'a t val add : key -> 'a -> 'a t -> 'a t