caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Dean Thompson <deansherthompson@gmail.com>
To: Yaron Minsky <yminsky@janestreet.com>
Cc: Ivan Gotovchits <ivg@ieee.org>, caml-list <caml-list@inria.fr>,
	Jeremy Yallop <yallop@gmail.com>
Subject: Re: [Caml-list] how to encourage adoption of OCaml?
Date: Fri, 1 Jul 2016 08:44:31 -0400	[thread overview]
Message-ID: <6FB9D602-BBED-4175-B230-0F181DB61824@gmail.com> (raw)
In-Reply-To: <CACLX4jSUZwd8JsadMn-Qw5PCBSZTmFs35xaTqitNu91avs=NDA@mail.gmail.com>

Yaron, since you describe janestreet/lwt-async as "an experiment in this direction”, could you give a quick overview of how a practical lwt-async would compare with what was done there?

Dean

> On Jun 30, 2016, at 8:13 PM, Yaron Minsky <yminsky@janestreet.com> wrote:
> 
> I'm not at all sure that the decoupling is possible or wise for Async.
> My intuition is that this is too complex of a problem with too much
> need for careful optimization to be able to have a simple, shared
> generic data structure for this.
> 
> The solution that seems most plausible to me is to settle on one
> implementation, and port the API of one library to run on top of the
> other. There was indeed an experiment in this direction that was done
> by Jeremie Dimino:
> 
> https://github.com/janestreet/lwt-async
> 
> That said, until we resolve the binary size issues with Core and
> therefore Async, I doubt that this solution would be appealing to the
> full community of lwt users.
> 
> y
> 
> On Thu, Jun 30, 2016 at 9:13 AM, Ivan Gotovchits <ivg@ieee.org> wrote:
>> 
>> 
>> On Thu, Jun 30, 2016 at 8:12 AM, Yaron Minsky <yminsky@janestreet.com>
>> wrote:
>>> 
>>> A few thoughts:
>>> 
>>> As Anil said, we're working on an updated RWO, which should resolve the
>>> camlp4 issue.
>>> 
>>> As for mixing and matching between libraries that do and don't depend on
>>> Core, there's actually little difficulty here. Core sticks to the standard
>>> interchange types (array, string, option, list, char, and now result) that
>>> are provided by the stdlib, so whether you use Core (or Core_kernel) becomes
>>> more a matter of personal preference, and shouldn't hinder interoperability.
>>> 
>>> One remaining problem with Core is the minimal executable size, which is
>>> currently much bigger if you use Core. We're considering some work in three
>>> next few months to make this much better.
>>> 
>>> Async and Lwt are a real problem. They provide very similar functionality,
>>> and mixing and matching between two schedulers is not so easy. I'd love to
>>> see some resolution here, but it's not clear what the solution would be.
>> 
>> The solution would be to use the same approach as with standard types. We
>> need a common base inductive type for `Lwt.t` (aka `Ivar.t`), which will
>> represent a value which is defined in some point in the future (hence a
>> `future` is a good name). Another type is for capturing a concept of a
>> variable that can have multiple values in the future, that is represented as
>> `Lwt_stream.t` or `Pipe`. Currently in both Lwt and Async the main thread
>> type is tightly coupled with the underlying implementation, especially in
>> Async (Lwt.t can be easily decoupled).
>>> 
>>> y
>>> 
>>> On Jun 30, 2016 6:32 AM, "Dean Thompson" <deansherthompson@gmail.com>
>>> wrote:
>>>> 
>>>> From my understanding so far, it seems to me that mixing and matching
>>>> Core and not-Core would be tough? Everything from result types to Lwt vs
>>>> Async? Given the inspirational and educational power of Real World OCaml,
>>>> many newcomers will face this issue.
>>>> 
>>>> Dean
>>>> 
>>>> 
>>>>> On Jun 30, 2016, at 6:17 AM, Jeremy Yallop <yallop@gmail.com> wrote:
>>>>> 
>>>>>> On 30 June 2016 at 11:01, Dean Thompson <deansherthompson@gmail.com>
>>>>>> wrote:
>>>>>> It is hard for me to judge because I came through RWO, but it appears
>>>>>> to me that the lack of consensus on standard library comes up pretty
>>>>>> quickly.
>>>>> 
>>>>> I think the standard library situation is much less of a concern than
>>>>> it once was, now that it's easy to distribute small OCaml packages and
>>>>> manage dependencies.
>>>>> 
>>>>> In the past distribution difficulties discouraged dependencies: for
>>>>> example, even though many people prefer the design of ocaml-re and
>>>>> ocaml-pcre to the regular expression facilities in the standard
>>>>> library, the administrative overhead of an additional dependency made
>>>>> the standard library the easier choice overall.  In that situation
>>>>> it's desirable for the standard library to be large and featureful.
>>>>> Nowadays there's much less benefit to having regular expression
>>>>> support in the standard library, since depending on ocaml-re or
>>>>> ocaml-pcre is just a matter of adding a line to an opam file and a few
>>>>> lines to the build configuration.
>>>>> 
>>>>> The standard library still has a useful role to play, since it's
>>>>> easier to make libraries interoperate if they can communicate via
>>>>> common types, and several recent and proposed changes have that kind
>>>>> of role in mind.  For example, the latest release of OCaml added a
>>>>> 'result' type to the standard library, which was previously defined in
>>>>> incompatible but essentially equivalent ways in several libraries:
>>>>> 
>>>>>  https://github.com/ocaml/ocaml/pull/147
>>>>> 
>>>>> and there's a proposal for adding iterators to various container types
>>>>> for the next release currently under discussion:
>>>>> 
>>>>>  https://github.com/ocaml/ocaml/pull/635
>>>> 
>>>> --
>>>> 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
>> 
>> 


  parent reply	other threads:[~2016-07-01 12:44 UTC|newest]

Thread overview: 65+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-06-30 10:01 Dean Thompson
2016-06-30 10:16 ` Kakadu
2016-06-30 10:41   ` Dean Thompson
2016-06-30 10:46   ` Anil Madhavapeddy
2016-06-30 10:17 ` Jeremy Yallop
2016-06-30 10:31   ` Dean Thompson
2016-06-30 12:12     ` Yaron Minsky
2016-06-30 13:13       ` Ivan Gotovchits
2016-07-01  0:13         ` Yaron Minsky
2016-07-01  0:41           ` [Caml-list] Async and lwt Hendrik Boom
2016-07-01  1:26             ` Yaron Minsky
2016-07-01 12:44           ` Dean Thompson [this message]
2016-07-01 12:46             ` [Caml-list] how to encourage adoption of OCaml? Yaron Minsky
2016-07-04 14:12           ` sp
2016-06-30 11:49 ` Gerd Stolpmann
2016-07-04 14:45 ` sp
2016-07-08 12:57   ` Dean Thompson
2016-07-08 13:45     ` Francois Berenger
2016-07-08 14:40     ` Gabriel Scherer
2016-07-08 15:16       ` Duane Johnson
2016-07-08 15:33         ` Roberto Di Cosmo
2016-07-08 16:25           ` Yotam Barnoy
2016-07-08 16:50             ` Roberto Di Cosmo
2016-07-08 16:54         ` Mohamed Iguernlala
2016-07-08 17:02           ` Yotam Barnoy
2016-07-08 17:09             ` Yotam Barnoy
2016-07-08 17:29               ` Kakadu
2016-07-08 17:41                 ` Dean Thompson
2016-07-08 17:49                   ` Yotam Barnoy
2016-07-08 17:28             ` Duane Johnson
2016-07-09 13:46             ` Ashish Agarwal
2016-07-09 13:51               ` Gabriel Scherer
2016-07-09 14:13                 ` Dean Thompson
2016-07-09 17:29                   ` Duane Johnson
2016-07-10 14:03                     ` Gabriel Scherer
2016-07-10 14:25                       ` Yotam Barnoy
2016-07-10 14:29                         ` Jesse Haber-Kucharsky
2016-07-10 14:34                           ` Gabriel Scherer
2016-07-10 14:47                             ` Yotam Barnoy
2016-07-10 16:45                               ` Glen Mével
2016-07-10 16:59                                 ` Yotam Barnoy
2016-07-10 18:40                                   ` Yotam Barnoy
2016-07-10  3:06                 ` Yotam Barnoy
2016-07-10  2:32               ` Yotam Barnoy
2016-07-10 19:17                 ` Ashish Agarwal
2016-07-08 19:16         ` [Caml-list] Getting the word out Hendrik Boom
2016-07-08 20:51           ` moosotc
2016-07-08 22:48             ` Hendrik Boom
2016-07-08 20:57           ` Steven Shaw
2016-07-08 21:13             ` Duane Johnson
2016-07-08 22:54               ` Yotam Barnoy
2016-07-08 23:11                 ` Duane Johnson
2016-07-09 13:13                   ` Ashish Agarwal
2016-07-08 22:02           ` SP
2016-07-08 21:56         ` [Caml-list] how to encourage adoption of OCaml? SP
2016-07-08 22:18           ` Fabrice Le Fessant
2016-07-08 22:39             ` Duane Johnson
2016-07-08 23:00               ` Yotam Barnoy
2016-07-09 13:03             ` Armaël Guéneau
2016-07-09 13:42               ` Dean Thompson
2016-07-08 21:46       ` SP
2016-07-08 22:05         ` Robert Muller
2016-07-08 23:11           ` Gerd Stolpmann
2016-07-09  1:37             ` Markus Mottl
2016-07-09 22:19               ` Yaron Minsky

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=6FB9D602-BBED-4175-B230-0F181DB61824@gmail.com \
    --to=deansherthompson@gmail.com \
    --cc=caml-list@inria.fr \
    --cc=ivg@ieee.org \
    --cc=yallop@gmail.com \
    --cc=yminsky@janestreet.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).