caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: "Daniel Bünzli" <daniel.buenzli@erratique.ch>
To: Gabriel Scherer <gabriel.scherer@gmail.com>
Cc: Damien Doligez <damien.doligez@inria.fr>,
	caml users <caml-list@inria.fr>
Subject: Re: [Caml-list] About contributions to the Standard Library
Date: Thu, 7 Jul 2016 11:26:32 +0100	[thread overview]
Message-ID: <7BDA5C9D56314AE6A0D9E07226862399@erratique.ch> (raw)
In-Reply-To: <CAPFanBGX884jgq86vpJgTovARDwN=n0a2Gr1_p=qBw1ZieKt-w@mail.gmail.com>

Le mardi, 21 juin 2016 à 16:48, Gabriel Scherer a écrit :
> (3) As Daniel pointed out, we need a better understanding of how to make code written using new stdlib functions compatible with older OCaml versions. So far we've used ad-hoc solutions on each situation, and it was barely manageable despite the small number of instances. (Bytes: in findlib; opaque_identity: clever hack; String ascii functions: no solution).


To sum up the current reality of the situation with respect to per compiler version deprecations and gradual improvements for someone that tries to support more than one version of the compiler is to either:

1. Have to buy into disputable source surgery techniques (preprocessing ifdefs) or isolate differences in module implementations selected according to the compiler version that is targeted. This complexifies your build system, puts a general maintenance burden on everyone and multiplies the paths for bugs.

2. Wait for two or three years to be able to use the new things (I'm personally targeting 4.01 now), possibly having to cope with/silence deprecation warnings during that time (e.g. String.lowercase) which defeats the point of these deprecations.

Given this, I'm wondering how feasible and beneficial, both from a technical and bureaucratic burden point of view, it would be to actually distribute and evolve the standard library separately from the compiler. I didn't give a hard thought about bootstrapping issues since I'm sure there are people on this list that have a clearer answer to that than me.

The goal behind this move would not be to change the stdlib conservativeness and minimalistic approach but make it possible to use improvement made to stdlib in older OCaml versions.

Of course there are point in times where new versions of this exo-stdlib would introduce lower bounds. But I expect these not to be that widespread. I think they would only happen on significant language/runtime system changes for example because:  

a) A language feature becomes used in the implementation of the stdlib (e.g. GADT for formatters)
b) A language feature becomes used in the interface of the stdlib (e.g. a hypothetical implicits introduction)
c) A language/runtime system feature entails additions of new modules that can't be expressed in earlier version (e.g. a hypothetical introduction of effects).

Note that even in c) it should be possible to backport interfaces, stubbed with failing implementations.

Finally I would just like to say that the current situation also has its pluses as it encourages people to upgrade and hence follow the general evolution the system.

Best,  

Daniel



  parent reply	other threads:[~2016-07-07 10:26 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-06-21 11:56 Damien Doligez
2016-06-21 15:48 ` Gabriel Scherer
2016-06-21 15:54   ` [Caml-list] About "precise (formal) things that can be said about properties of certain interfaces" David MENTRE
2016-06-21 19:11     ` Gabriel Scherer
2016-06-21 20:06       ` Jesper Louis Andersen
2016-06-22 15:33   ` [Caml-list] About contributions to the Standard Library Junsong Li
2016-06-22 21:31   ` Alain Frisch
2016-07-07 10:26   ` Daniel Bünzli [this message]
2016-07-08 14:01     ` Alain Frisch
2016-07-08 14:37       ` Daniel Bünzli
2016-07-11  8:55         ` Goswin von Brederlow
2016-07-11  9:43           ` Daniel Bünzli
2016-07-11  9:48             ` Adrien Nader
2016-07-11 10:28               ` Daniel Bünzli
2016-07-11 18:34                 ` Adrien Nader
2016-07-11 20:36                   ` Daniel Bünzli
2016-07-11  9:49             ` Goswin von Brederlow
2016-07-12 18:32           ` Ian Zimmerman
2016-07-12 19:01             ` Gabriel Scherer
2016-07-12 21:26               ` Ian Zimmerman
2016-07-12 22:35                 ` Gabriel Scherer
2016-07-12 23:20                   ` Ian Zimmerman
2016-06-27  9:09 ` Goswin von Brederlow
2016-06-27 11:19   ` Gerd Stolpmann
2016-06-27 13:21     ` Gabriel Scherer
2016-06-30 11:08       ` Goswin von Brederlow
2016-06-30 15:52         ` Gabriel Scherer
2016-06-30 10:59     ` Goswin von Brederlow

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=7BDA5C9D56314AE6A0D9E07226862399@erratique.ch \
    --to=daniel.buenzli@erratique.ch \
    --cc=caml-list@inria.fr \
    --cc=damien.doligez@inria.fr \
    --cc=gabriel.scherer@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).