caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* [Caml-list] [ANN] containers 0.3.3
@ 2014-08-07 11:37 Simon Cruanes
  2014-08-07 15:47 ` Yaron Minsky
  0 siblings, 1 reply; 2+ messages in thread
From: Simon Cruanes @ 2014-08-07 11:37 UTC (permalink / raw)
  To: OCaml users

[-- Attachment #1: Type: text/plain, Size: 2316 bytes --]

Hello everyone,

I am very pleased to announce the first official release of
containers[1], a BSD-licensed extension to the compiler standard library
that focused on modularity, efficiency and a small footprint,
for OCaml >= 4.01. In particular, no pack, and almost every modules are
self-contained (i.e., if you link one module, you don't pay for the
other ones).  The purpose is not to compete with Batteries or Core,
which will always be more exhaustive, but to provide a lightweight
and modular approach.

You can find the API online [2].

Containers is split into several parts:
- a "core" library, just called "containers"; every module it contains
  is prefixed with "CC"[3] and lives in the global namespace.
  Most modules provide iterators (especially sequence [4]).
  In a nutshell:

  * CCList, with tail-recursive version of fold_right, append and map,
    and other new functions
  * CCOpt, CCPair, CCFun, providing useful combinators for pairs,
    options (map, >>=), functions (id,const,compose)
  * combinators for printing, equality, comparisons, random generators, etc.
  * CCError, an error monad (with polymorphic variants, same as D. Bünzli)
  * other data structures: CCArray, CCVector, CCTrie, CCMultiMap,
    CCMultiSet, CCHeap, bitvectors

- a tiny string library, in "containers.string" (module
  Containers_string) with a few algorithms on strings.
- a heap of unstable, experimental things ("containers.misc") that
  shouldn't be used in production, but might one day be promoted to core.

Contributions and bugreports/fixes are very welcome, the library is
still very young[5]. Although some might think it's bad practice, you can
also copy individual modules (.mli + .ml) into your own project if for
some reason you want to avoid dependencies.

Cheers!

[1] https://github.com/c-cube/ocaml-containers
[2] http://cedeela.fr/~simon/software/containers/
[3] as in "core containers", or "companion cube" if you suspect me of
    megalomania
[4] https://github.com/c-cube/sequence
[5] some other attempts at writing a container library:
    http://img.myconfinedspace.com/wp-content/uploads/2007/07/shipping_gone_wrong.jpg

-- 
Simon

http://weusepgp.info/
key 49AA62B6, fingerprint 949F EB87 8F06 59C6 D7D3  7D8D 4AC0 1D08 49AA 62B6

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [Caml-list] [ANN] containers 0.3.3
  2014-08-07 11:37 [Caml-list] [ANN] containers 0.3.3 Simon Cruanes
@ 2014-08-07 15:47 ` Yaron Minsky
  0 siblings, 0 replies; 2+ messages in thread
From: Yaron Minsky @ 2014-08-07 15:47 UTC (permalink / raw)
  To: Simon Cruanes; +Cc: OCaml users

For what it's worth, soon after the OCaml 4.02 release, Core and
Core_kernel and the rest of Jane Street's libraries will switch to no
longer being packed.  This should greatly reduce executable sizes and
compilation times for packages that use Core, essentially allowing
people to link in just the bits they actually use.

That said, the modules are not self contained.  Pervasive use of
things like s-expressions for error reporting do mean that there is
more complexity than in a simple system like the one you're
describing.

On Thu, Aug 7, 2014 at 7:37 AM, Simon Cruanes
<simon.cruanes.2007@m4x.org> wrote:
> Hello everyone,
>
> I am very pleased to announce the first official release of
> containers[1], a BSD-licensed extension to the compiler standard library
> that focused on modularity, efficiency and a small footprint,
> for OCaml >= 4.01. In particular, no pack, and almost every modules are
> self-contained (i.e., if you link one module, you don't pay for the
> other ones).  The purpose is not to compete with Batteries or Core,
> which will always be more exhaustive, but to provide a lightweight
> and modular approach.
>
> You can find the API online [2].
>
> Containers is split into several parts:
> - a "core" library, just called "containers"; every module it contains
>   is prefixed with "CC"[3] and lives in the global namespace.
>   Most modules provide iterators (especially sequence [4]).
>   In a nutshell:
>
>   * CCList, with tail-recursive version of fold_right, append and map,
>     and other new functions
>   * CCOpt, CCPair, CCFun, providing useful combinators for pairs,
>     options (map, >>=), functions (id,const,compose)
>   * combinators for printing, equality, comparisons, random generators, etc.
>   * CCError, an error monad (with polymorphic variants, same as D. Bünzli)
>   * other data structures: CCArray, CCVector, CCTrie, CCMultiMap,
>     CCMultiSet, CCHeap, bitvectors
>
> - a tiny string library, in "containers.string" (module
>   Containers_string) with a few algorithms on strings.
> - a heap of unstable, experimental things ("containers.misc") that
>   shouldn't be used in production, but might one day be promoted to core.
>
> Contributions and bugreports/fixes are very welcome, the library is
> still very young[5]. Although some might think it's bad practice, you can
> also copy individual modules (.mli + .ml) into your own project if for
> some reason you want to avoid dependencies.
>
> Cheers!
>
> [1] https://github.com/c-cube/ocaml-containers
> [2] http://cedeela.fr/~simon/software/containers/
> [3] as in "core containers", or "companion cube" if you suspect me of
>     megalomania
> [4] https://github.com/c-cube/sequence
> [5] some other attempts at writing a container library:
>     http://img.myconfinedspace.com/wp-content/uploads/2007/07/shipping_gone_wrong.jpg
>
> --
> Simon
>
> http://weusepgp.info/
> key 49AA62B6, fingerprint 949F EB87 8F06 59C6 D7D3  7D8D 4AC0 1D08 49AA 62B6

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2014-08-07 15:47 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-08-07 11:37 [Caml-list] [ANN] containers 0.3.3 Simon Cruanes
2014-08-07 15:47 ` Yaron Minsky

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).