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 E3BDA7EEAF for ; Wed, 30 Jan 2013 23:12:36 +0100 (CET) Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of jdimino@janestreet.com) identity=pra; client-ip=38.105.200.229; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="jdimino@janestreet.com"; x-sender="jdimino@janestreet.com"; x-conformance=sidf_compatible Received-SPF: Pass (mail2-smtp-roc.national.inria.fr: domain of jdimino@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="jdimino@janestreet.com"; x-sender="jdimino@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@tot-dmz-mxout1.janestreet.com) identity=helo; client-ip=38.105.200.229; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="jdimino@janestreet.com"; x-sender="postmaster@tot-dmz-mxout1.janestreet.com"; x-conformance=sidf_compatible X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AkYBALKZCVEmacjlmWdsb2JhbABFvwgeDgEBAQEBCAsLBxQngmUBATglXRIBBQEjiCMDCaM1inSEOwEFjwAGkQyIZI0sgRyNThYphDc X-IPAS-Result: AkYBALKZCVEmacjlmWdsb2JhbABFvwgeDgEBAQEBCAsLBxQngmUBATglXRIBBQEjiCMDCaM1inSEOwEFjwAGkQyIZI0sgRyNThYphDc X-IronPort-AV: E=Sophos;i="4.84,572,1355094000"; d="scan'208";a="723636" Received: from mx5.janestreet.com (HELO tot-dmz-mxout1.janestreet.com) ([38.105.200.229]) by mail2-smtp-roc.national.inria.fr with ESMTP/TLS/DHE-RSA-AES256-SHA; 30 Jan 2013 23:12:35 +0100 Received: from tot-smtp.delacy.com ([172.27.22.35] helo=tot-is-smtp) by tot-dmz-mxout1.janestreet.com with esmtp (Exim 4.76) (envelope-from ) id 1U0ftS-0004tM-Qn for caml-list@inria.fr; Wed, 30 Jan 2013 17:12:34 -0500 Received: from tot-dmz-mxgoog1.delacy.com ([172.27.224.14] helo=mxgoog2.janestreet.com) by tot-is-smtp with esmtps (TLSv1:AES256-SHA:256) (Exim 4.72) (envelope-from ) id 1U0ftR-000738-CM for caml-list@inria.fr; Wed, 30 Jan 2013 17:12:33 -0500 Received: from mail-oa0-f72.google.com ([209.85.219.72]) by mxgoog2.janestreet.com with esmtp (Exim 4.76) (envelope-from ) id 1U0ftR-0006cs-9e for caml-list@inria.fr; Wed, 30 Jan 2013 17:12:33 -0500 Received: by mail-oa0-f72.google.com with SMTP id j6so5011253oag.11 for ; Wed, 30 Jan 2013 14:12:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=janestreet.com; s=google; h=x-received:mime-version:x-received:date:message-id:subject:from:to :content-type; bh=XPg0leSqh/gdrIjKGWVkvpuSRcaEv9kTddYKxnF89AQ=; b=W5JcCcmjbsAm6/MinLtMRK+0VSHPmbpiy//Bt0EmXW36khqVunhRsZYZl4uawOanNg VXQoV5bDHYz+FtxFy2esmxyBEGw2ArTY42VnNzZ2BVOoidXejT1U0jEKAlDcAEDXwIme QKnnas59hfFaNb62tJcQxRtonxo7lxdZWkSUk= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=x-received:mime-version:x-received:date:message-id:subject:from:to :content-type:x-gm-message-state; bh=XPg0leSqh/gdrIjKGWVkvpuSRcaEv9kTddYKxnF89AQ=; b=XDhUTYMauVr/Nd5BEEN1focg8QNGA7t5KPaNkerRQ9vo+RcwZC+HgBxvrpa4D5qqnK nyPJ7fNcimJOfatwGsJLu/9DSnFSrNs9lUOWoYC53MUdn1cQsikkDgxnjZGyxgV5Bkr+ h/OBjQ8y9wOaezeGGF/P0wCN7Esr/wUMTGPG5qS/yUQoBYn17X+Dz2mOAyW4+RYLWIzx C4hk/6VUSRQOu8O7VKi89w3M/0pWxPXob0UFqH+0rjFOf8qcuopTqKj5GzLPHGiBrdoT xRGmh5pAk+2WQtfIqIrNufnAt4jkwV6UTPQMT1k5n9/+OSCeSlZGVfz9Q90Sw0dC6AoV bO7w== X-Received: by 10.50.208.7 with SMTP id ma7mr4668305igc.26.1359583952860; Wed, 30 Jan 2013 14:12:32 -0800 (PST) MIME-Version: 1.0 X-Received: by 10.50.208.7 with SMTP id ma7mr4668300igc.26.1359583952766; Wed, 30 Jan 2013 14:12:32 -0800 (PST) Received: by 10.50.188.198 with HTTP; Wed, 30 Jan 2013 14:12:32 -0800 (PST) Date: Wed, 30 Jan 2013 17:12:32 -0500 Message-ID: From: Jeremie Dimino To: caml-list@inria.fr, ocaml-core@googlegroups.com Content-Type: text/plain; charset=ISO-8859-1 X-Gm-Message-State: ALoCoQnCSbSam0TFpVmllz0mMcSu8/9z0wBxI1fiJLBvCXsWpiXvvK6u99sni+8FqxAmykEQuM1pMUCsMUr2eMCNcq/Ck1Y0fHp9dMCHp85SLR0wNIXySMT+SFb0RKD2Kr+S7jnWXrx6Ph7DK5oKiZA8G6qhCVbZjA== X-Validation-by: jdimino@janestreet.com Subject: [Caml-list] [ANN] Core Suite 109.07.00 released I'm pleased to announce the 109.07.00 release of the Core suite of libraries. Core is an industrial strength alternative to OCaml's standard library. Tarballs can be found here: https://ocaml.janestreet.com/ocaml-core/109.07.00/individual/ And the documentation: https://ocaml.janestreet.com/ocaml-core/109.07.00/doc/ All packages are available through opam. ** The Core suite ** The Core suite includes a variety of useful libraries, including: - Core: the heart of the standard library. - Several useful syntax extensions - type-conv: a library for building type-driven syntax extensions - sexplib: a library for handling s-expressions, and a syntax extension for auto-generating conversions between OCaml types and s-expressions - bin-prot: a syntax-extensions for generating - pipebang - variantslib - comparelib - fieldslib - Async: a monadic concurrency library. - Core_extended: extra components that are not as closely vetted or as stable as Core. This includes, Shell, an interface for interacting with the UNIX shell, and Command, a command-line parsing library. ** Repositories ** The official repositories for the Core libraries are now located on the "janestreet" organisation on github and the "janestreet" team on bitbucket. github: https://github.com/janestreet bitbucket: https://bitbucket.org/janestreet github home page: http://janestreet.github.com/ We changed the way we are exporting our source tree; there will now be only one visible commit per release and project. Hopefully this simpiflied process will allow more frequent updates. ** Contribution ** If you want to contribute to core the preferred way is to submit a pull-request, which won't be merged in the end but will be used for working on the changes before they are accepted and added to our development process for integration in a future release. ** Changes ** He is a list of changes since the previous public release (108.08.00): - Switched to OCaml 4.0. - Async: - Add a [~perm] argument to [Writer.open_file] to set the file permissions in the same way [Unix.openfile] does. - Added [Async.Unix.unsetenv]. - Fixed a bug in [Reader] that in some situations would make the reader unusable after an error in user code (e.g. a failed sexp conversion). - Fixed a bug in [Writer] that manifests when scheduling bigstrings with non-zero pos parameter. - Fixed a bug in [Scheduler.go], which previously behaved incorrectly if an exception had been raised to the main monitor prior to [Scheduler.go] being called. The exception is now dealt with immediately, rather than running a cycle. - Exposed the type and value [Async.Config.t] as sexpable. - Improved error message when a user requests async to manage a file descriptor that it is already managing. - Improved error message when creation of the async scheduler fails. - Added [val _squelch_unused_module_warning_] to [Async.Std]. - Made [Reader.load_sexp{,s}] handle exceptions other than [Of_sexp_error]. - Fixed a bug in async's handing of file descriptors -- a missed check for a file descriptor having been closed. - Added [Writer.set_buffer_age_limit]. - Improved the performance of [Deferred.Queue] by changing the implementation to use lists rather than arrays, which reduces gc promotion. - Added [?should_close_file_descriptor:bool] argument to [Async.Unix.close]. - Moved the implementation of finalizers from Async_unix to Async_core. This makes it possible to unit test finalizers (and things using them) using only the Async_core scheduler. - Changed the async scheduler so that if there are no upcoming events, it times out in 50ms rather than waiting forever. - Added =Monad_sequence.iteri=, which in turn adds it to: =Deferred.Array=, =Deferred.List=, and =Deferred.Queue=. - Added =Pipe.init=, which is analogous to =Deferred.create=. - Improved the performance of =Pipe.iter{,_without_pushback}=. - Improved =Reader.read_one_chunk_at_a_time_until_eof=: - the callback need not consume everything - add =`Eof_with_unconsumed_data= as a possible result - grow internal buffer of the reader when needed - Added =Shutdown.exit=, removed =Shutdown.shutdown_and_raise=. - Added =Scheduler.force_current_cycle_to_end=. - Core: - Added [Char.of_string]. - Fix [Backtrace.get], which was broken in 109.00, with the switch to OCaml 4.0. - Added [Heap.iter_el]. - Updated [Core.Unix.stat] so that access, modify, and change times have nanosecond precision. - Fixed a bug in [Nano_mutex.invariant]. - Simplified the implementation of [with_return] using a local explicit polymorphic type variable. - Added [Map.symmetric_diff], for returning a list of differences between two maps. It has a fast-path implementation for maps that share a large amount of their internal structure. - Added a number of functions to =Bounded_int_table=: =equal=, =exists{,i}=, =for_all{,i}=, =filter_map{,i}=, =map{,i}=. Also added a functor, =Bounded_int_table.With_key=, that makes a bounded-int table binable and sexpable, and adds =of_alist= and =of_alist_exn=. - Added =Doubly_linked.iter_elt= and =Bag.iter_elt=. - Added =module Invariant=, which defines signatures that are to be included in other signatures to ensure a consistent interface to invariant-style functions. - Added =module Ordering=, which defines: =type t = Less | Equal | Greater= -- Jeremie Dimino, for the Core team