Splitting Network.URI from the network package

Michael Snoyman michael at snoyman.com
Fri Aug 8 12:47:33 UTC 2014


That's a nice feature, big +1 from me. But it's not something we can rely
on until 7.10 has completely supplanted previous versions of GHC, but once
that happens, I'll look forward to using it for these situations.

Without module reexports, I'm fairly certain the breakage from something
like network-without-uri would be steeper than the proposal I'm making.


On Fri, Aug 8, 2014 at 3:11 PM, Edward Z. Yang <ezyang at mit.edu> wrote:

> Hello Michael,
>
> I'd like to chime in that with module reexports (a new feature landing
> in GHC 7.10, see https://ghc.haskell.org/trac/ghc/wiki/ModuleReexports),
> network-uri can safely reexport the Network.URI module defined in old
> versions of network (if both packages are included, GHC won't consider
> the import ambiguous.)
>
> If you wanted to do things completely without breaking BC, this would
> suggest making a new package network-without-uri (but obviously a better
> name), and users who don't use Network.URI can switch their
> build-depends against that. network also defines Network.URI, but now it
> reexports modules from network-without-uri.
>
> Cheers,
> Edward
>
> Excerpts from Michael Snoyman's message of 2014-08-01 12:31:13 +0100:
> > This was brought up last year[1], and I'd like to bring it up again,
> based
> > on a recent issue I was working through with a user[2]. I realize that
> this
> > is a breaking change, but:
> >
> > 1. It's a minor breaking change: you simply need to add an extra package
> to
> > your build-depends.
> > 2. The problems caused by having a parsec dependency in network can be
> > severe, especially for new users (I'll describe the details after the
> > proposal).
> >
> > Concretely, I believe we should do the following:
> >
> > 1. Create a new package, network-uri, version 2.5.0.0, which exposes no
> > modules and has an upper bound `network < 2.6.
> > 2. Create a second release of network-uri, version 3.0.0.0, which
> provides
> > the Network.URI module verbatim as provided by the network package today,
> > and has a lower bound `network >= 3.0`.
> > 3. Release network version 3.0.0.0, with no changes from the currently
> > released version, except that (a) no Network.URI module is provided, and
> > (b) there is no parsec dependency.
> >
> > I don't remember how the discussion went last time, but I seem to
> remember
> > general consensus. I'd like to set a discussion period of two weeks
> (August
> > 15).
> >
> > ## Motivation
> >
> > To give a concrete example of why this problem is severe, consider the
> > following data:
> >
> > * The network package is a pain to install on Windows for most users
> > (especially new users), since it requires msys.
> > * Most Windows users therefore install the Haskell Platform, avoiding the
> > msys dependency.
> > * The current release of HP installs text version 0.11.3.1. text is a
> > dependency of parsec, and parsec is a dependency of network. Therefore,
> you
> > can't build against a new version of text *and* use the network package
> > without recompiling network, which as I mentioned is difficult.
> > * A number of popular packages depend on newer versions of text. For
> > example, since 0.8.0.0, aeson requires text version 1.1.0.0 or later. as
> > does attoparsec since version 0.12.0.0.
> >
> > [1] http://www.haskell.org/pipermail/libraries/2013-January/019234.html
> > [2] https://groups.google.com/d/msg/yesodweb/auk2vByXgO8/lUZ9oanKyMwJ
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/libraries/attachments/20140808/b862ef79/attachment.html>


More information about the Libraries mailing list