From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Original-To: caml-list@sympa.inria.fr Delivered-To: caml-list@sympa.inria.fr Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by sympa.inria.fr (Postfix) with ESMTPS id 145587F747 for ; Thu, 7 Aug 2014 17:47:18 +0200 (CEST) Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of yminsky@janestreet.com) identity=pra; client-ip=38.105.200.229; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="yminsky@janestreet.com"; x-sender="yminsky@janestreet.com"; x-conformance=sidf_compatible Received-SPF: Pass (mail2-smtp-roc.national.inria.fr: domain of yminsky@janestreet.com designates 38.105.200.229 as permitted sender) identity=mailfrom; client-ip=38.105.200.229; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="yminsky@janestreet.com"; x-sender="yminsky@janestreet.com"; x-conformance=sidf_compatible; x-record-type="v=spf1" Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of postmaster@mxout3.mail.janestreet.com) identity=helo; client-ip=38.105.200.229; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="yminsky@janestreet.com"; x-sender="postmaster@mxout3.mail.janestreet.com"; x-conformance=sidf_compatible X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ArYBACSe41MmacjlnGdsb2JhbABaFoNJVwSCc8lhh0YBgQsIFhABAQEBAQYWCT2EBAEBBBIRHQEBNwEPCwsNAgImAgIiEgEFARwGEyKIIAMKoUdqijJ3hQIBBZE3EQYKgSKLXYFbNTMHgnmBUpU4hmiBVIVQi1oYKYUkUAE X-IPAS-Result: ArYBACSe41MmacjlnGdsb2JhbABaFoNJVwSCc8lhh0YBgQsIFhABAQEBAQYWCT2EBAEBBBIRHQEBNwEPCwsNAgImAgIiEgEFARwGEyKIIAMKoUdqijJ3hQIBBZE3EQYKgSKLXYFbNTMHgnmBUpU4hmiBVIVQi1oYKYUkUAE X-IronPort-AV: E=Sophos;i="5.01,818,1400018400"; d="scan'208";a="88620073" Received: from mxout3.mail.janestreet.com ([38.105.200.229]) by mail2-smtp-roc.national.inria.fr with ESMTP/TLS/DHE-RSA-AES256-SHA; 07 Aug 2014 17:47:16 +0200 Received: from tot-oib-smtp1 ([172.27.22.15] helo=tot-smtp) by mxout3.mail.janestreet.com with esmtps (UNKNOWN:DHE-RSA-AES256-GCM-SHA384:256) (Exim 4.82) (envelope-from ) id 1XFPuN-0002uG-R6 for caml-list@inria.fr; Thu, 07 Aug 2014 11:47:15 -0400 Received: from [172.27.229.230] (helo=mxgoog1.mail.janestreet.com) by tot-smtp with esmtps (UNKNOWN:AES256-GCM-SHA384:256) (Exim 4.72) (envelope-from ) id 1XFPuN-0002NY-OS for caml-list@inria.fr; Thu, 07 Aug 2014 11:47:15 -0400 Received: from mail-la0-f48.google.com ([209.85.215.48]) by mxgoog1.mail.janestreet.com with esmtps (TLSv1:RC4-SHA:128) (Exim 4.72) (envelope-from ) id 1XFPuN-0006lP-Ib for caml-list@inria.fr; Thu, 07 Aug 2014 11:47:15 -0400 Received: by mail-la0-f48.google.com with SMTP id gl10so3617867lab.7 for ; Thu, 07 Aug 2014 08:47:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=janestreet.com; s=google; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; bh=vBfbAEBzeN4LPQed+4PBq43eC/E9SpddovwNXZ6ocJM=; b=CTVDd4sC7eRjwJ2CV1AU+/Am7VhWiMf/98tC6dbefTtBn2C8HALqiRIqLPUjsUude9 /sX/EKsX68TegFDnkXYJmLcE59zIrqmMpMUT+AQK6ZNkiRcEC2e12H0bEJGgCcMyQV3O XrHGTMaFgHZjO8FXGjGz4+LUh0mVgdrtmFLOQ= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=vBfbAEBzeN4LPQed+4PBq43eC/E9SpddovwNXZ6ocJM=; b=g22CyHeu6avfJXDN9tqALA2cknUC8VKSsfIQjL7VzdZtz78wqxL7F7x5RgVFQEchtL 3/fFy+jTcP9yrXw/b5ogzG+/5ap/JgW2MwkhiDo17+zs38uuhxD6kTil7w81Io9VphuD 03JzBmYY5+/G2kOD/CQU1u0yAEYiAjpvwRPlNf4fLWyGudHaH7alU//KPU6i7e6RVL1u MrCmsvrmOucYcMVDELLntdsne/2+UV5CsVDH4WFqe1Ua8cu1uJtquj+L9rJ3O/xBfETL JMm/tIW4n5yZvHyWv5LgsnFxHcdhikNZrqJ9mJPDOu+Flh9vmng+zJGNFrKIG039FZRq mlUA== X-Gm-Message-State: ALoCoQlWpyBGD9rlUgXix++EvS4m5ndszQ3szYJfIllpWl5pcXjQ5Ki1KiHyvtHWMFDFRcMTFFryAObuKVL9xkFJdNZEWgH/5XQzMitvi8RTI/djCXS/e3EVdx+Z4LONK0jiBiOExFgs X-Received: by 10.152.8.48 with SMTP id o16mr17448223laa.18.1407426434365; Thu, 07 Aug 2014 08:47:14 -0700 (PDT) MIME-Version: 1.0 X-Received: by 10.152.8.48 with SMTP id o16mr17448205laa.18.1407426434233; Thu, 07 Aug 2014 08:47:14 -0700 (PDT) Received: by 10.112.65.228 with HTTP; Thu, 7 Aug 2014 08:47:13 -0700 (PDT) In-Reply-To: <20140807113704.GC2825@fuck_yeah> References: <20140807113704.GC2825@fuck_yeah> Date: Thu, 7 Aug 2014 11:47:13 -0400 Message-ID: From: Yaron Minsky To: Simon Cruanes Cc: OCaml users Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Subject: Re: [Caml-list] [ANN] containers 0.3.3 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 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 >=3D 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, >>=3D), functions (id,const,compose) > * combinators for printing, equality, comparisons, random generators, e= tc. > * CCError, an error monad (with polymorphic variants, same as D. B=C3= =BCnzli) > * 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_go= ne_wrong.jpg > > -- > Simon > > http://weusepgp.info/ > key 49AA62B6, fingerprint 949F EB87 8F06 59C6 D7D3 7D8D 4AC0 1D08 49AA 6= 2B6