Skip to content

[new release] containers (2 packages) (3.18)#29372

Merged
jmid merged 1 commit intoocaml:masterfrom
c-cube:release-containers-v3.18
Feb 16, 2026
Merged

[new release] containers (2 packages) (3.18)#29372
jmid merged 1 commit intoocaml:masterfrom
c-cube:release-containers-v3.18

Conversation

@c-cube
Copy link
Contributor

@c-cube c-cube commented Feb 11, 2026

A modular, clean and powerful extension of the OCaml standard library

CHANGES:
  • fix leb128 slice bug
  • fix leb128 Int64.min_int bug
  • add tests for leb128 library (add tests for leb128 library c-cube/ocaml-containers#486)
  • some breaking changes after the big bump to 4.08 as lower bound, thanks to @fardale for the cleanup
    • breaking: CCListLabel.compare and CCListLabel.equal takes the function on the elements as named arguments
    • breaking: CCListLabel.init now takes the length as a named arguments to follow the Stdlib
    • breaking: change the semantic of CCFloat.{min,max} with respect to NaN to follow the Stdlib
    • breaking: change the semantic of CCInt.rem with respect to negative number to follow the Stdlib
    • breaking: change the order of argument of CCMap.add_seq to align with the stdlib.

@mseri
Copy link
Member

mseri commented Feb 12, 2026

Is this an oversight or they need a new upper bound?


#=== ERROR while compiling decoders.0.1.2 =====================================#
# context              2.5.0 | linux/x86_64 | ocaml-base-compiler.4.14.2 | file:///home/opam/opam-repository
# path                 ~/.opam/4.14/.opam-switch/build/decoders.0.1.2
# command              ~/.opam/opam-init/hooks/sandbox.sh build dune build -p decoders -j 71
# exit-code            1
# env-file             ~/.opam/log/decoders-7-dd5552.env
# output-file          ~/.opam/log/decoders-7-dd5552.out
### output ###
# (cd _build/default && /home/opam/.opam/4.14/bin/ocamlc.opt -w -40 -g -bin-annot -I src/.decoders.objs/byte -I /home/opam/.opam/4.14/lib/containers -I /home/opam/.opam/4.14/lib/containers/domain -I /home/opam/.opam/4.14/lib/containers/monomorphic -I /home/opam/.opam/4.14/lib/either -intf-suffix .ml -no-alias-deps -open Decoders__ -o src/.decoders.objs/byte/decoders__Decoders_util.cmo -c -impl src/decoders_util.ml)
# File "src/decoders_util.ml", line 3, characters 39-54:
# 3 |   type ('good, 'bad) t = ('good, 'bad) CCResult.result = | Ok of 'good | Error of 'bad
#                                            ^^^^^^^^^^^^^^^
# Error: Unbound type constructor CCResult.result
# (cd _build/default && /home/opam/.opam/4.14/bin/ocamlopt.opt -w -40 -g -I src/.decoders.objs/byte -I src/.decoders.objs/native -I /home/opam/.opam/4.14/lib/containers -I /home/opam/.opam/4.14/lib/containers/domain -I /home/opam/.opam/4.14/lib/containers/monomorphic -I /home/opam/.opam/4.14/lib/either -intf-suffix .ml -no-alias-deps -open Decoders__ -o src/.decoders.objs/native/decoders__Decoders_util.cmx -c -impl src/decoders_util.ml)
# File "src/decoders_util.ml", line 3, characters 39-54:
# 3 |   type ('good, 'bad) t = ('good, 'bad) CCResult.result = | Ok of 'good | Error of 'bad
#                                            ^^^^^^^^^^^^^^^
# Error: Unbound type constructor CCResult.result

@c-cube
Copy link
Contributor Author

c-cube commented Feb 12, 2026 via email

@mseri
Copy link
Member

mseri commented Feb 14, 2026

I created a PR for the upper bound. Can you have a look at the tests that are stack overflowing? E.g.

#=== ERROR while compiling containers.3.18 ====================================#
# context              2.3.0 | linux/x86_64 | ocaml-base-compiler.4.14.2 | pinned(https://github.com/c-cube/ocaml-containers/releases/download/v3.18/containers-3.18.tbz)
# path                 ~/.opam/4.14/.opam-switch/build/containers.3.18
# command              ~/.opam/opam-init/hooks/sandbox.sh build dune runtest -p containers -j 71
# exit-code            1
# env-file             ~/.opam/log/containers-7-e3e404.env
# output-file          ~/.opam/log/containers-7-e3e404.out
### output ###
# (cd _build/default/tests/cbor && ./t_appendix_a.exe ./appendix_a.json)
# 
# 
# #####
# OK: 78 ok, 4 skip
# (cd _build/default/src/core/tests && ./check_labelled_mods.exe)
# labelled modules are consistent ✔
# (cd _build/default/tests/leb128 && ./t_leb128.exe)
# seed: 23e47ec0d0701656
# testing test leb128: running 22 tests…
# 22 tests done in 0.083s
# OK
# (cd _build/default/tests/core && ./t.exe)
# seed: 51c34efa99ed79b0
# testing containers: running 1220 tests…
# 1220 tests done in 13.275s
# OK
# File "tests/pvec/dune", line 2, characters 7-8:
# 2 |  (name t)
#            ^
# (cd _build/default/tests/pvec && ./t.exe)
# seed: b3f2314d1157877e
# testing containers.pvec: running 17 tests…
# FAILED: (test :file 'tests/pvec/t_pvec.ml' :name "ops" :n 16)
# 17 tests done in 404.181s
# ERROR (1 failures)
# 
# ========
# failed (test :file 'tests/pvec/t_pvec.ml' :name "ops" :n 16):
# ops raised Stack overflow
#   on instance `[append [0;0;0;0;0];flat_map [0;0;0;0;0];push 0;flat_map [0;0;0;0;0];check_get 111;flat_map [0;0;0];check_rev_iter;check_rev_iter;add_list [];check_is_empty;flat_map [0;0;0;0];check_is_empty;check_get 672;flat_map [0;0;0;0];check_to_gen;check_last;append [];push 0;check_choose;push 0;check_to_gen;pop;check_rev_iter;flat_map [0;0;0;0;0];check_last;check_get 88035;flat_map [0;0;0;0];push 0]` (after 153 shrink steps)
#   :backtrace 

CHANGES:

- fix leb128 slice bug
- fix leb128 `Int64.min_int` bug
- add tests for leb128 library (c-cube/ocaml-containers#486)
- fix size explosion in `t_pvec.ml` found in CI
- some breaking changes after the big bump to 4.08 as lower bound, thanks to @fardale for the cleanup
  * breaking: CCListLabel.compare and CCListLabel.equal takes the function on the elements as named arguments
  * breaking: CCListLabel.init now takes the length as a named arguments to follow the Stdlib
  * breaking: change the semantic of CCFloat.{min,max} with respect to NaN to follow the Stdlib
  * breaking: change the semantic of CCInt.rem with respect to negative number to follow the Stdlib
  * breaking: change the order of argument of `CCMap.add_seq` to align with the stdlib.
@c-cube c-cube force-pushed the release-containers-v3.18 branch from c256148 to 4d2bcb3 Compare February 15, 2026 01:42
@c-cube
Copy link
Contributor Author

c-cube commented Feb 15, 2026

found the culprit, a size explosion in qcheck that lead to @ overflowing in some tests. Fixed.

Copy link
Member

@jmid jmid left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, LGTM!

FTR CI is down to

  • revdeps (Failed to get sources + ffmpeg.0.4.3 failed to build)
  • opam-2.0 failures

@jmid jmid merged commit ff53f72 into ocaml:master Feb 16, 2026
4 of 5 checks passed
@c-cube c-cube deleted the release-containers-v3.18 branch February 16, 2026 22:41
@c-cube
Copy link
Contributor Author

c-cube commented Feb 16, 2026

Thank you!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants