prepare for 2.0

This commit is contained in:
Simon Cruanes 2018-01-21 15:38:34 -06:00
parent bc27e60a81
commit 446ae9f26b
14 changed files with 73 additions and 58 deletions

View file

@ -1,6 +1,29 @@
= Changelog = Changelog
== 1.5.1 == 2.0
=== breaking
- move to jbuilder (closes #165), requiring at least OCaml 4.02
- become defensive w.r.t polymorphic operators:
* Internally shadow polymorphic operators and functions from Pervasives
by `include CCMonomorphic` in `Containers` module
* Shadow the physical equality operator
* Shadow polymorphic functions in `CCList`
- rename `print` to `pp` for Format printers (closes #153)
- remove `CCFlatHashtbl`
=== others
- many typos and style fixes (from Fourchaux)
- Add `CCList.iteri2` and `CCList.foldi2`
- remove `PARAM.min_size` in `CCPool`
- Add `CCEqual.physical`
- Avoid uses of the polymorphic operators
- Add a `CCMonomorphic` module shipped into a `containers.monomorphic` library
- make complexity of `Array.lookup` explicit (closes #174)
== 1.5.1, 1.5.2
- re-export `Format` types and functions in `CCFormat` - re-export `Format` types and functions in `CCFormat`

View file

@ -1,32 +0,0 @@
= HOWTO
== Make a release
Beforehand, check `grep deprecated -r src` to see whether some functions
can be removed.
. `make test`
. update version in `_oasis`
. `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;
removed deprecated functions, etc.
. update `CHANGELOG.adoc` (see its end to find the right git command)
. commit the changes
. `git checkout stable`
. `git merge master`
. `oasis setup; make test doc`
. update `opam` (the version field; remove `oasis` in deps)
. tag, and push both to github
. `opam pin add containers https://github.com/c-cube/ocaml-containers.git#<release>`
. new opam package: `opam publish prepare; opam publish submit`
. re-generate doc: `make doc push_doc`
== List Authors
`git log --format='%aN' | sort -u`
== Subtree
If gen is https://github.com/c-cube/gen.git[this remote]:
git subtree pull --prefix gen gen master --squash

View file

@ -1,5 +1,3 @@
# OASIS_START
# DO NOT EDIT (digest: 4c293511860bb966e727ba6f0ecc8197)
all: build test all: build test
@ -27,8 +25,8 @@ VERSION=$(shell awk '/^version:/ {print $$2}' containers.opam)
update_next_tag: update_next_tag:
@echo "update version to $(VERSION)..." @echo "update version to $(VERSION)..."
sed -i "s/NEXT_VERSION/$(VERSION)/g" src/*.ml src/*.mli sed -i "s/NEXT_VERSION/$(VERSION)/g" $(wildcard src/**/*.ml) $(wildcard src/**/*.mli)
sed -i "s/NEXT_RELEASE/$(VERSION)/g" src/*.ml src/*.mli sed -i "s/NEXT_RELEASE/$(VERSION)/g" $(wildcard src/**/*.ml) $(wildcard src/**/*.mli)
watch: watch:
while find src/ benchs/ -print0 | xargs -0 inotifywait -e delete_self -e modify ; do \ while find src/ benchs/ -print0 | xargs -0 inotifywait -e delete_self -e modify ; do \

View file

@ -476,3 +476,29 @@ See link:doc/containers.adoc[the extended documentation] for more examples.
Powered by image:http://oasis.forge.ocamlcore.org/oasis-badge.png[alt="OASIS", style="border: none;", link="http://oasis.forge.ocamlcore.org/"] Powered by image:http://oasis.forge.ocamlcore.org/oasis-badge.png[alt="OASIS", style="border: none;", link="http://oasis.forge.ocamlcore.org/"]
== HOWTO (for contributors)
=== Make a release
Beforehand, check `grep deprecated -r src` to see whether some functions
can be removed.
. `make test`
. update version in `_oasis`
. `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;
removed deprecated functions, etc.
. update `CHANGELOG.adoc` (see its end to find the right git command)
. commit the changes
. `git checkout stable`
. `git merge master`
. `oasis setup; make test doc`
. update `opam` (the version field; remove `oasis` in deps)
. tag, and push both to github
. `opam pin add containers https://github.com/c-cube/ocaml-containers.git#<release>`
. new opam package: `opam publish prepare; opam publish submit`
. re-generate doc: `make doc push_doc`
=== List Authors
`git log --format='%aN' | sort -u`

View file

@ -1,8 +1,8 @@
opam-version: "1.2" opam-version: "1.2"
name: "containers" name: "containers"
version: "dev" version: "2.0"
author: "Simon Cruanes" author: "Simon Cruanes"
maintainer: "simon.cruanes@inria.fr" maintainer: "simon.cruanes.2007@m4x.org"
build: [ build: [
["jbuilder" "build" "-p" name "-j" jobs] ["jbuilder" "build" "-p" name "-j" jobs]
] ]

View file

@ -13,7 +13,7 @@ val poly : 'a t
val physical : 'a t val physical : 'a t
(** Standard physical equality (** Standard physical equality
@since NEXT_RELEASE *) @since 2.0 *)
val int : int t val int : int t
val string : string t val string : string t

View file

@ -235,7 +235,7 @@ module type S = sig
val pp : key printer -> 'a printer -> 'a t printer val pp : key printer -> 'a printer -> 'a t printer
(** Printer for table (** Printer for table
@since 0.13 @since 0.13
Renamed from [print] @since NEXT_RELEASE *) Renamed from [print] @since 2.0 *)
end end
(*$inject (*$inject

View file

@ -105,7 +105,7 @@ module Poly : sig
val pp : 'a printer -> 'b printer -> ('a, 'b) Hashtbl.t printer val pp : 'a printer -> 'b printer -> ('a, 'b) Hashtbl.t printer
(** Printer for table (** Printer for table
@since 0.13 @since 0.13
Renamed from [print] @since NEXT_RELEASE *) Renamed from [print] @since 2.0 *)
end end
include module type of Poly include module type of Poly
@ -205,7 +205,7 @@ module type S = sig
val pp : key printer -> 'a printer -> 'a t printer val pp : key printer -> 'a printer -> 'a t printer
(** Printer for tables (** Printer for tables
@since 0.13 @since 0.13
Renamed from {!print} @since NEXT_RELEASE *) Renamed from {!print} @since 2.0 *)
end end
module Make(X : Hashtbl.HashedType) : module Make(X : Hashtbl.HashedType) :

View file

@ -363,7 +363,7 @@ val iteri : (int -> 'a -> unit) -> 'a t -> unit
val iteri2 : (int -> 'a -> 'b -> unit) -> 'a t -> 'b t -> unit val iteri2 : (int -> 'a -> 'b -> unit) -> 'a t -> 'b t -> unit
(** @raise Invalid_argument when lists do not have the same length. (** @raise Invalid_argument when lists do not have the same length.
@since NEXT_RELEASE *) @since 2.0 *)
val foldi : ('b -> int -> 'a -> 'b) -> 'b -> 'a t -> 'b val foldi : ('b -> int -> 'a -> 'b) -> 'b -> 'a t -> 'b
(** Fold on list, with index. *) (** Fold on list, with index. *)
@ -371,7 +371,7 @@ val foldi : ('b -> int -> 'a -> 'b) -> 'b -> 'a t -> 'b
val foldi2 : ('c -> int -> 'a -> 'b -> 'c) -> 'c -> 'a t -> 'b t -> 'c val foldi2 : ('c -> int -> 'a -> 'b -> 'c) -> 'c -> 'a t -> 'b t -> 'c
(** Fold on two lists, with index. (** Fold on two lists, with index.
@raise Invalid_argument when lists do not have the same length. @raise Invalid_argument when lists do not have the same length.
@since NEXT_RELEASE *) @since 2.0 *)
val get_at_idx : int -> 'a t -> 'a option val get_at_idx : int -> 'a t -> 'a option
(** Get by index in the list. (** Get by index in the list.
@ -501,7 +501,7 @@ end
val assoc : eq:('a -> 'a -> bool) -> 'a -> ('a * 'b) t -> 'b val assoc : eq:('a -> 'a -> bool) -> 'a -> ('a * 'b) t -> 'b
(** Same as [Assoc.get_exn]. (** Same as [Assoc.get_exn].
@since NEXT_RELEASE *) @since 2.0 *)
val assoc_opt : eq:('a -> 'a -> bool) -> 'a -> ('a * 'b) t -> 'b option val assoc_opt : eq:('a -> 'a -> bool) -> 'a -> ('a * 'b) t -> 'b option
(** Same as [Assoc.get]. (** Same as [Assoc.get].
@ -513,11 +513,11 @@ val assq_opt : 'a -> ('a * 'b) t -> 'b option
val mem_assoc : eq:('a -> 'a -> bool) -> 'a -> ('a * _) t -> bool val mem_assoc : eq:('a -> 'a -> bool) -> 'a -> ('a * _) t -> bool
(** Same as [Assoc.mem]. (** Same as [Assoc.mem].
@since NEXT_RELEASE *) @since 2.0 *)
val remove_assoc : eq:('a -> 'a -> bool) -> 'a -> ('a * 'b) t -> ('a * 'b) t val remove_assoc : eq:('a -> 'a -> bool) -> 'a -> ('a * 'b) t -> ('a * 'b) t
(** Same as [Assoc.remove]. (** Same as [Assoc.remove].
@since NEXT_RELEASE *) @since 2.0 *)
(** {2 References on Lists} (** {2 References on Lists}
@since 0.3.3 *) @since 0.3.3 *)

View file

@ -374,23 +374,23 @@ end
val assoc : eq:('a -> 'a -> bool) -> 'a -> ('a * 'b) t -> 'b val assoc : eq:('a -> 'a -> bool) -> 'a -> ('a * 'b) t -> 'b
(** Same as [Assoc.get_exn]. (** Same as [Assoc.get_exn].
@since NEXT_RELEASE *) @since 2.0 *)
val assoc_opt : eq:('a -> 'a -> bool) -> 'a -> ('a * 'b) t -> 'b option val assoc_opt : eq:('a -> 'a -> bool) -> 'a -> ('a * 'b) t -> 'b option
(** Same as [Assoc.get]. (** Same as [Assoc.get].
@since NEXT_RELEASE *) @since 2.0 *)
val assq_opt : 'a -> ('a * 'b) t -> 'b option val assq_opt : 'a -> ('a * 'b) t -> 'b option
(** Safe version of {!assq}. (** Safe version of {!assq}.
@since NEXT_RELEASE *) @since 2.0 *)
val mem_assoc : eq:('a -> 'a -> bool) -> 'a -> ('a * _) t -> bool val mem_assoc : eq:('a -> 'a -> bool) -> 'a -> ('a * _) t -> bool
(** Same as [Assoc.mem]. (** Same as [Assoc.mem].
@since NEXT_RELEASE *) @since 2.0 *)
val remove_assoc : eq:('a -> 'a -> bool) -> 'a -> ('a * 'b) t -> ('a * 'b) t val remove_assoc : eq:('a -> 'a -> bool) -> 'a -> ('a * 'b) t -> ('a * 'b) t
(** Same as [Assoc.remove]. (** Same as [Assoc.remove].
@since NEXT_RELEASE *) @since 2.0 *)
(** {2 References on Lists} (** {2 References on Lists}
@since 0.3.3 *) @since 0.3.3 *)

View file

@ -43,12 +43,12 @@ module type S = sig
val pp_buf : Buffer.t -> t -> unit val pp_buf : Buffer.t -> t -> unit
(** Renamed from [pp]. (** Renamed from [pp].
@since NEXT_RELEASE *) @since 2.0 *)
val pp : Format.formatter -> t -> unit val pp : Format.formatter -> t -> unit
(** Print the string within quotes. (** Print the string within quotes.
Renamed from [print]. Renamed from [print].
@since NEXT_RELEASE *) @since 2.0 *)
end end
(** {2 Strings} *) (** {2 Strings} *)

View file

@ -140,7 +140,7 @@ module type S = sig
val pp : key printer -> 'a printer -> 'a t printer val pp : key printer -> 'a printer -> 'a t printer
(** Renamed from [val print]. (** Renamed from [val print].
@since NEXT_RELEASE *) @since 2.0 *)
val as_tree : 'a t -> [`L of int * (key * 'a) list | `N ] ktree val as_tree : 'a t -> [`L of int * (key * 'a) list | `N ] ktree
(** For debugging purpose: explore the structure of the tree, (** For debugging purpose: explore the structure of the tree,

View file

@ -128,7 +128,7 @@ module type S = sig
val pp : key printer -> 'a printer -> 'a t printer val pp : key printer -> 'a printer -> 'a t printer
(** Renamed from [val print]. (** Renamed from [val print].
@since NEXT_RELEASE *) @since 2.0 *)
(**/**) (**/**)
val node_ : key -> 'a -> 'a t -> 'a t -> 'a t val node_ : key -> 'a -> 'a t -> 'a t -> 'a t

View file

@ -2,7 +2,7 @@
(* This file is free software, part of containers. See file "license" for more details. *) (* This file is free software, part of containers. See file "license" for more details. *)
(** {1 Shadow unsafe functions and operators from Pervasives} *) (** {1 Shadow unsafe functions and operators from Pervasives} *)
(** @since NEXT_RELEASE *) (** @since 2.0 *)
val (=) : int -> int -> bool val (=) : int -> int -> bool
val (<>) : int -> int -> bool val (<>) : int -> int -> bool