caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Yaron Minsky <yminsky@janestreet.com>
To: Ivan Gotovchits <ivg@ieee.org>
Cc: Dean Thompson <deansherthompson@gmail.com>,
	caml-list <caml-list@inria.fr>, Jeremy Yallop <yallop@gmail.com>
Subject: Re: [Caml-list] how to encourage adoption of OCaml?
Date: Thu, 30 Jun 2016 20:13:58 -0400	[thread overview]
Message-ID: <CACLX4jSUZwd8JsadMn-Qw5PCBSZTmFs35xaTqitNu91avs=NDA@mail.gmail.com> (raw)
In-Reply-To: <CALdWJ+zqc66xhbGyx0gDej2HpHbCK0xDaZiLZuzAxewR8Qnn0A@mail.gmail.com>

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
>
>

  reply	other threads:[~2016-07-01  0:14 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 [this message]
2016-07-01  0:41           ` [Caml-list] Async and lwt Hendrik Boom
2016-07-01  1:26             ` Yaron Minsky
2016-07-01 12:44           ` [Caml-list] how to encourage adoption of OCaml? Dean Thompson
2016-07-01 12:46             ` 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='CACLX4jSUZwd8JsadMn-Qw5PCBSZTmFs35xaTqitNu91avs=NDA@mail.gmail.com' \
    --to=yminsky@janestreet.com \
    --cc=caml-list@inria.fr \
    --cc=deansherthompson@gmail.com \
    --cc=ivg@ieee.org \
    --cc=yallop@gmail.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).