diff --git a/CHANGELOG.md b/CHANGELOG.md index 4e52914b4..27d8a5194 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,16 @@ # Changelog +## 3.8 + +- add `Containers_bencode` for lightweight (de)ser +- perf(CCHash): improve a bit commutative hashing of arrays/lists +- perf(CCHash): only hash prefix of string/bytes +- feat(CCList): Add `Assoc.{keys,values,map_values}` +- feat(CCArray): add `CCArray.map_inplace` +- add `CCString.{to_hex,of_hex}` + +- fix(Atomic): prevent race conditions under flambda, for now + ## 3.7 - add `Format.styling` diff --git a/containers-data.opam b/containers-data.opam index 58b551dbe..bf17602fd 100644 --- a/containers-data.opam +++ b/containers-data.opam @@ -1,5 +1,5 @@ opam-version: "2.0" -version: "3.7" +version: "3.8" author: "Simon Cruanes" maintainer: "simon.cruanes.2007@m4x.org" synopsis: "A set of advanced datatypes for containers" diff --git a/containers-thread.opam b/containers-thread.opam index 13bb82363..eb9adaabc 100644 --- a/containers-thread.opam +++ b/containers-thread.opam @@ -1,5 +1,5 @@ opam-version: "2.0" -version: "3.7" +version: "3.8" author: "Simon Cruanes" maintainer: "simon.cruanes.2007@m4x.org" license: "BSD-2-Clause" diff --git a/containers.opam b/containers.opam index 179fede21..315ba9e73 100644 --- a/containers.opam +++ b/containers.opam @@ -1,6 +1,6 @@ opam-version: "2.0" name: "containers" -version: "3.7" +version: "3.8" author: "Simon Cruanes" maintainer: "simon.cruanes.2007@m4x.org" license: "BSD-2-Clause" diff --git a/src/bencode/containers_bencode.mli b/src/bencode/containers_bencode.mli index ac55c02a1..8dae8aa85 100644 --- a/src/bencode/containers_bencode.mli +++ b/src/bencode/containers_bencode.mli @@ -2,7 +2,7 @@ See https://en.wikipedia.org/wiki/Bencode . - @since NEXT_RELEASE *) + @since 3.8 *) module Str_map : module type of Map.Make(String) diff --git a/src/core/CCArray.mli b/src/core/CCArray.mli index 25c8d32a5..e0a58354c 100644 --- a/src/core/CCArray.mli +++ b/src/core/CCArray.mli @@ -60,7 +60,7 @@ val get_safe : 'a t -> int -> 'a option val map_inplace : ('a -> 'a) -> 'a t -> unit (** [map_inplace f a] replace all elements of [a] by its image by [f]. - @since NEXT_RELEASE *) + @since 3.8 *) val fold : ('a -> 'b -> 'a) -> 'a -> 'b t -> 'a (** [fold f init a] computes [f (… (f (f init a.(0)) a.(1)) …) a.(n-1)], diff --git a/src/core/CCArrayLabels.mli b/src/core/CCArrayLabels.mli index 735950f1a..9062fceec 100644 --- a/src/core/CCArrayLabels.mli +++ b/src/core/CCArrayLabels.mli @@ -61,7 +61,7 @@ val get_safe : 'a t -> int -> 'a option val map_inplace : f:('a -> 'a) -> 'a t -> unit (** [map_inplace ~f a] replace all elements of [a] by its image by [f]. - @since NEXT_RELEASE *) + @since 3.8 *) val fold : f:('a -> 'b -> 'a) -> init:'a -> 'b t -> 'a (** [fold ~f ~init a] computes [f (… (f (f init a.(0)) a.(1)) …) a.(n-1)], diff --git a/src/core/CCSeq.mli b/src/core/CCSeq.mli index 6797048cf..63e974cd8 100644 --- a/src/core/CCSeq.mli +++ b/src/core/CCSeq.mli @@ -168,7 +168,7 @@ val unzip : ('a * 'b) t -> 'a t * 'b t val zip_i : 'a t -> (int * 'a) t (** [zip_i seq] zips the index of each element with the element itself. - @since NEXT + @since 3.8 *) (** {2 Misc} *) diff --git a/src/core/CCString.mli b/src/core/CCString.mli index 0ece1ff16..72230bca1 100644 --- a/src/core/CCString.mli +++ b/src/core/CCString.mli @@ -327,16 +327,16 @@ val equal_caseless : string -> string -> bool val to_hex : string -> string (** Convert a string with arbitrary content into a hexadecimal string. - @since NEXT_RELEASE *) + @since 3.8 *) val of_hex : string -> string option (** Convert a string in hex into a string with arbitrary content. - @since NEXT_RELEASE *) + @since 3.8 *) val of_hex_exn : string -> string (** Same as {!of_hex} but fails harder. @raise Invalid_argument if the input is not valid hex. - @since NEXT_RELEASE *) + @since 3.8 *) (** {2 Finding} diff --git a/src/core/CCStringLabels.mli b/src/core/CCStringLabels.mli index 866b9e5a4..e5796b583 100644 --- a/src/core/CCStringLabels.mli +++ b/src/core/CCStringLabels.mli @@ -356,16 +356,16 @@ val equal_caseless : string -> string -> bool val to_hex : string -> string (** Convert a string with arbitrary content into a hexadecimal string. - @since NEXT_RELEASE *) + @since 3.8 *) val of_hex : string -> string option (** Convert a string in hex into a string with arbitrary content. - @since NEXT_RELEASE *) + @since 3.8 *) val of_hex_exn : string -> string (** Same as {!of_hex} but fails harder. @raise Invalid_argument if the input is not valid hex. - @since NEXT_RELEASE *) + @since 3.8 *) (** {2 Finding}