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 mail3-relais-sop.national.inria.fr (mail3-relais-sop.national.inria.fr [192.134.164.104]) by sympa.inria.fr (Postfix) with ESMTPS id 257EA800BE for ; Fri, 6 Jan 2017 19:39:26 +0100 (CET) Authentication-Results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=xavier.vdw@gmail.com; spf=Pass smtp.mailfrom=xavier.vdw@gmail.com; spf=None smtp.helo=postmaster@mail-ua0-f174.google.com Received-SPF: None (mail3-smtp-sop.national.inria.fr: no sender authenticity information available from domain of xavier.vdw@gmail.com) identity=pra; client-ip=209.85.217.174; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="xavier.vdw@gmail.com"; x-sender="xavier.vdw@gmail.com"; x-conformance=sidf_compatible Received-SPF: Pass (mail3-smtp-sop.national.inria.fr: domain of xavier.vdw@gmail.com designates 209.85.217.174 as permitted sender) identity=mailfrom; client-ip=209.85.217.174; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="xavier.vdw@gmail.com"; x-sender="xavier.vdw@gmail.com"; x-conformance=sidf_compatible; x-record-type="v=spf1" Received-SPF: None (mail3-smtp-sop.national.inria.fr: no sender authenticity information available from domain of postmaster@mail-ua0-f174.google.com) identity=helo; client-ip=209.85.217.174; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="xavier.vdw@gmail.com"; x-sender="postmaster@mail-ua0-f174.google.com"; x-conformance=sidf_compatible IronPort-PHdr: =?us-ascii?q?9a23=3Aj5DQ9ROOkXB/4vRkCGUl6mtUPXoX/o7sNwtQ0KIM?= =?us-ascii?q?zox0I/r7rarrMEGX3/hxlliBBdydsKMYzbCP+Pm5ACQp2tWoiDg6aptCVhsI24?= =?us-ascii?q?09vjcLJ4q7M3D9N+PgdCcgHc5PBxdP9nC/NlVJSo6lPwWB6nK94iQPFRrhKAF7?= =?us-ascii?q?Ovr6GpLIj8Swyuu+54Dfbx9GiTe5br5+Ngu6oRjeusULnIduN7s6xwfUrHdPZ+?= =?us-ascii?q?lY335jK0iJnxb76Mew/Zpj/DpVtvk86cNOUrj0crohQ7BAAzsoL2465MvwtRne?= =?us-ascii?q?VgSP/WcTUn8XkhVTHQfI6gzxU4rrvSv7sup93zSaPdHzQLspVzmu87tnRRn1gy?= =?us-ascii?q?ocKTU37H/YhdBxjKJDoRKuuRp/w5LPYIqIMPZyZ77Rcc8GSWZEWMteUDFPAp6n?= =?us-ascii?q?b4sXEeUOIfpYoYf6p1sLtxS+BA+sD/7rxjJHgnL62Ks32PkjHw7bxgwtB9ABsH?= =?us-ascii?q?rUotv7N6kcTP67w7XTwDrZc/9bwy3w5JTUfh0jp/yHQLJ+cdDWyUkqDw7Kj0+f?= =?us-ascii?q?qZLkPzyLzOQGrmeU4PBmVemylmEotRx6rTioxsgykYnJmoIUylba+i5kx4s0Ks?= =?us-ascii?q?e3SFB6YdG6CptcrT+aOJZ4Q845TGFovTw1yrwCuZKhYCcKz5EnygfZZveafYaI?= =?us-ascii?q?5RfjW/yQITd+nH9lebS/hwyz8Ue60OH8WNO03E5FripEjtnMtm0N2AfJ5sebTf?= =?us-ascii?q?t9+1+t2DaV2ADT7eFEJlo4mrbcK54k2rIwjYQcsUHdHiDogkX6lqiWdl8r+uSw?= =?us-ascii?q?7uTnY6nppoWbN49vjQH+PLgultajDuQ/NwgDWXWQ9+ek1LD740H1XLFHguc1n6?= =?us-ascii?q?TZqpzWO9kXq6yjDwNI0Isu5BCyBCq83tsCh3kINldFdQqHj4f3P1HOJ+j1DfKl?= =?us-ascii?q?jFStlDdn3u3GMaf9DpnUIHjPjbXscLln505Tzwozyt9f55ZKBb0bPP3zXUrxuM?= =?us-ascii?q?TZDh8/LQO03/7qBMth2o4aQ26CAa+UPLnMvVOV5O8jOfSAaY0atTrlLvgq/f/u?= =?us-ascii?q?jXs3mV8Heqmp2IMaaX+iEfR4IkWWf2Dsjs0fEWgXsAszV+PqiFiYXj5SY3a+Rb?= =?us-ascii?q?4z5jY+CI6+F4fMWpitgKCd3Ce8BpBZenpJClWIEXvxc4WEWuwMaD6JL896kj0E?= =?us-ascii?q?UKChRJU72RGvsg/60btnIfDO9i0Wr5KwnORysszNnBd62jtoCNqW02CRVCkgn3?= =?us-ascii?q?0Hbz470a05plZynASty6991sxRC91e/bt3WwFyOZOU8Ot3EMzjXA+JKseAVler?= =?us-ascii?q?WJO4DS4ZQdc4wttIaEF4TYbxxivf1janVudG34eAA4Y5p+eBhnU=3D?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0BrAQCi429Yhq7ZVdFVCRkBAQEBAQEBA?= =?us-ascii?q?QEBAQcBAQEBARUBAQEBAgEBAQEIAQEBAYMOAQEBAQF+gQwHn3GCNYsCEIMFgXK?= =?us-ascii?q?CaIIJLIQcgRBKAoFOB0ESAQEBAQEBAQEBAQESAQEBCAsLCh0wgjMaghsBAQEDA?= =?us-ascii?q?SMdARsSCwEDAQsGBQsDCgwBHQICIQEBEQEFAQoHCwYTEgIGiDoBAxAIDqN1P4w?= =?us-ascii?q?DggMFARyDCQWDYgoZJwMKVIICAQEBBwEBAQEBAQEZAgYSig6BBoJOG4E2VIJbg?= =?us-ascii?q?l4Fhx0Mh2yLSDiGWIU1gT6DfIF3UYQ3iVyKA4cIFB6BFA8XDYEzEhtKE4NeKQ8?= =?us-ascii?q?RC4FgPTUBiGUBAQE?= X-IPAS-Result: =?us-ascii?q?A0BrAQCi429Yhq7ZVdFVCRkBAQEBAQEBAQEBAQcBAQEBARU?= =?us-ascii?q?BAQEBAgEBAQEIAQEBAYMOAQEBAQF+gQwHn3GCNYsCEIMFgXKCaIIJLIQcgRBKA?= =?us-ascii?q?oFOB0ESAQEBAQEBAQEBAQESAQEBCAsLCh0wgjMaghsBAQEDASMdARsSCwEDAQs?= =?us-ascii?q?GBQsDCgwBHQICIQEBEQEFAQoHCwYTEgIGiDoBAxAIDqN1P4wDggMFARyDCQWDY?= =?us-ascii?q?goZJwMKVIICAQEBBwEBAQEBAQEZAgYSig6BBoJOG4E2VIJbgl4Fhx0Mh2yLSDi?= =?us-ascii?q?GWIU1gT6DfIF3UYQ3iVyKA4cIFB6BFA8XDYEzEhtKE4NeKQ8RC4FgPTUBiGUBA?= =?us-ascii?q?QE?= X-IronPort-AV: E=Sophos;i="5.33,326,1477954800"; d="scan'208,217";a="207421980" Received: from mail-ua0-f174.google.com ([209.85.217.174]) by mail3-smtp-sop.national.inria.fr with ESMTP/TLS/AES128-GCM-SHA256; 06 Jan 2017 19:39:24 +0100 Received: by mail-ua0-f174.google.com with SMTP id 88so408143360uaq.3 for ; Fri, 06 Jan 2017 10:39:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=6s+vcIhvp6olFbzsDuP4H7hTCSHnjtBwsNQmg1xfqCg=; b=ZJu3+aBuaRbyjhTt2EOMj/DNEY5Nqai7xCLGBDEFluaRNS3Lo3w45doMZU0mC9zybl DHvFFBwXWt1XUk51VshFrI2tM4jsbudg+l2JPn57/dQ/HohvSpfQNrpqTPOMX4LvPezD OtHWrL3fg3HH/G7kjue1aNv9YfNM+K+tpZEdG4rrgEMgkK0Y1eVfYVotel51METfgGn+ /of8sVqLz6fNMQecFYsnFyl6WKM6JNJALg3Wq+pekPQuvsQ77D3TBzwthUobJyKGOltQ dD84jXkgKkWbrtEu2qbQ3a4s/5FJje9ONm1bbnKf/vjH+KlVpph5giDNeYyShQ5fk0gp 6j3w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=6s+vcIhvp6olFbzsDuP4H7hTCSHnjtBwsNQmg1xfqCg=; b=M9TZIgXOMjrVnjwitHRWdLg85UUZKfJjRUkDibKZ14faTocOOr2bVQeRNern/BNhay 7b0MVg15ARjbO6oNAPherhsuyQDzpYgH0eKPJJ6oAAOFTV1/yuKllDVtGD1VMbd70hp4 UdAmv9XQD18cF0rU1oeiNSBxMXtrXYvgOOSc3a1UZh6MkASZv6bPZ2Q9WFXIZslcuWHV kEQNiWW7x9HrljN4krAQjRod+Dk30UHlyBuNBA+lwdA6gsp4SDrI+0qZsppHRx/NdNBi Zwp4F4/cfwPsH/4yaIOd8H34kQgHXpY7BNjKCN1PI/7D1UQJgA97wfYfOsG9ELZF57v7 d31g== X-Gm-Message-State: AIkVDXJKSOsx5dRRnOHDtU4aFc3vox+OuAXQ5OEsh+erYMCdz7DNiXDd/dRiEAWfJg6U+aGuF1yj5DnPFKDsjA== X-Received: by 10.176.75.25 with SMTP id h25mr51308586uaf.106.1483727963194; Fri, 06 Jan 2017 10:39:23 -0800 (PST) MIME-Version: 1.0 Received: by 10.159.55.202 with HTTP; Fri, 6 Jan 2017 10:39:22 -0800 (PST) In-Reply-To: References: <22A97EAF-DBFF-4FE8-90C3-0343533CC621@gmail.com> From: Xavier Van de Woestyne Date: Fri, 6 Jan 2017 19:39:22 +0100 Message-ID: To: Ivan Gotovchits Cc: Anton Bachin , "caml-list@inria.fr users" Content-Type: multipart/alternative; boundary=f403045e40643089c5054571564e Subject: Re: [Caml-list] =?UTF-8?Q?=5BANN=5D_Lwt_2=2E7=2E0_=E2=80=93_monad?= =?UTF-8?Q?ic_promises=3B_concurrent_I/O?= --f403045e40643089c5054571564e Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Excellent work ! Thanks a lot ! 2017-01-06 19:12 GMT+01:00 Ivan Gotovchits : > Forgot to mention F# and their asynchronous workflows [1]. These guys did > a good job of hiding a monad behind simple ideas. > Basically, they use term "asynchronous computation" for the values of type > `'a Lwt.t` > > [1]: https://docs.microsoft.com/en-us/dotnet/articles/ > fsharp/language-reference/asynchronous-workflows > > On Fri, Jan 6, 2017 at 1:00 PM, Ivan Gotovchits wrote: > >> These are the great news! >> >> And thanks for the maintainers notification, it was really helpful :) >> >> I have one comment, though: >> >> >> >>> Values of types 'a Lwt.t are now called promises rather than threads. >>> This should eliminate a lot of confusion for beginners. >> >> >> And create a confusion for seasoned programmers, especially for those who >> are accustomed to >> C++ newly introduced concepts, like promises and futures, where a promise >> has quite an opposite >> meaning. In short, it has the same meaning as a value of type `'a >> Lwt.u`, i.e., it is an object through >> which a promise can be fulfilled. I think that it is better to refer to >> Lwt.t threads as futures because they >> are the values, whose value is determined in the future. Another way to >> name them is `deferred`, again >> for the same reason. You can also say, that a value of type `'a Lwt.t` is >> a computation. You can also try >> to borrow names from the Standard ML community, where `'a Lwt.t` like >> objects are named as IVars. >> >> Finally, you may also find this project interesting [1]. This is an >> attempt to factor out the core idea from both >> Core Async and Lwt. In particular, the Future library allows us to write >> a monadic code, that is independent >> of a particular implementation (Lwt or Async or Identity monad). >> >> [1]: https://github.com/BinaryAnalysisPlatform/bap/blob/ >> master/lib/bap_future/bap_future.mli >> >> On Fri, Jan 6, 2017 at 11:08 AM, Anton Bachin >> wrote: >> >>> Greetings, >>> >>> I am pleased to announce release 2.7.0 of Lwt. >>> >>> https://github.com/ocsigen/lwt >>> >>> The primary goals of this release are (1) to improve communication >>> between maintainers and users, and (2) to prepare for (minor) breaking >>> changes to some APIs in Lwt 3.0.0 (planned for April). The changelog is >>> available here: >>> >>> https://github.com/ocsigen/lwt/releases/tag/2.7.0 >>> >>> - Lwt now uses deprecation warnings ([@deprecated]), especially for >>> upcoming breaking changes [1]. This required dropping support for >>> OCaml 4.01. >>> - There is a gradual, communicative, conservative process for >>> deprecation and breaking [2]. Maintainers of packages in OPAM get >>> notified proactively (see [1] again). If you have code not published >>> in OPAM, watch the Lwt repo, recompile the code at least once in three >>> months, watch this mailing list, or subscribe to the Lwt announcements >>> issue [3]. >>> - If a planned breaking change is a bad idea, please let the maintainers >>> know when you see the warning. >>> - Lwt now uses semantic versioning [4]. The major version will grow >>> slowly but steadily, but this does not mean that the whole API is >>> being redesigned or broken. >>> >>> If you are releasing a package to OPAM that depends on Lwt, it is not >>> recommended to constrain Lwt to its current major version. A major >>> release of Lwt will break only a few APIs, and your package is likely >>> not to be affected =E2=80=93 if it is, you will be notified. You may, h= owever, >>> wish to constrain Lwt to a major version in your private or production >>> code. >>> >>> - The main OPAM package lwt is getting rid of some optional >>> dependencies in 3.0.0, which are now installable through separate OPAM >>> packages lwt_ssl, lwt_glib, lwt_react. This is to reduce recompilation >>> of Lwt when installing OPAM packages ssl, lablgtk, and react. >>> - Values of types 'a Lwt.t are now called promises rather than threads. >>> This should eliminate a lot of confusion for beginners. >>> >>> Lwt 2.7.0 also has a number of more ordinary changes, such as bug fixes >>> and the addition of bindings to writev and readv. See the full >>> changelog [5]. >>> >>> I am working on an all-new manual, including fully rewritten API >>> documentation with examples. It should be ready towards the end of >>> winter. >>> >>> My hope is that all the above allows Lwt to be taken progressively into >>> the future, at the same time making development more open and more >>> humane :) >>> >>> Best, >>> Anton >>> >>> >>> [1]: https://github.com/ocsigen/lwt/issues/308 >>> [2]: https://github.com/ocsigen/lwt/issues/293 >>> [3]: https://github.com/ocsigen/lwt/issues/309 >>> [4]: http://semver.org/ >>> [5]: https://github.com/ocsigen/lwt/releases/tag/2.7.0 >>> >>> >>> -- >>> Caml-list mailing list. Subscription management and archives: >>> https://sympa.inria.fr/sympa/arc/caml-list >>> Beginner's list: http://groups.yahoo.com/group/ocaml_beginners >>> Bug reports: http://caml.inria.fr/bin/caml-bugs >> >> >> > --=20 Xavier Van de Woestyne xavier.vdw@gmail.com - TEL BE : 0474 49 53 83 | TEL FR : 06 73 38 72 84 --f403045e40643089c5054571564e Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Excellent work ! Thanks a lot !

2017-01-06 19:12 GMT+01:00 Ivan G= otovchits <ivg@ieee.org>:
Forgot to mention F# and their asynchronous workflows [1]. Thes= e guys did a good job of hiding a monad behind simple ideas.
Basically,= they use term "asynchronous computation" for the values of type = `'a Lwt.t`=C2=A0


On Fri, Jan 6, 2017 at 1:00 PM, Ivan Got= ovchits <ivg@ieee.org> wrote:
<= div dir=3D"ltr">
These are the great news!=C2=A0

And thanks for the maintainers=C2=A0notification, it was really helpful = :)

I have one comment, though:
=C2=A0
V= alues of types 'a Lwt.t are now called promises rather than threads.=C2=A0 This should eliminate a lot of confusion for beginners.

And create a confusion for seasoned programmers= , especially for those who are accustomed to=C2=A0
C++ newly intr= oduced concepts, like promises and futures, where a promise has quite an=C2= =A0opposite
meaning.=C2=A0 In short, it has the same meaning as a= value of type =C2=A0`'a Lwt.u`, i.e., it is an object through
which a promise can be fulfilled. I think that it is better to refer = to Lwt.t threads as futures=C2=A0because they
are the values, who= se value is determined in the future. Another way to name them is `deferred= `, again
for the same reason. You can also say, that a value of t= ype `'a Lwt.t` is a computation. You can also try
to borrow n= ames from the Standard ML community, where `'a Lwt.t` like objects are = named as IVars.

Finally, you may also find this pr= oject interesting [1]. This is an attempt=C2=A0to factor out the core idea = from both
Core Async and Lwt. In particular, the Future library a= llows us to write a monadic code, that is independent
of a partic= ular implementation (Lwt=C2=A0or Async or Identity monad). =C2=A0


=
On Fri, Jan 6, 2017 at 11:08 AM, Anton Bachin <antronbachin@gmail.com> wrote:
Greetings,

I am pleased to announce release 2.7.0 of Lwt.

=C2=A0 https://github.com/ocsigen/lwt

The primary goals of this release are (1) to improve communication
between maintainers and users, and (2) to prepare for (minor) breaking
changes to some APIs in Lwt 3.0.0 (planned for April). The changelog is
available here:

=C2=A0 https://github.com/ocsigen/lwt/releases= /tag/2.7.0

- Lwt now uses deprecation warnings ([@deprecated]), especially for
=C2=A0 upcoming breaking changes [1]. This required dropping support for
=C2=A0 OCaml 4.01.
- There is a gradual, communicative, conservative process for
=C2=A0 deprecation and breaking [2]. Maintainers of packages in OPAM get
=C2=A0 notified proactively (see [1] again). If you have code not published=
=C2=A0 in OPAM, watch the Lwt repo, recompile the code at least once in thr= ee
=C2=A0 months, watch this mailing list, or subscribe to the Lwt announcemen= ts
=C2=A0 issue [3].
- If a planned breaking change is a bad idea, please let the maintainers
=C2=A0 know when you see the warning.
- Lwt now uses semantic versioning [4]. The major version will grow
=C2=A0 slowly but steadily, but this does not mean that the whole API is
=C2=A0 being redesigned or broken.

If you are releasing a package to OPAM that depends on Lwt, it is not
recommended to constrain Lwt to its current major version. A major
release of Lwt will break only a few APIs, and your package is likely
not to be affected =E2=80=93 if it is, you will be notified. You may, howev= er,
wish to constrain Lwt to a major version in your private or production
code.

- The main OPAM package lwt is getting rid of some optional
=C2=A0 dependencies in 3.0.0, which are now installable through separate OP= AM
=C2=A0 packages lwt_ssl, lwt_glib, lwt_react. This is to reduce recompilati= on
=C2=A0 of Lwt when installing OPAM packages ssl, lablgtk, and react.
- Values of types 'a Lwt.t are now called promises rather than threads.=
=C2=A0 This should eliminate a lot of confusion for beginners.

Lwt 2.7.0 also has a number of more ordinary changes, such as bug fixes
and the addition of bindings to writev and readv. See the full
changelog [5].

I am working on an all-new manual, including fully rewritten API
documentation with examples. It should be ready towards the end of
winter.

My hope is that all the above allows Lwt to be taken progressively into
the future, at the same time making development more open and more
humane :)

Best,
Anton


[1]: https://github.com/ocsigen/lwt/issues/308
[2]: https://github.com/ocsigen/lwt/issues/293
[3]: https://github.com/ocsigen/lwt/issues/309
[4]: ht= tp://semver.org/
[5]: https://github.com/ocsigen/lwt/releases/t= ag/2.7.0


--
Caml-list mailing list.=C2=A0 Subscription management and archives:
https://sympa.inria.fr/sympa/arc/caml-list
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
Bug reports: http://caml.inria.fr/bin/caml-bugs





--
Xa= vier Van de Woestyne
xavier.vdw@gmail.com - TEL BE : 0474 49 53 83 | TEL FR : 06 73 3= 8 72 84
--f403045e40643089c5054571564e--