# \[ANN\] containers 3.6

**URL:** <https://discuss.ocaml.org/t/ann-containers-3-6/8677>\
**Category:** Ecosystem\
**Tags:** release, announce\
**Created:** [October 22, 2021, 1:56pm UTC](https://discuss.ocaml.org/t/ann-containers-3-6/8677 "2021-10-22T13:56:03Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![c-cube](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ocaml.org/c-cube/32/1727_2.png) [@c-cube](https://discuss.ocaml.org/u/c-cube)\
**Post date:** [October 22, 2021, 1:56pm UTC](https://discuss.ocaml.org/t/ann-containers-3-6/8677/1 "2021-10-22T13:56:03Z")

</div>

Howdy y’all 🤠,

Containers 3.6 has just been merged on opam. Containers is a stdlib extension (not replacement) that aims at being lightweight, fast, and modular. This release comes with a renaming of `CCOpt` to `CCOption` (and associated deprecation, although it will not happen before 4.0), along with bugfixes and a revamp of the `CCParse` module.

The new `CCParse` is a small library of parser combinators that ships directly with `containers`, and is intended for small parsers (where `scanf` would be used otherwise, typically). In particular, I’ve tried to make it possible to mix “regular” forward parsers, and ad-hoc parsers based on splitting input on tokens (e.g. splitting into lines, splitting on a separator like `,`, etc.). The API is [here](https://c-cube.github.io/ocaml-containers/3.6/containers/CCParse/index.html) and there are some examples:

- a [tiny S-expression parser](https://github.com/c-cube/ocaml-containers/blob/master/examples/ccparse_sexp.ml)
- an [IRC log parser](https://github.com/c-cube/ocaml-containers/blob/master/examples/ccparse_irclogs_real.cond.ml) (for weechat logs) that also illustrates the use of let-operators.

This module is still pretty experimental, so feedback is very welcome. Special thanks to @Fardale for his review.

Changelog and release are [here](https://github.com/c-cube/ocaml-containers/releases/tag/v3.6).

---

<div class="post-metadata">

**Author:** ![dmbaturin](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ocaml.org/dmbaturin/32/2074_2.png) [@dmbaturin](https://discuss.ocaml.org/u/dmbaturin)\
**Post date:** [October 27, 2021, 10:40am UTC](https://discuss.ocaml.org/t/ann-containers-3-6/8677/2 "2021-10-27T10:40:01Z")

</div>

Do you know which projects in the opam repository use the CCOpt module?

From my side, I updated the latest soupault code to use `CCOption` and my other projects don’t use that module, so I’m ready for `CCOpt` removal.

---

<div class="post-metadata">

**Author:** ![c-cube](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ocaml.org/c-cube/32/1727_2.png) [@c-cube](https://discuss.ocaml.org/u/c-cube)\
**Post date:** [October 27, 2021, 1:35pm UTC](https://discuss.ocaml.org/t/ann-containers-3-6/8677/3 "2021-10-27T13:35:10Z")

</div>

Almost all my code uses `CCOpt`, for a start 😁. People who `open Containers`, however, should be protected.

---

<div class="post-metadata">

**Author:** ![orbitz](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ocaml.org/orbitz/32/110_2.png) [@orbitz](https://discuss.ocaml.org/u/orbitz)\
**Post date:** [October 27, 2021, 2:09pm UTC](https://discuss.ocaml.org/t/ann-containers-3-6/8677/4 "2021-10-27T14:09:44Z")

</div>

FWIW I use `CCOpt` pretty liberally. I did a `grep -R CCOpt code | wc -l` and got 345 hits. At least fixing should just be a `sed` away.
