From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by c5ff346549e7 (Postfix) with ESMTPS id 9D6AC5D5 for ; Fri, 19 Jun 2020 19:40:35 +0000 (UTC) X-IronPort-AV: E=Sophos;i="5.75,256,1589234400"; d="scan'208";a="455700536" Received: from prod-listesu18.inria.fr (HELO sympa.inria.fr) ([128.93.162.160]) by mail2-relais-roc.national.inria.fr with ESMTP; 19 Jun 2020 21:40:31 +0200 Received: by sympa.inria.fr (Postfix, from userid 20132) id E7076E0358; Fri, 19 Jun 2020 21:40:31 +0200 (CEST) Received: from mail3-relais-sop.national.inria.fr (mail3-relais-sop.national.inria.fr [192.134.164.104]) by sympa.inria.fr (Postfix) with ESMTPS id 687D8E00CE for ; Fri, 19 Jun 2020 21:40:26 +0200 (CEST) X-IronPort-AV: E=Sophos;i="5.75,256,1589234400"; d="scan'208";a="352169491" Received: from 91-175-127-215.subs.proxad.net (HELO MP-41019.local) ([91.175.127.215]) by mail3-relais-sop.national.inria.fr with ESMTP/TLS/AES256-SHA; 19 Jun 2020 21:40:25 +0200 To: caml users Cc: =?UTF-8?Q?Arthur_Chargu=c3=a9raud?= From: =?UTF-8?Q?Fran=c3=a7ois_Pottier?= Message-ID: <7f2d7be6-2938-f1d0-dcf0-eb4817273bb0@inria.fr> Date: Fri, 19 Jun 2020 21:40:25 +0200 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:60.0) Gecko/20100101 Thunderbird/60.9.1 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit Subject: [Caml-list] [ANN] Second release of Sek Reply-To: =?UTF-8?Q?Fran=c3=a7ois_Pottier?= X-Loop: caml-list@inria.fr X-Sequence: 18177 Errors-To: caml-list-owner@inria.fr Precedence: list Precedence: bulk Sender: caml-list-request@inria.fr X-no-archive: yes List-Id: List-Help: List-Subscribe: List-Unsubscribe: List-Post: List-Owner: List-Archive: Archived-At: Dear OCaml users, We are pleased to announce the second release of Sek, an OCaml library that offers an efficient implementation of sequences. The library offers both ephemeral (mutable) sequences and persistent (immutable) sequences, and offers constant-time conversions between these flavors. It supports all of the standard operations on stacks, queues, deques (e.g. push, pop at either end), catenable sequences (concat, split), and random access sequences (get, set). The new release makes a large number of additions to the library's API. The most significant one is the introduction of very efficient iterators over ephemeral and persistent sequences. A full list of changes appears below. To install the new version of Sek, just type opam update && opam install sek.20200618 The API documentation is online: http://cambium.inria.fr/~fpottier/sek/doc/sek/Sek/ Feedback is welcome! -- Arthur Charguéraud and François Pottier ## 2020/06/18 * The time complexity of every operation is now documented as part of its specification. * New submodules `E.Iter` and `P.Iter`, which offer very efficient iterators over ephemeral and persistent sequences. * New functions `take`, `drop`, `sub`, `iter_segments`, `to_seq`, `of_list_segment`, `of_list`, `of_seq_segment`, `of_seq`, `find`, `find_opt`, `find_map`, `for_all`, `exists`, `mem`, `memq`, `map`, `mapi`, `rev`, `zip`, `unzip`, `filter`, `filter_map`, `partition`, `flatten`, `flatten_map`, `iter2`, `iter2_segments`, `fold_left2`, `fold_right2`, `map2`, `for_all2`, `exists2`, `equal`, `compare`, `sort`, `stable_sort`, `uniq`, `merge`, in ephemeral and persistent flavors. * New functions `E.fill` and `E.blit`. * New function `other` of type `side -> side`. * New function `opposite` of type `direction -> direction`. * New functor `SupplyDefault`, which allows supplying a default element once and for all so as to obtain a simpler API. Unfortunately, this requires choosing a fixed type of elements at the same time. * New submodules `Emulated.Array` and `Emulated.List`, which can be used as drop-in replacements for OCaml's standard `Array` and `List` modules. * New submodule `Segment`, which offers a few facilities for iterating over array segments. * **Breaking change:** the default behavior of `E.copy` is now to produce a disjoint sequence in time `O(n)`. The previous behavior, which exploits sharing and produces a result in time `O(K)`, is obtained by invoking ``E.copy ~mode:`Share``. The two copying modes have the same observable behavior; they differ only in their performance characteristics. * **Breaking change:** the submodules `Queue` and `Stack` are renamed `Emulated.Queue` and `Emulated.Stack`. This makes it easier to avoid unintended shadowing of `Stdlib.Queue`, `Stdlib.Stack`, etc. It is now safe to use `open Sek`. * **Breaking change:** the functor `Make` now takes just one structure as a parameter, instead of several structures. This is more pleasant and should make future evolution easier.