GHC 7.8 release redux

2013-04-18 Thread Ben Gamari

Recently I tried to parse the flurry of activity in the GHC 7.8
release? thread which started in early February[1]. This was quite a
long thread with a number of different facets. To avoid losing points in
the noise, I thought it might be useful to summarize the major points
(please comment if I've missed something major),

  * More steeping time was necessary for a stable 7.8 release

  * Core APIs change too quickly, we need to try harder to decouple
API-breaking releases from releases with core compiler functionality

  * The solution for this might be the three channel approach proposed
by Mark[2]

  * Splitting base further might help the reduce unnecessary
breakages[3]. Work has continued in this direction since the thread
concluded[4].

  * Tracking performance regression with periodic runs of nofib would be
useful[5]

Quite a productive thread for a week of wallclock time. That being said,
if I'm not mistaken one matter is notably absent: what is the plan for
7.8? Will it admit API breakage? Should we establish a timeframe for getting
work in before a formal release candidate is cut?

Of course, let's just wait and see is a perfectly reasonable response
but it would be nice to see it clearly set down in writing to avoid
future confusion.

Cheers,

- Ben



[1] http://www.haskell.org/pipermail/ghc-devs/2013-February/000309.html
[2] http://www.haskell.org/pipermail/ghc-devs/2013-February/000386.html
[3] http://www.haskell.org/pipermail/ghc-devs/2013-February/000451.html
[4] http://hackage.haskell.org/trac/ghc/wiki/SplitBase
[5] http://www.haskell.org/pipermail/ghc-devs/2013-February/000332.html

___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: GHC 7.8 release redux

2013-04-18 Thread Ian Lynagh
On Thu, Apr 18, 2013 at 12:21:26PM -0400, Ben Gamari wrote:
 
 what is the plan for
 7.8? Will it admit API breakage? Should we establish a timeframe for getting
 work in before a formal release candidate is cut?

7.8 will be released as shortly after ICFP as we can. It will allow API
changes. There's no hard timeframe yet, but the sooner a patch is sent,
the more likely it is to make it in.


Thanks
Ian


___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: base package (Was: GHC 7.8 release?)

2013-02-21 Thread Edward Kmett
Comparing hash, ptr, str gives you a pretty good acceptance/rejection test.
hash for the quick rejection, ptr for quick acceptance, str for accuracy.
Especially since the particular fingerprints for Typeable at least are
usually made up of 3 bytestrings that were just stuffed in and forgotten
about.

That said, this would seem to bring ByteString or at least Ptr in at a
pretty low level for the level of generality folks seem to be suddenly
seeking.

-Edward

On Wed, Feb 20, 2013 at 12:12 PM, Ian Lynagh i...@well-typed.com wrote:

 On Fri, Feb 15, 2013 at 02:45:19PM +, Simon Marlow wrote:
 
  Remember that fingerprinting is not hashing.  For fingerprinting we
  need to have a realistic expectation of no collisions.  I don't
  think FNV is suitable.
 
  I'm sure it would be possible to replace the C md5 code with some
  Haskell.  Performance *is* important here though - Typeable is in
  the inner loop of certain generic programming libraries, like SYB.

 We currently just compare
 hash(str)
 for equality, right? Could we instead compare
 (hash str, str)
 ? That would be even more correct, even if a bad/cheap hash function is
 used, and would only be slower for the case where the types match
 (unless you're unlucky and get a hash collision).

 In fact, we may be able to arrange it so that in the equal case the
 strings are normally exactly the same string, so we can do a cheap
 pointer equality test (like ByteString already does) to make the equal
 case fast too (falling back to actually checking the strings are equal,
 if they aren't the same string).


 Thanks
 Ian


 ___
 Glasgow-haskell-users mailing list
 Glasgow-haskell-users@haskell.org
 http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: base package (Was: GHC 7.8 release?)

2013-02-21 Thread Simon Marlow

On 20/02/13 17:12, Ian Lynagh wrote:

On Fri, Feb 15, 2013 at 02:45:19PM +, Simon Marlow wrote:


Remember that fingerprinting is not hashing.  For fingerprinting we
need to have a realistic expectation of no collisions.  I don't
think FNV is suitable.

I'm sure it would be possible to replace the C md5 code with some
Haskell.  Performance *is* important here though - Typeable is in
the inner loop of certain generic programming libraries, like SYB.


We currently just compare
 hash(str)
for equality, right? Could we instead compare
 (hash str, str)
? That would be even more correct, even if a bad/cheap hash function is
used, and would only be slower for the case where the types match
(unless you're unlucky and get a hash collision).



In fact, we may be able to arrange it so that in the equal case the
strings are normally exactly the same string, so we can do a cheap
pointer equality test (like ByteString already does) to make the equal
case fast too (falling back to actually checking the strings are equal,
if they aren't the same string).


So it's not a single string, a TypeRep consists of a TyCon applied to 
some arguments, which themselves are TypeReps etc.


You could do pointer equality, and maybe that would work for the common 
cases.  But I don't see why we have to do that when fingerprinting works 
well and we already have it.  Why add a potential performance pitfall 
when we don't have to?


One other thing: it's useful to be able to use the fingerprint as an 
identifier for the contents, e.g. when sending Typeable values across 
the network.  If you can't do this with the fingerprint, then you need 
another unique Id, which is the situation we used to have before 
fingerprints.


Cheers,
Simon


___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: base package (Was: GHC 7.8 release?)

2013-02-20 Thread Ian Lynagh
On Fri, Feb 15, 2013 at 02:45:19PM +, Simon Marlow wrote:
 
 Remember that fingerprinting is not hashing.  For fingerprinting we
 need to have a realistic expectation of no collisions.  I don't
 think FNV is suitable.
 
 I'm sure it would be possible to replace the C md5 code with some
 Haskell.  Performance *is* important here though - Typeable is in
 the inner loop of certain generic programming libraries, like SYB.

We currently just compare
hash(str)
for equality, right? Could we instead compare
(hash str, str)
? That would be even more correct, even if a bad/cheap hash function is
used, and would only be slower for the case where the types match
(unless you're unlucky and get a hash collision).

In fact, we may be able to arrange it so that in the equal case the
strings are normally exactly the same string, so we can do a cheap
pointer equality test (like ByteString already does) to make the equal
case fast too (falling back to actually checking the strings are equal,
if they aren't the same string).


Thanks
Ian


___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: GHC 7.8 release?

2013-02-18 Thread Herbert Valerio Riedel
wren ng thornton w...@freegeek.org writes:

[...]

 But again, this depends on how feasible it would be to actually split
 the packages apart. Is it feasible?

Some time last year, I tried to extract the module import
inter-dependencies in the base package (with the help of GHC's
-ddump-minimal-imports), and came up with the following relations:



all-deps.lst
Description: Binary data

The main problem I see are the cyclic dependencies between groups of
modules; e.g. consider the import-deps between the Prelude module and
the GHC.* modules:

GHC.ConsoleHandler : Prelude
GHC.Constants : Prelude
GHC.Environment : Prelude
GHC.Event : Prelude
GHC.Exts : Prelude
GHC.Handle : Prelude
GHC.IOBase : Prelude
GHC.PArr : Prelude
GHC.Stack : Prelude
GHC.Stats : Prelude
Prelude : GHC.Base
Prelude : GHC.Enum
Prelude : GHC.Err
Prelude : GHC.Float
Prelude : GHC.Num
Prelude : GHC.Real
Prelude : GHC.Show

Moreover, the GHC.* modules often also import other standard-library
modules such as Data.* for the types and helpers. Also, cyclic
dependencies between CABAL packages aren't supported afaik... 


cheers,
  hvr
___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: base package (Was: GHC 7.8 release?)

2013-02-15 Thread Joachim Breitner
Hi,

Am Donnerstag, den 14.02.2013, 21:41 -0500 schrieb brandon s allbery
kf8nh:
 On Thursday, February 14, 2013 at 8:14 PM, Johan Tibell wrote:
  On Thu, Feb 14, 2013 at 2:53 PM, Joachim Breitner
  m...@joachim-breitner.de wrote:
  I don't think having FFI far down the stack is a problem. There are
  lots of pure data types we'd like in the pure data layer (e.g.
  bytestring) that uses FFI. As long as the I/O layer itself
  (System.IO, the I/O manager, etc) doesn't get pulled in there's no
  real problem in depending on the FFI. 

I think it would be nice, also to other Haskell implementations that
might have not have FFI, to separate the really basic stuff from
pure-but-impurely-implemented stuff. At least as long as it does not
caues trouble.

GHC.Fingerprint does not need to be crippled when it is going to use a
pure hashing; I quickly added some simple fingerpriting found via
Wikipedia that was easier than MD5.
https://github.com/nomeata/packages-base/commit/b7f80066a03fd296950e0cafa2278d43a86f82fc
The choice is of course not final, maybe something with more bits is
desirable.

 Doesn't the FFI pull in some part of the I/O layer, though?  In
 particular threaded programs are going to end up using forkOS?

Another good reason to try to have a pure ground library.

Based on base-pure, the next step would be to check if FFI can be
provided without IO (but I doubt that is difficult), so there would be
an base-io package on top of base-pure, and then bytestring can depend
on that base-io and base-pure, while users of bytestring of course don’t
have to depend on base-io (as long as they are not using the IO-related
functions of bytestring).

Questions:
 * Does anyone have a tool to compare package APIs? It would be
interesting to diff base’s API with the combined APIs of the package we
are creating right now.
 * Currently, base-pure exports lots of modules that should not be part
of its “pure” API (all the GHC.* packages). But I assume they need to be
exported for the benefit of packages like base-io built on top. Should
we provide another package that re-exports those that are for public
consumption and is likely to have a more stable API? Again I feel the
need for packages re-exporting modules without incurring a conflict.
 * What to do with Prelude. Should it be in base-io (which is
potentially the lowest package containing everything needed) or rather
in a package of its own? Or should it live in a package of its own? Or
can we use the haskell2010 package for that somehow?
 * Should base-io provide just the IO monad and all, say, file-related
stuff in a separate package or is this going too far?


Greetings,
Joachim

-- 
Joachim nomeata Breitner
Debian Developer
  nome...@debian.org | ICQ# 74513189 | GPG-Keyid: 4743206C
  JID: nome...@joachim-breitner.de | http://people.debian.org/~nomeata



signature.asc
Description: This is a digitally signed message part
___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


RE: base package (Was: GHC 7.8 release?)

2013-02-15 Thread Simon Peyton-Jones
|  Doesn't the FFI pull in some part of the I/O layer, though?  In
|  particular threaded programs are going to end up using forkOS?
| 
| Another good reason to try to have a pure ground library.

Remember that we have UNSAFE ffi calls and SAFE ones.  

The SAFE ones may block, cause GC etc.  They involve a lot of jiggery pokery 
and I would not be surprised if that affected the I/O manager.

But UNSAFE ones are, by design, no more than fat machine instructions that 
are implemented by taking an out-of-line call.  They should not block.  They 
should not cause GC.  Nothing.  Think of 'sin' and 'cos' for example.

Fingerprinting is a classic example, I would have thought.

So my guess is that it should not be hard to allow UNSAFE ffi calls in the core 
(non-IO-ish) bits, leaving SAFE calls for higher up the stack.

Simon
___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: base package (Was: GHC 7.8 release?)

2013-02-15 Thread Joachim Breitner
Hi,

more progress: On top of base-pure, I created base-io involving GHC/IO
and everything required to build it (which pulled in ST, some of Foreign
and unfortunately some stuff related to Handles and Devices, because it
is mentioned in IOException). This is the list of modules:

Foreign.C.Types,
Foreign.ForeignPtr,
Foreign.ForeignPtr.Imp,
Foreign.ForeignPtr.Safe,
Foreign.ForeignPtr.Unsafe,
Foreign.Ptr,
Foreign.Storable,
GHC.ForeignPtr,
GHC.IO.BufferedIO,
GHC.IO.Buffer,
GHC.IO.Device,
GHC.IO.Encoding.Types,
GHC.IO.Exception,
GHC.IO.Handle.Types,
GHC.IO,
GHC.IORef,
GHC.MVar,
GHC.Ptr,
GHC.Stable,
GHC.ST,
GHC.Storable,
GHC.STRef

It is on a different branch on my github repo:
https://github.com/nomeata/packages-base/tree/base-io

GHC would complain that the CInt type is not valid in a ffi call
(probably due to the different package name), so I replaced foreign
declarations by regular ones defined using “undefined” – after all I’m
just trying to discover how things can be split at all and just work
towards building stuff.

ST can probably be pulled below this package, after all it is quite
pure. Either a package of its own, or in base-pure.

Greetings,
Joachim

-- 
Joachim nomeata Breitner
Debian Developer
  nome...@debian.org | ICQ# 74513189 | GPG-Keyid: 4743206C
  JID: nome...@joachim-breitner.de | http://people.debian.org/~nomeata



signature.asc
Description: This is a digitally signed message part
___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: base package (Was: GHC 7.8 release?)

2013-02-15 Thread Simon Marlow

On 15/02/13 09:36, Simon Peyton-Jones wrote:

|  Doesn't the FFI pull in some part of the I/O layer, though?  In
|  particular threaded programs are going to end up using forkOS?
|
| Another good reason to try to have a pure ground library.

Remember that we have UNSAFE ffi calls and SAFE ones.

The SAFE ones may block, cause GC etc.  They involve a lot of jiggery pokery 
and I would not be surprised if that affected the I/O manager.

But UNSAFE ones are, by design, no more than fat machine instructions that 
are implemented by taking an out-of-line call.  They should not block.  They should not 
cause GC.  Nothing.  Think of 'sin' and 'cos' for example.

Fingerprinting is a classic example, I would have thought.

So my guess is that it should not be hard to allow UNSAFE ffi calls in the core 
(non-IO-ish) bits, leaving SAFE calls for higher up the stack.


Actually as far as the Haskell-level API goes, there's no difference 
between safe and unsafe FFI calls, the difference is all in the codegen. 
 I don't think safe calls cause any more difficulties for splitting up 
the base.


Cheers,
Simon





___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: base package (Was: GHC 7.8 release?)

2013-02-15 Thread Simon Marlow

On 15/02/13 08:36, Joachim Breitner wrote:

Hi,

Am Donnerstag, den 14.02.2013, 21:41 -0500 schrieb brandon s allbery
kf8nh:

On Thursday, February 14, 2013 at 8:14 PM, Johan Tibell wrote:

On Thu, Feb 14, 2013 at 2:53 PM, Joachim Breitner
m...@joachim-breitner.de wrote:
I don't think having FFI far down the stack is a problem. There are
lots of pure data types we'd like in the pure data layer (e.g.
bytestring) that uses FFI. As long as the I/O layer itself
(System.IO, the I/O manager, etc) doesn't get pulled in there's no
real problem in depending on the FFI.


I think it would be nice, also to other Haskell implementations that
might have not have FFI, to separate the really basic stuff from
pure-but-impurely-implemented stuff. At least as long as it does not
caues trouble.

GHC.Fingerprint does not need to be crippled when it is going to use a
pure hashing; I quickly added some simple fingerpriting found via
Wikipedia that was easier than MD5.
https://github.com/nomeata/packages-base/commit/b7f80066a03fd296950e0cafa2278d43a86f82fc
The choice is of course not final, maybe something with more bits is
desirable.


Remember that fingerprinting is not hashing.  For fingerprinting we need 
to have a realistic expectation of no collisions.  I don't think FNV is 
suitable.


I'm sure it would be possible to replace the C md5 code with some 
Haskell.  Performance *is* important here though - Typeable is in the 
inner loop of certain generic programming libraries, like SYB.


Cheers,
Simon


___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: base package (Was: GHC 7.8 release?)

2013-02-15 Thread Simon Marlow

On 15/02/13 12:22, Joachim Breitner wrote:

Hi,

more progress: On top of base-pure, I created base-io involving GHC/IO
and everything required to build it (which pulled in ST, some of Foreign
and unfortunately some stuff related to Handles and Devices, because it
is mentioned in IOException). This is the list of modules:

 Foreign.C.Types,
 Foreign.ForeignPtr,
 Foreign.ForeignPtr.Imp,
 Foreign.ForeignPtr.Safe,
 Foreign.ForeignPtr.Unsafe,
 Foreign.Ptr,
 Foreign.Storable,
 GHC.ForeignPtr,
 GHC.IO.BufferedIO,
 GHC.IO.Buffer,
 GHC.IO.Device,
 GHC.IO.Encoding.Types,
 GHC.IO.Exception,
 GHC.IO.Handle.Types,
 GHC.IO,
 GHC.IORef,
 GHC.MVar,
 GHC.Ptr,
 GHC.Stable,
 GHC.ST,
 GHC.Storable,
 GHC.STRef


You have a random collection of modules here :)

I think you want to have the IO *monad* (GHC.IO) live in a lower layer, 
separate from the IO *library* (GHC.IO.Device and so on).  Every Haskell 
implementation will need the IO monad, but they might want to replace 
the IO library with something else.


Things like GHC.IORef, GHC.MVar can all live in a low-down layer because 
they're just wrappers over the primops.


Cheers,
Simon


___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: base package (Was: GHC 7.8 release?)

2013-02-15 Thread Wolfram Kahl
On Thu, Feb 14, 2013 at 03:48:51PM +0100, Joachim Breitner wrote:
 
 Yesterday, I experimented a bit with base’s code, [...]

 Maybe the proper is to reverse the whole approach: Leave base as it is,
 and then build re-exporting smaller packages (e.g. a base-pure) on top
 of it. The advantage is:
   * No need to rewrite the tightly intertwined base.
   * Libraries still have the option to have tighter dependencies.
   * Base can evolve with lots of breaking changes, as long as they
 do not affect the API by the smaller packages.
   * Development of this collection can happen outside the GHC tree.
   * Alternative implementations for (some of) these packages can be
 created, if the reason why they could not be moved out of base
 is one of implementation, not of API
 
 How does that sound?

Essentially good to me...


One might consider instead (as has been proposed before, I believe),
to rename the current ``base'' to something like ``ghc-base''
which is not intended to be depended on by packages not shipped with GHC
(that is, by default ``hidden'' in ghc-pkg), and instead export:
  base   with a very stable interface
  io with a very stable interface
  GHCwith a probably rapidly evolving interface.
  *  possibly other packages giving access to internals

Most packages that currently depend on ``base'' would then depend
only on ``base'' and possibly ``io'', and by virtue of the stability
of these two interfaces would therefore not be affected
by most GHC releases.

This would effectively be
   ``splitting the interfaces GHC and io out from base''
instead of
   ``deprecating base and replacing it with the three new interfaces
 base-pure, io, and GHC''.

That choice is possibly mostly a matter of taste ---
I think that the name ``base'' is good for a user-facing interface,
and the name ``ghc-base'' more indicative of its
implementation-dependent character.


Wolfram

___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: base package (Was: GHC 7.8 release?)

2013-02-15 Thread Johan Tibell
On Thu, Feb 14, 2013 at 6:48 AM, Joachim Breitner
m...@joachim-breitner.dewrote:

 Maybe the proper is to reverse the whole approach: Leave base as it is,
 and then build re-exporting smaller packages (e.g. a base-pure) on top
 of it. The advantage is:
   * No need to rewrite the tightly intertwined base.
   * Libraries still have the option to have tighter dependencies.
   * Base can evolve with lots of breaking changes, as long as they
 do not affect the API by the smaller packages.
   * Development of this collection can happen outside the GHC tree.
   * Alternative implementations for (some of) these packages can be
 created, if the reason why they could not be moved out of base
 is one of implementation, not of API

 How does that sound?


I'm not in favor of this approach as it precludes pushing any data types
down the stack. In particular, we want text and bytestring to be below the
I/O layer, so we can defined Handles that work with those in base itself.
___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: base package (Was: GHC 7.8 release?)

2013-02-15 Thread Edward A Kmett
As a super obvious aside, we could just switch code paths based on 
platform/environment. That lets you keep the fast code path and have a pure 
fallback for the javascripters. Just propagate an FFI_AVAILABLE flag into the 
compilation unit. We're going to have a number of these points which force a 
tension between generality And speed as we go, and it'd nice to have the 
ability to gracefully fall back.

On Feb 15, 2013, at 9:45 AM, Simon Marlow marlo...@gmail.com wrote:

 On 15/02/13 08:36, Joachim Breitner wrote:
 Hi,
 
 Am Donnerstag, den 14.02.2013, 21:41 -0500 schrieb brandon s allbery
 kf8nh:
 On Thursday, February 14, 2013 at 8:14 PM, Johan Tibell wrote:
 On Thu, Feb 14, 2013 at 2:53 PM, Joachim Breitner
 m...@joachim-breitner.de wrote:
 I don't think having FFI far down the stack is a problem. There are
 lots of pure data types we'd like in the pure data layer (e.g.
 bytestring) that uses FFI. As long as the I/O layer itself
 (System.IO, the I/O manager, etc) doesn't get pulled in there's no
 real problem in depending on the FFI.
 
 I think it would be nice, also to other Haskell implementations that
 might have not have FFI, to separate the really basic stuff from
 pure-but-impurely-implemented stuff. At least as long as it does not
 caues trouble.
 
 GHC.Fingerprint does not need to be crippled when it is going to use a
 pure hashing; I quickly added some simple fingerpriting found via
 Wikipedia that was easier than MD5.
 https://github.com/nomeata/packages-base/commit/b7f80066a03fd296950e0cafa2278d43a86f82fc
 The choice is of course not final, maybe something with more bits is
 desirable.
 
 Remember that fingerprinting is not hashing.  For fingerprinting we need to 
 have a realistic expectation of no collisions.  I don't think FNV is suitable.
 
 I'm sure it would be possible to replace the C md5 code with some Haskell.  
 Performance *is* important here though - Typeable is in the inner loop of 
 certain generic programming libraries, like SYB.
 
 Cheers,
Simon
 
 
 ___
 Glasgow-haskell-users mailing list
 Glasgow-haskell-users@haskell.org
 http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: base package (Was: GHC 7.8 release?)

2013-02-15 Thread Joachim Breitner
Hi,


Am Freitag, den 15.02.2013, 14:50 + schrieb Simon Marlow:
 On 15/02/13 12:22, Joachim Breitner wrote:
  Hi,
 
  more progress: On top of base-pure, I created base-io involving GHC/IO
  and everything required to build it (which pulled in ST, some of Foreign
  and unfortunately some stuff related to Handles and Devices, because it
  is mentioned in IOException). This is the list of modules:
 

 You have a random collection of modules here :)
 
 I think you want to have the IO *monad* (GHC.IO) live in a lower layer, 
 separate from the IO *library* (GHC.IO.Device and so on).  Every Haskell 
 implementation will need the IO monad, but they might want to replace 
 the IO library with something else.
 
 Things like GHC.IORef, GHC.MVar can all live in a low-down layer because 
 they're just wrappers over the primops.

Right, that is my aim, and I started with GHC.IO. But unfortunately, the
IO monad calls failIO, which is an IOError which has a field of type
ioe_handle :: Maybe Handle (and one of type CInt) which pulls in all the
rest there, and so far I did not have a good idea how to untangle that.

What would break if fail would not raise an IOError, but a separate
exception type, e.g. IOFailError? Probably too much, as users expect to
catch the exception raised by fail with an exception handler that
matches IOError.


Greetings,
Joachim


-- 
Joachim nomeata Breitner
Debian Developer
  nome...@debian.org | ICQ# 74513189 | GPG-Keyid: 4743206C
  JID: nome...@joachim-breitner.de | http://people.debian.org/~nomeata



signature.asc
Description: This is a digitally signed message part
___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: base package (Was: GHC 7.8 release?)

2013-02-14 Thread Joachim Breitner
Hi,

Am Donnerstag, den 14.02.2013, 02:21 + schrieb Ian Lynagh:
 On Wed, Feb 13, 2013 at 07:32:06PM +0100, Joachim Breitner wrote:
  
  I have started a wikipage with the list of all modules from base,
 for a
  first round of shuffling, grouping and brainstorming:
  
  http://hackage.haskell.org/trac/ghc/wiki/SplitBase
 
 Great, thanks for taking the lead on this!

lets see how far that leads goes...

Yesterday, I experimented a bit with base’s code, first beginning with
as few modules as possible and adding what’s required; then starting
with the whole thing and trying to remove e.g. IO.

But clearly it is not easy:
 1. Int requires throw DivideByZero; Monad requires error. That
pulls in Exceptions.
 2. Exceptions require Typeable.
 3. Typeable is implemented with GHC.Fingerprint.
 4. GHC.Fingerprint is implemented with Foreign and IO.
 5. Foreign clearly needs Int and the like.

so it is not clear how to pull out a pure base without IO and Foreign.
Are there any good tricks how to break these interdependencies?

Maybe it is possible to have a pure base without the Monad class and
without some of the operations on Int that throw exceptions, but that
wold hardly be useable.


There are other issues, some avoidable (such as the hard-coded base:Num
constraint on literals); I collected a list on
http://hackage.haskell.org/trac/ghc/wiki/SplitBase



Maybe the proper is to reverse the whole approach: Leave base as it is,
and then build re-exporting smaller packages (e.g. a base-pure) on top
of it. The advantage is:
  * No need to rewrite the tightly intertwined base.
  * Libraries still have the option to have tighter dependencies.
  * Base can evolve with lots of breaking changes, as long as they
do not affect the API by the smaller packages.
  * Development of this collection can happen outside the GHC tree.
  * Alternative implementations for (some of) these packages can be
created, if the reason why they could not be moved out of base
is one of implementation, not of API

How does that sound?

Greetings,
Joachim

-- 
Joachim nomeata Breitner
Debian Developer
  nome...@debian.org | ICQ# 74513189 | GPG-Keyid: 4743206C
  JID: nome...@joachim-breitner.de | http://people.debian.org/~nomeata



signature.asc
Description: This is a digitally signed message part
___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: base package (Was: GHC 7.8 release?)

2013-02-14 Thread Ian Lynagh
On Thu, Feb 14, 2013 at 03:48:51PM +0100, Joachim Breitner wrote:
 
 Yesterday, I experimented a bit with base’s code, first beginning with
 as few modules as possible and adding what’s required; then starting
 with the whole thing and trying to remove e.g. IO.
 
 But clearly it is not easy:
  1. Int requires throw DivideByZero; Monad requires error. That
 pulls in Exceptions.
  2. Exceptions require Typeable.
  3. Typeable is implemented with GHC.Fingerprint.
  4. GHC.Fingerprint is implemented with Foreign and IO.
  5. Foreign clearly needs Int and the like.
 
 so it is not clear how to pull out a pure base without IO and Foreign.
 Are there any good tricks how to break these interdependencies?

We'll probably end up with a package (let's say ghc-bottom for now)
right at the bottom of the hierarchy which contains a minimal set of
definitions for Typeable, throw, etc, in modules like GHC.Typeable,
GHC.IO (or, if it's small and the dependencies are circular, might be
easier to have it all in a single module).

It might be possible to merge this into ghc-prim later, but don't worry
about that for now.

These definitions would then be re-exported by Data.Typeable,
Control.Exception etc higher up. Other libraries would be discouraged
from depending on ghc-bottom, either socially or by needing to jump
through extra hoops in a .cabal file fo allow it.



However, this is the hard end to start from, because the modules right
at the bottom depend on things much higher up, with cyclic imports.
It'll be a lot easier to pull modules off the top instead, as nothing
imports them. They also tend to be less magical (e.g. don't have
wired-in names).

Also, don't worry about necessarily pulling out /all/ the modules you
want for a package all at once. Once you have smaller chunks it'll be
easier to see what changes are necessary to move modules up/down. You
may also need to leave e.g. some of IO lower down than the io package in
a GHC.* module, and then to re-export it from io.

Once the top has been pulled at as much as possible, it'll be a lot
easier to see what's going on with the remainder, and work out what
needs to be done to break the biggest loops.

 There are other issues, some avoidable (such as the hard-coded base:Num
 constraint on literals); I collected a list on
 http://hackage.haskell.org/trac/ghc/wiki/SplitBase

Right, for things with built-in syntax you'll have to update GHC's
wired-in names as you go. This will mostly just mean changing the
modules, e.g.
gHC_ENUM = mkBaseModule (fsLit GHC.Enum)
in compiler/prelude/PrelNames.lhs might become
gHC_ENUM = mkGhcPureModule (fsLit GHC.Enum)
with mkGhcPureModule defined analogously to mkBaseModule, but
occasionally you might want to move a definition to another module. If
you get stuck, just yell.

 Maybe the proper is to reverse the whole approach: Leave base as it is,
 and then build re-exporting smaller packages (e.g. a base-pure) on top
 of it. The advantage is:
   * No need to rewrite the tightly intertwined base.
   * Libraries still have the option to have tighter dependencies.
   * Base can evolve with lots of breaking changes, as long as they
 do not affect the API by the smaller packages.
   * Development of this collection can happen outside the GHC tree.
   * Alternative implementations for (some of) these packages can be
 created, if the reason why they could not be moved out of base
 is one of implementation, not of API

Disadvantages:

* No-one would use the new packages unless they come with GHC;
  e.g. not a perfect analogy, but compare the number of rev-deps
  according to http://packdeps.haskellers.com/reverse of the various
  *prelude* packages vs base:
  4831 base
 6 basic-prelude
 8 classy-prelude
 4 classy-prelude-conduit
 2 custom-prelude
 1 general-prelude
 1 modular-prelude
17 numeric-prelude
 2 prelude-extras
* If it comes with GHC, it would mean us permanently maintaining the two
  levels
* base would still be an opaque blob, with too many modules and cyclic
  imports, which makes development tricky


Thanks
Ian


___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: base package (Was: GHC 7.8 release?)

2013-02-14 Thread Joachim Breitner
Hi,

I made a little progress after crippling GHC.Fingerprint:

The package at
https://github.com/nomeata/packages-base/tree/base-pure
(Branch base-pure) builds and contains just these modules:

./Control/Applicative.hs
./Control/Arrow.hs
./Control/Category.hs
./Control/Monad/Fix.hs
./Control/Monad.hs
./Data/Bits.hs
./Data/Bool.hs
./Data/Either.hs
./Data/Eq.hs
./Data/Foldable.hs
./Data/Function.hs
./Data/Functor.hs
./Data/Int.hs
./Data/List.hs
./Data/Maybe.hs
./Data/Monoid.hs
./Data/Ord.hs
./Data/Ratio.hs
./Data/Traversable.hs
./Data/Tuple.hs
./Data/Typeable.hs
./Data/Typeable.hs-boot
./Data/Typeable/Internal.hs
./Data/Typeable/Internal.hs-boot
./dist/build/autogen/Paths_base_pure.hs
./GHC/Base.lhs
./GHC/Char.hs
./GHC/Enum.lhs
./GHC/Err.lhs
./GHC/Err.lhs-boot
./GHC/Exception.lhs
./GHC/Fingerprint.hs
./GHC/Fingerprint/Type.hs
./GHC/Int.hs
./GHC/List.lhs
./GHC/Num.lhs
./GHC/Real.lhs
./GHC/Show.lhs
./GHC/Word.hs
./Prelude.hs (contains just $!)
./Unsafe/Coerce.hs

The crippling can be seen here:
https://github.com/nomeata/packages-base/blob/base-pure/GHC/Fingerprint.hs

So if there were a magic way of getting a working GHC.Fingerprint module
without pulling in Foreign, this would be a good start for a base free
of any trace of
 * Foreign
 * IO
 * Floating point arithmetic
 * Read
 * ST
 * Array

Alternative, a magic way of providing the functions error and
divZeroError without having to define Exceptions would do well.

I guess it is not possible to define the data ErrorCall without the
Exception class and somehow call the primop raise# in a way that the
error can be caught, as catch will expect something of type
SomeException that has the Exception dictionary bundled.

Any idea how to achieve that, without having resort to ghc-bottom as
suggested by Ian (which would be ok, but not as nice as genuine small
packages to start with)?

Greetings,
Joachim


-- 
Joachim nomeata Breitner
Debian Developer
  nome...@debian.org | ICQ# 74513189 | GPG-Keyid: 4743206C
  JID: nome...@joachim-breitner.de | http://people.debian.org/~nomeata



signature.asc
Description: This is a digitally signed message part
___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: base package (Was: GHC 7.8 release?)

2013-02-14 Thread Johan Tibell
On Thu, Feb 14, 2013 at 8:45 AM, Joachim Breitner
m...@joachim-breitner.dewrote:

 ./Control/Applicative.hs
 ./Control/Arrow.hs
 ./Control/Category.hs
 ./Control/Monad/Fix.hs
 ./Control/Monad.hs
 ./Data/Bits.hs
 ./Data/Bool.hs
 ./Data/Either.hs
 ./Data/Eq.hs
 ./Data/Foldable.hs
 ./Data/Function.hs
 ./Data/Functor.hs
 ./Data/Int.hs
 ./Data/List.hs
 ./Data/Maybe.hs
 ./Data/Monoid.hs
 ./Data/Ord.hs
 ./Data/Ratio.hs
 ./Data/Traversable.hs
 ./Data/Tuple.hs
 ./Data/Typeable.hs
 ./Data/Typeable.hs-boot
 ./Data/Typeable/Internal.hs
 ./Data/Typeable/Internal.hs-boot
 ./dist/build/autogen/Paths_base_pure.hs
 ./GHC/Base.lhs
 ./GHC/Char.hs
 ./GHC/Enum.lhs
 ./GHC/Err.lhs
 ./GHC/Err.lhs-boot
 ./GHC/Exception.lhs
 ./GHC/Fingerprint.hs
 ./GHC/Fingerprint/Type.hs
 ./GHC/Int.hs
 ./GHC/List.lhs
 ./GHC/Num.lhs
 ./GHC/Real.lhs
 ./GHC/Show.lhs
 ./GHC/Word.hs
 ./Prelude.hs (contains just $!)
 ./Unsafe/Coerce.hs


That's great. I'm curious  I was under the impression that it was hard to
split out a pure subset as functions might call 'error' (e.g. due to
incomplete pattern matches) and that would pull in the whole I/O subsystem.
How did you avoid that?

-- Johan
___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: base package (Was: GHC 7.8 release?)

2013-02-14 Thread Joachim Breitner
Hi,

Am Donnerstag, den 14.02.2013, 13:19 -0800 schrieb Johan Tibell:
 That's great. I'm curious  I was under the impression that it was hard
 to split out a pure subset as functions might call 'error' (e.g. due
 to incomplete pattern matches) and that would pull in the whole I/O
 subsystem. How did you avoid that?

as mentioned before: By crippling GHC.Fingerprint. error foo just calls
raise (ErrorCall foo), which calls raise# (SomeException (ErrorCall
foo). The problem is that the definition of SomeException pulls in the
Exception type class, which pulls in Typeable, which pulls in
GHC.Fingerprint, which uses FFI and IO code to to fingerprinting...

Looking at the code it seems that the FFI is only required for MD5.
Maybe a pure implementation there is worth it, if it is not
performance-critical code. Or, another work-around, would be primops for
these commands that can be used without the FFI types and IO.

I have also removed GHC.Unicode and functions like lines that require
the FFI calls there. These seem to be the largest open issues.

Greetings,
Joachim


-- 
Joachim nomeata Breitner
Debian Developer
  nome...@debian.org | ICQ# 74513189 | GPG-Keyid: 4743206C
  JID: nome...@joachim-breitner.de | http://people.debian.org/~nomeata



signature.asc
Description: This is a digitally signed message part
___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: base package (Was: GHC 7.8 release?)

2013-02-14 Thread Johan Tibell
On Thu, Feb 14, 2013 at 2:53 PM, Joachim Breitner
m...@joachim-breitner.dewrote:

 Hi,

 Am Donnerstag, den 14.02.2013, 13:19 -0800 schrieb Johan Tibell:
  That's great. I'm curious  I was under the impression that it was hard
  to split out a pure subset as functions might call 'error' (e.g. due
  to incomplete pattern matches) and that would pull in the whole I/O
  subsystem. How did you avoid that?

 as mentioned before: By crippling GHC.Fingerprint. error foo just calls
 raise (ErrorCall foo), which calls raise# (SomeException (ErrorCall
 foo). The problem is that the definition of SomeException pulls in the
 Exception type class, which pulls in Typeable, which pulls in
 GHC.Fingerprint, which uses FFI and IO code to to fingerprinting...


I don't think having FFI far down the stack is a problem. There are lots of
pure data types we'd like in the pure data layer (e.g. bytestring) that
uses FFI. As long as the I/O layer itself (System.IO, the I/O manager, etc)
doesn't get pulled in there's no real problem in depending on the FFI.
___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: base package (Was: GHC 7.8 release?)

2013-02-14 Thread brandon s allbery kf8nh
On Thursday, February 14, 2013 at 8:14 PM, Johan Tibell wrote:
 On Thu, Feb 14, 2013 at 2:53 PM, Joachim Breitner m...@joachim-breitner.de 
 (mailto:m...@joachim-breitner.de) wrote:
 I don't think having FFI far down the stack is a problem. There are lots of 
 pure data types we'd like in the pure data layer (e.g. bytestring) that 
 uses FFI. As long as the I/O layer itself (System.IO, the I/O manager, etc) 
 doesn't get pulled in there's no real problem in depending on the FFI. 
Doesn't the FFI pull in some part of the I/O layer, though?  In particular 
threaded programs are going to end up using forkOS?

-- 
brandon s allbery kf8nh
Sent with Sparrow (http://www.sparrowmailapp.com/?sig)

___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: GHC 7.8 release?

2013-02-13 Thread Simon Marlow

On 13/02/13 07:06, wren ng thornton wrote:

On 2/12/13 3:37 AM, Simon Marlow wrote:

One reason for the major version bumps is that base is a big
conglomeration of modules, ranging from those that hardly ever change
(Prelude) to those that change frequently (GHC.*). For example, the new
IO manager that is about to get merged in will force a major bump of
base, because it changes GHC.Event.  The unicode support in the IO
library was similar: although it only added to the external APIs that
most people use, it also changed stuff inside GHC.* that we expose for a
few clients.

The solution to this would be to split up base further, but of course
doing that is itself a major upheaval.  However, having done that, it
might be more feasible to have non-API-breaking releases.


While it will lead to much wailing and gnashing of teeth in the short
term, if it's feasible to break GHC.* off into its own package, then I
think we should. The vast majority of base seems quite stable or else is
rolling along at a reasonable pace. And yet, every time a new GHC comes
out, there's a new wave of fiddling the knobs on cabal files because
nothing really changed. On the other hand, GHC.* moves rather quickly.
Nevertheless, GHC.* is nice to have around, so we don't want to just
hide that churning. The impedance mismatch here suggests that they
really should be separate packages. I wonder whether GHC.* should be
moved in with ghc-prim, or whether they should remain separate...

But again, this depends on how feasible it would be to actually split
the packages apart. Is it feasible?


So I think we'd need to add another package, call it ghc-base perhaps. 
The reason is that ghc-prim sits below the integer package 
(integer-simple or integer-gmp).


It's feasible to split base, but to a first approximation what you end 
up with is base renamed to ghc-base, and then the new base contains just 
stub modules that re-export stuff from ghc-base.  In fact, maybe you 
want to do it exactly like this for simplicity - all the code goes in 
ghc-base.  There would be some impact on compilation time, as we'd have 
twice as many interfaces to read.


I believe Ian has done some experiments with splitting base further, so 
he might have more to add here.


Cheers,
Simon


___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


base package (was: GHC 7.8 release?)

2013-02-13 Thread Roman Cheplyaka
* Simon Marlow marlo...@gmail.com [2013-02-13 09:00:15+]
 It's feasible to split base, but to a first approximation what you
 end up with is base renamed to ghc-base, and then the new base
 contains just stub modules that re-export stuff from ghc-base.

It would be great to have a portable base, without any GHC-specific
stuff in it. After all, modules like Control.Monad or Data.Foldable are
pure Haskell2010.

The only obstacle I see is that ghc-base, as you call it, uses some
amount of base definitions, and so we have a loop.

How hard would it be to break this loop?

That is, either make GHC.* modules self-contained, or make base not to
depend on GHC.*?

Roman

___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: GHC 7.8 release?

2013-02-13 Thread Krzysztof Skrzętnicki
Perhaps looking at what base-compat has to offer (*A compatibility layer
for base*) is relevant to this discussion. See:

https://github.com/sol/base-compat#readme
http://hackage.haskell.org/package/base-compat

I didn't use it but it looks as promising approach to base API stability.

All best,
Krzysztof Skrzętnicki



On Wed, Feb 13, 2013 at 10:00 AM, Simon Marlow marlo...@gmail.com wrote:

 On 13/02/13 07:06, wren ng thornton wrote:

 On 2/12/13 3:37 AM, Simon Marlow wrote:

 One reason for the major version bumps is that base is a big
 conglomeration of modules, ranging from those that hardly ever change
 (Prelude) to those that change frequently (GHC.*). For example, the new
 IO manager that is about to get merged in will force a major bump of
 base, because it changes GHC.Event.  The unicode support in the IO
 library was similar: although it only added to the external APIs that
 most people use, it also changed stuff inside GHC.* that we expose for a
 few clients.

 The solution to this would be to split up base further, but of course
 doing that is itself a major upheaval.  However, having done that, it
 might be more feasible to have non-API-breaking releases.


 While it will lead to much wailing and gnashing of teeth in the short
 term, if it's feasible to break GHC.* off into its own package, then I
 think we should. The vast majority of base seems quite stable or else is
 rolling along at a reasonable pace. And yet, every time a new GHC comes
 out, there's a new wave of fiddling the knobs on cabal files because
 nothing really changed. On the other hand, GHC.* moves rather quickly.
 Nevertheless, GHC.* is nice to have around, so we don't want to just
 hide that churning. The impedance mismatch here suggests that they
 really should be separate packages. I wonder whether GHC.* should be
 moved in with ghc-prim, or whether they should remain separate...

 But again, this depends on how feasible it would be to actually split
 the packages apart. Is it feasible?


 So I think we'd need to add another package, call it ghc-base perhaps. The
 reason is that ghc-prim sits below the integer package (integer-simple or
 integer-gmp).

 It's feasible to split base, but to a first approximation what you end up
 with is base renamed to ghc-base, and then the new base contains just stub
 modules that re-export stuff from ghc-base.  In fact, maybe you want to do
 it exactly like this for simplicity - all the code goes in ghc-base.  There
 would be some impact on compilation time, as we'd have twice as many
 interfaces to read.

 I believe Ian has done some experiments with splitting base further, so he
 might have more to add here.

 Cheers,
 Simon



 __**_
 Glasgow-haskell-users mailing list
 Glasgow-haskell-users@haskell.**org Glasgow-haskell-users@haskell.org
 http://www.haskell.org/**mailman/listinfo/glasgow-**haskell-usershttp://www.haskell.org/mailman/listinfo/glasgow-haskell-users

___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: base package (was: GHC 7.8 release?)

2013-02-13 Thread Joachim Breitner
Hi,

Am Mittwoch, den 13.02.2013, 11:34 +0200 schrieb Roman Cheplyaka:
 It would be great to have a portable base, without any GHC-specific
 stuff in it. After all, modules like Control.Monad or Data.Foldable
 are pure Haskell2010.

while you are considering to split base, please also consider separating
IO out. We can expect compiling Haskell to, say JavaScript or other
targets that are not processes in the usual sense. For these IO might
not make sense.

Having something below base that provides the pure stuff (common data
structures etc.) would enable libraries to easily say: „My algorithm can
be used in normal programs as well as in programs that are compiled to
JS“ by not depending on base, but on, say, pure-base.

Greetings,
Joachim

-- 
Joachim nomeata Breitner
Debian Developer
  nome...@debian.org | ICQ# 74513189 | GPG-Keyid: 4743206C
  JID: nome...@joachim-breitner.de | http://people.debian.org/~nomeata



signature.asc
Description: This is a digitally signed message part
___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: GHC 7.8 release?

2013-02-13 Thread Ian Lynagh
On Wed, Feb 13, 2013 at 09:00:15AM +, Simon Marlow wrote:
 
 I believe Ian has done some experiments with splitting base further,
 so he might have more to add here.

There are some sensible chunks that can be pulled out, e.g. Foreign.*
can be pulled out into a separate package fairly easily IIRC.

Part of the problem is that it's hard to see what's possible without
actually doing it, because base is so large, and has so many imports and
import loops. IMO by far the easiest way to improve base would be to
start off by breaking it up into lots of small packages (some of which
will probably be single-module packages, others may contain an entire
hierarchy like Foreign.*, and others may contain an odd mixture of
modules due to dependency problems).

Then we can look at which packages ought to be split up, which ought to
be coalesced, and which ought to be moved higher up or lower down the
dependency tree, and then look at which module imports are preventing
what we want to do and see if there's a way to fix them (either by
moving a definition and reversing an import, or by changing an import to
import something lower down the dependency tree instead).

If we go this route, then we would probably want to end up without a
package called 'base', and then to make a new package called 'base' that
just re-exports modules from all the new packages. I imagine the first
release would let people use the new base without warnings, a year later
new base would give deprecated warnings, and the following year we'd
remove it. We could do this process slower, but the sooner packages move
off of base, the sooner they benefit from fewer major version bumps.

The advantages would be:
* the new packages would be easier to maintain than base is
* we could more easily make other improvements we'd like to make, e.g.
  we could move the unix and Win32 packages further down the tree
  without having to do it in one big leap, and without having to put
  them below the whole of base
* if one module causes a major version bump, then only libraries using
  that functionality would need to relax their dependencies, rather than
  every single package
* some targets (JS, JVM, .NET, etc) or other implementations might want
  to do things like IO, concurrency, etc, completely differently. This
  way they'd just use a different io/concurrency package, rather than
  having to have a different implementation of parts of base
* it would be nice if pure libraries could simply not depend on the io
  package etc, and thus clearly do no IO

The disadvantage is that, at some point between the first release and
the release that removes base, each package will have to have its
dependencies updated.


Thanks
Ian


___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


RE: GHC 7.8 release?

2013-02-13 Thread Simon Peyton-Jones
I would like to see base split up, but I am reluctant to invest the effort to 
do it.   I'm not going to do it myself, and Ian's time is so precious on many 
fronts.  

My guess is that it'll need someone else to take the lead, with advice from HQ.

Simon

|  -Original Message-
|  From: ghc-devs-boun...@haskell.org [mailto:ghc-devs-boun...@haskell.org] On
|  Behalf Of Ian Lynagh
|  Sent: 13 February 2013 13:58
|  To: Simon Marlow
|  Cc: wren ng thornton; glasgow-haskell-users; ghc-d...@haskell.org
|  Subject: Re: GHC 7.8 release?
|  
|  On Wed, Feb 13, 2013 at 09:00:15AM +, Simon Marlow wrote:
|  
|   I believe Ian has done some experiments with splitting base further,
|   so he might have more to add here.
|  
|  There are some sensible chunks that can be pulled out, e.g. Foreign.*
|  can be pulled out into a separate package fairly easily IIRC.
|  
|  Part of the problem is that it's hard to see what's possible without
|  actually doing it, because base is so large, and has so many imports and
|  import loops. IMO by far the easiest way to improve base would be to
|  start off by breaking it up into lots of small packages (some of which
|  will probably be single-module packages, others may contain an entire
|  hierarchy like Foreign.*, and others may contain an odd mixture of
|  modules due to dependency problems).
|  
|  Then we can look at which packages ought to be split up, which ought to
|  be coalesced, and which ought to be moved higher up or lower down the
|  dependency tree, and then look at which module imports are preventing
|  what we want to do and see if there's a way to fix them (either by
|  moving a definition and reversing an import, or by changing an import to
|  import something lower down the dependency tree instead).
|  
|  If we go this route, then we would probably want to end up without a
|  package called 'base', and then to make a new package called 'base' that
|  just re-exports modules from all the new packages. I imagine the first
|  release would let people use the new base without warnings, a year later
|  new base would give deprecated warnings, and the following year we'd
|  remove it. We could do this process slower, but the sooner packages move
|  off of base, the sooner they benefit from fewer major version bumps.
|  
|  The advantages would be:
|  * the new packages would be easier to maintain than base is
|  * we could more easily make other improvements we'd like to make, e.g.
|we could move the unix and Win32 packages further down the tree
|without having to do it in one big leap, and without having to put
|them below the whole of base
|  * if one module causes a major version bump, then only libraries using
|that functionality would need to relax their dependencies, rather than
|every single package
|  * some targets (JS, JVM, .NET, etc) or other implementations might want
|to do things like IO, concurrency, etc, completely differently. This
|way they'd just use a different io/concurrency package, rather than
|having to have a different implementation of parts of base
|  * it would be nice if pure libraries could simply not depend on the io
|package etc, and thus clearly do no IO
|  
|  The disadvantage is that, at some point between the first release and
|  the release that removes base, each package will have to have its
|  dependencies updated.
|  
|  
|  Thanks
|  Ian
|  
|  
|  ___
|  ghc-devs mailing list
|  ghc-d...@haskell.org
|  http://www.haskell.org/mailman/listinfo/ghc-devs

___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: base package (was: GHC 7.8 release?)

2013-02-13 Thread Stephen Paul Weber

Somebody claiming to be Roman Cheplyaka wrote:

* Simon Marlow marlo...@gmail.com [2013-02-13 09:00:15+]

It's feasible to split base, but to a first approximation what you
end up with is base renamed to ghc-base, and then the new base
contains just stub modules that re-export stuff from ghc-base.


It would be great to have a portable base, without any GHC-specific
stuff in it. After all, modules like Control.Monad or Data.Foldable are
pure Haskell2010.


+1

--
Stephen Paul Weber, @singpolyma
See http://singpolyma.net for how I prefer to be contacted
edition right joseph


signature.asc
Description: Digital signature
___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


base package (Was: GHC 7.8 release?)

2013-02-13 Thread Joachim Breitner
Hi,

Am Mittwoch, den 13.02.2013, 13:58 + schrieb Ian Lynagh:
 If we go this route, then we would probably want to end up without a
 package called 'base', and then to make a new package called 'base'
 that just re-exports modules from all the new packages.

can you transparently re-export a module from another package? I.e. if
base depends on io, IO provides System.IO, is there a way for base to
tell ghc to pretend that System.IO is in base, but that there is no
conflict if io happens to be un-hidden as well.

It seems that something like this would be required to move modules from
base to something below it without breaking existing code.

Also, if it works that smooth, this would not have to be one big
reorganization, but could be done piece by piece.

 The disadvantage is that, at some point between the first release and
 the release that removes base, each package will have to have its
 dependencies updated.

Why remove base? If it is just a list of dependencies and list of
modules to be re-exported, then keeping it (but advocate that it should
not be used) should not be too much a burden.


(This is assuming that the reorganizing should not change existing
module names. If your plan was to give the modules new names, this
problem does not exist, but I’d rather prefer the less intrusive
approach.)

Greetings,
Joachim



-- 
Joachim nomeata Breitner
Debian Developer
  nome...@debian.org | ICQ# 74513189 | GPG-Keyid: 4743206C
  JID: nome...@joachim-breitner.de | http://people.debian.org/~nomeata



signature.asc
Description: This is a digitally signed message part
___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: base package (Was: GHC 7.8 release?)

2013-02-13 Thread Ian Lynagh
On Wed, Feb 13, 2013 at 06:28:22PM +0100, Joachim Breitner wrote:
 
 Am Mittwoch, den 13.02.2013, 13:58 + schrieb Ian Lynagh:
  If we go this route, then we would probably want to end up without a
  package called 'base', and then to make a new package called 'base'
  that just re-exports modules from all the new packages.
 
 can you transparently re-export a module from another package? I.e. if
 base depends on io, IO provides System.IO, is there a way for base to
 tell ghc to pretend that System.IO is in base, but that there is no
 conflict if io happens to be un-hidden as well.

No. But there are currently no packages that depend on both base and io,
and anyone adding a dependency on io would remove the base dependency at
the same time.

 It seems that something like this would be required to move modules from
 base to something below it without breaking existing code.

I don't see why that's necessary. base would end up containing a load of
modules that look something like

{-# LANGUAGE PackageImports #-}
module System.IO (module X) where

import io System.IO as X

 Also, if it works that smooth, this would not have to be one big
 reorganization, but could be done piece by piece.

It's tricky to do it piece by piece. It's hard to remove individual
sensible pieces in the first place, and it means that you can't
subsequently move modules between packages later without breaking code
depending on the new packages.

  The disadvantage is that, at some point between the first release and
  the release that removes base, each package will have to have its
  dependencies updated.
 
 Why remove base? If it is just a list of dependencies and list of
 modules to be re-exported, then keeping it (but advocate that it should
 not be used) should not be too much a burden.

* Any package using it doesn't benefit from the reduced version bumps,
  so we do actually want packages to move away from it

* Even though base (probably) wouldn't require a lot of work at any one
  time, it would require a little work every now and again, and that
  adds up to a lot of work

* Any time a module is added to one of the new packages, either we'd
  have to spend time adding it to base too, or packages continuing to
  use base wouldn't (easily) be able to use that new module.

 (This is assuming that the reorganizing should not change existing
 module names. If your plan was to give the modules new names, this
 problem does not exist, but I’d rather prefer the less intrusive
 approach.)

The odd module might be renamed, and there will probably be a handful of
definitions that move from one module to another, but for the most part
I was envisaging that we'd end up with the same modules exporting the
same things.


Thanks
Ian


___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: base package (Was: GHC 7.8 release?)

2013-02-13 Thread Joachim Breitner
Hi,

I have started a wikipage with the list of all modules from base, for a
first round of shuffling, grouping and brainstorming:

http://hackage.haskell.org/trac/ghc/wiki/SplitBase


Am Mittwoch, den 13.02.2013, 18:09 + schrieb Ian Lynagh:
 On Wed, Feb 13, 2013 at 06:28:22PM +0100, Joachim Breitner wrote:
  Am Mittwoch, den 13.02.2013, 13:58 + schrieb Ian Lynagh:
   If we go this route, then we would probably want to end up without a
   package called 'base', and then to make a new package called 'base'
   that just re-exports modules from all the new packages.
  
  can you transparently re-export a module from another package? I.e. if
  base depends on io, IO provides System.IO, is there a way for base to
  tell ghc to pretend that System.IO is in base, but that there is no
  conflict if io happens to be un-hidden as well.
 
 No. But there are currently no packages that depend on both base and io,
 and anyone adding a dependency on io would remove the base dependency at
 the same time.

hmm, that reminds me of how haskell98 was handled, and it was slightly
annoying when haskell98 and base eventually were made to conflict, and
we had to patch some unmaintained packages.

Ok, in this case io would be introduced with the intention of being used
exclusive from base. So as long as we make sure that the set of modules
exported by base is always the union of all modules provided by package
that have any module in common with base this would be fine.

(Why this condition? Imagine io adding IO.GreatModule without base also
providing the module. Then a program that still uses base cannot use
IO.GreatModule without fixing the dependencies _now_ (or using package
imports everywhere). It would be nice if library authors allowed to do
the change whenever convenient.)

  Also, if it works that smooth, this would not have to be one big
  reorganization, but could be done piece by piece.
 
 It's tricky to do it piece by piece. It's hard to remove individual
 sensible pieces in the first place, and it means that you can't
 subsequently move modules between packages later without breaking code
 depending on the new packages.

Agreed.

   The disadvantage is that, at some point between the first release and
   the release that removes base, each package will have to have its
   dependencies updated.
  
  Why remove base? If it is just a list of dependencies and list of
  modules to be re-exported, then keeping it (but advocate that it should
  not be used) should not be too much a burden.
 
 * Any package using it doesn't benefit from the reduced version bumps,
   so we do actually want packages to move away from it

We want them to do so. We should not force them (most surely will...)

 * Even though base (probably) wouldn't require a lot of work at any one
   time, it would require a little work every now and again, and that
   adds up to a lot of work

Hopefully it is just updating the set of modules to be exported, sounds
like it could be automated, given a list of packages.

 * Any time a module is added to one of the new packages, either we'd
   have to spend time adding it to base too, or packages continuing to
   use base wouldn't (easily) be able to use that new module.

Hence we should add them; shouldn’t be too much work.


After every larger change to base I am forced to touch old, hardly
maintained code that I do not know, to get the packages working in
Debian again. Hence my plea for staying compatible as long as feasible.

Greetings,
Joachim

-- 
Joachim nomeata Breitner
Debian Developer
  nome...@debian.org | ICQ# 74513189 | GPG-Keyid: 4743206C
  JID: nome...@joachim-breitner.de | http://people.debian.org/~nomeata



signature.asc
Description: This is a digitally signed message part
___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: base package (Was: GHC 7.8 release?)

2013-02-13 Thread Stephen Paul Weber

Somebody signing messages as Joachim Breitner wrote:

I have started a wikipage with the list of all modules from base, for a
first round of shuffling, grouping and brainstorming:

http://hackage.haskell.org/trac/ghc/wiki/SplitBase


Looks like a good start!

Here's an idea: why not use the `haskell2010` package as one of the 
groupings?  It seems like this sort of reorganisation could help solve the 
problem we currently have where one cannot using any of the features of 
`base` along with the `haskell2010` modules.


--
Stephen Paul Weber, @singpolyma
See http://singpolyma.net for how I prefer to be contacted
edition right joseph


signature.asc
Description: Digital signature
___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: base package (Was: GHC 7.8 release?)

2013-02-13 Thread Felipe Almeida Lessa
On Wed, Feb 13, 2013 at 4:32 PM, Joachim Breitner
m...@joachim-breitner.de wrote:
 No. But there are currently no packages that depend on both base and io,
 and anyone adding a dependency on io would remove the base dependency at
 the same time.

 hmm, that reminds me of how haskell98 was handled, and it was slightly
 annoying when haskell98 and base eventually were made to conflict, and
 we had to patch some unmaintained packages.

 Ok, in this case io would be introduced with the intention of being used
 exclusive from base. So as long as we make sure that the set of modules
 exported by base is always the union of all modules provided by package
 that have any module in common with base this would be fine.

 (Why this condition? Imagine io adding IO.GreatModule without base also
 providing the module. Then a program that still uses base cannot use
 IO.GreatModule without fixing the dependencies _now_ (or using package
 imports everywhere). It would be nice if library authors allowed to do
 the change whenever convenient.)

There should also be a condition stating that base should only
re-export modules, and that those re-exports need to have the same
name on another package.  This condition guarantees that the only
thing you need to change is the import list, and even this change
could be (at least partially) automated via a tool take took all your
imports and decided which new packages export them.

-- 
Felipe.

___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: base package (Was: GHC 7.8 release?)

2013-02-13 Thread Ian Lynagh
On Wed, Feb 13, 2013 at 07:32:06PM +0100, Joachim Breitner wrote:
 
 I have started a wikipage with the list of all modules from base, for a
 first round of shuffling, grouping and brainstorming:
 
 http://hackage.haskell.org/trac/ghc/wiki/SplitBase

Great, thanks for taking the lead on this!

The disadvantage is that, at some point between the first release and
the release that removes base, each package will have to have its
dependencies updated.
   
   Why remove base? If it is just a list of dependencies and list of
   modules to be re-exported, then keeping it (but advocate that it should
   not be used) should not be too much a burden.
  
  * Any package using it doesn't benefit from the reduced version bumps,
so we do actually want packages to move away from it
 
 We want them to do so. We should not force them (most surely will...)

A lot of packages won't react until something actually breaks.

(and I suspect many are unmaintained and unused, and won't react even
once it does break).

  * Even though base (probably) wouldn't require a lot of work at any one
time, it would require a little work every now and again, and that
adds up to a lot of work
 
 Hopefully it is just updating the set of modules to be exported, sounds
 like it could be automated, given a list of packages.
 
  * Any time a module is added to one of the new packages, either we'd
have to spend time adding it to base too, or packages continuing to
use base wouldn't (easily) be able to use that new module.
 
 Hence we should add them; shouldn’t be too much work.

I realised that there's actually no reason that the new 'base' package
has to come with GHC (even immediately after the break-up); it can just
be a package on Hackage (and, if desired, in the Haskell Platform).

So it could easily be maintained by someone else, and thus be not much
work for you, and 0 work for me  :-)


Thanks
Ian


___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: GHC 7.8 release?

2013-02-12 Thread Simon Marlow

On 11/02/13 23:03, Johan Tibell wrote:

Hi,

I think reducing breakages is not necessarily, and maybe not even
primarily, an issue of releases. It's more about realizing that the cost
of breaking things (e.g. changing library APIs) has gone up as the
Haskell community and ecosystem has grown. We need to be conscious of
that and carefully consider if making a breaking change (e.g. changing a
function instead of adding a new function) is really necessary. Many
platforms (e.g. Java and Python) rarely, if ever, make breaking changes.
If you look at  compiler projects (e.g. LLVM and GCC) you never see
intentional breakages, even in major releases*. Here's a question I
think we should be asking ourselves: why is the major version of base
bumped with every release? Is it really necessary to make breaking
changes this often?


One reason for the major version bumps is that base is a big 
conglomeration of modules, ranging from those that hardly ever change 
(Prelude) to those that change frequently (GHC.*). For example, the new 
IO manager that is about to get merged in will force a major bump of 
base, because it changes GHC.Event.  The unicode support in the IO 
library was similar: although it only added to the external APIs that 
most people use, it also changed stuff inside GHC.* that we expose for a 
few clients.


The solution to this would be to split up base further, but of course 
doing that is itself a major upheaval.  However, having done that, it 
might be more feasible to have non-API-breaking releases.


Of course we do also make well-intentioned changes to libraries, via the 
library proposal process, and some of these break APIs.  But it wouldn't 
do any harm to batch these up and defer them until the next API-changing 
release.


It would be great to have a list of the changes that had gone into base 
in the last few major releases, any volunteers?


Cheers,
Simon



___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: GHC 7.8 release?

2013-02-12 Thread Bardur Arantsson
On 02/12/2013 09:37 AM, Simon Marlow wrote:
 On 11/02/13 23:03, Johan Tibell wrote:
 Hi,

 Of course we do also make well-intentioned changes to libraries, via the
 library proposal process, and some of these break APIs.  But it wouldn't
 do any harm to batch these up and defer them until the next API-changing
 release.

Indeed. It might even be preferable to just have one huge breakage
every year than having lots of minor breakages which require updating
packages (and dependencies). At least you'll feel you're getting your
money's worth.



___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: GHC 7.8 release?

2013-02-12 Thread wren ng thornton

On 2/12/13 3:37 AM, Simon Marlow wrote:

One reason for the major version bumps is that base is a big
conglomeration of modules, ranging from those that hardly ever change
(Prelude) to those that change frequently (GHC.*). For example, the new
IO manager that is about to get merged in will force a major bump of
base, because it changes GHC.Event.  The unicode support in the IO
library was similar: although it only added to the external APIs that
most people use, it also changed stuff inside GHC.* that we expose for a
few clients.

The solution to this would be to split up base further, but of course
doing that is itself a major upheaval.  However, having done that, it
might be more feasible to have non-API-breaking releases.


While it will lead to much wailing and gnashing of teeth in the short 
term, if it's feasible to break GHC.* off into its own package, then I 
think we should. The vast majority of base seems quite stable or else is 
rolling along at a reasonable pace. And yet, every time a new GHC comes 
out, there's a new wave of fiddling the knobs on cabal files because 
nothing really changed. On the other hand, GHC.* moves rather quickly. 
Nevertheless, GHC.* is nice to have around, so we don't want to just 
hide that churning. The impedance mismatch here suggests that they 
really should be separate packages. I wonder whether GHC.* should be 
moved in with ghc-prim, or whether they should remain separate...


But again, this depends on how feasible it would be to actually split 
the packages apart. Is it feasible?


--
Live well,
~wren

___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: GHC 7.8 release?

2013-02-11 Thread Joachim Breitner
Hi,

one remedy to the problem could be better infrastructure: 
  * More automated test-building of packages on hackage (including
test suites) with various GHC releases, and better display of
the results. This way, library authors would not have to
manually build their library to see if they work with the latest
compiler.
  * Automatic test building of packages with explicit relaxation of
the dependencies, to suggest dependency relaxation that would
work without code changes (from my work at Debian, in most cases
only meta-data changes are required to support newer versions of
dependencies, including core libs).
  * A more liberal attitude to changing other peoples packages’s
metadata to fix the dependencies – either to exclude broken
combinations or to expand the range. Preferably online, similar
to the edit button in github, and checked by the above CI
infrastructure.

This way, it would be easier for libraries to support newer GHC releases
without having to give up supporting older releases.

But I know that development of Hackage is not something that seems to be
happening a lot right now, and as I don’t help, I’m not complaining. So
consider this a side notice and carry on discussing :-)

Greetings,
Joachim

-- 
Joachim nomeata Breitner
Debian Developer
  nome...@debian.org | ICQ# 74513189 | GPG-Keyid: 4743206C
  JID: nome...@joachim-breitner.de | http://people.debian.org/~nomeata



signature.asc
Description: This is a digitally signed message part
___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: GHC 7.8 release?

2013-02-11 Thread Gabriel Dos Reis
On Mon, Feb 11, 2013 at 2:46 AM, Joachim Breitner
m...@joachim-breitner.de wrote:
 Hi,

 one remedy to the problem could be better infrastructure:
   * More automated test-building of packages on hackage (including
 test suites) with various GHC releases, and better display of
 the results. This way, library authors would not have to
 manually build their library to see if they work with the latest
 compiler.
   * Automatic test building of packages with explicit relaxation of
 the dependencies, to suggest dependency relaxation that would
 work without code changes (from my work at Debian, in most cases
 only meta-data changes are required to support newer versions of
 dependencies, including core libs).
   * A more liberal attitude to changing other peoples packages’s
 metadata to fix the dependencies – either to exclude broken
 combinations or to expand the range. Preferably online, similar
 to the edit button in github, and checked by the above CI
 infrastructure.

 This way, it would be easier for libraries to support newer GHC releases
 without having to give up supporting older releases.

 But I know that development of Hackage is not something that seems to be
 happening a lot right now, and as I don’t help, I’m not complaining. So
 consider this a side notice and carry on discussing :-)

 Greetings,
 Joachim

The issue is largely social problem that I suspect technological
solutions won't solve.  Yes, it would be nice to have better
infrastructure.  However, at the end of the day, when the automated
tests say an API or ABI set has been broken, a non-technical
decision needs to be taken (should it be part of the next release, or
should it be delayed or removed?)  And you will be back to square one.

Part of the problem is what happens to successful
programming languages: you get users, and users -- believe it or not --
like stability (few people like fiddling with function names and
arguments in an otherwise working program or library) and, yes they
will take new improvements as long as their working programs continue
working.  Researchers on the other hand need room to experiment with
ideas; they need to get their implementations in the wild to get a sense
of what scales, what doesn't.  These facts are in tension; you can't
solve it by more automated testing.

If you want GHC to compete with GCC or Clang, then you know what
to do: stop experimenting with the language.   So far, most of the work
on GHC has been done by researchers who are not paid to
do development work -- unless academia changes its standards...

-- Gaby

___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: GHC 7.8 release?

2013-02-11 Thread Ian Lynagh
On Mon, Feb 11, 2013 at 10:09:56AM +0800, John Lato wrote:
 
 What I would like to see are more patch-level bugfix releases.  I suspect
 the reason we don't have more is that making a release is a lot of work.
  So, Ian, what needs to happen to make more frequent patch releases
 feasible?

Well,
* actually making a release takes time
* I assume that you also want more patches merged from the HEAD, rather
  than just putting intermediate releases out, in which case merging
  those patches also takes time. And most of the small fixes already get
  merged, so you'd be looking at merging bigger changes which are more
  likely to require resolving conflicts, and so take even more time

so basically to make more releases we'd need to spend less time doing
other stuff (or for someone else to look after the branch).

Bigger changes, and especially changes that need altering for the stable
branch, are also more likely to introduce bugs.


Thanks
Ian


___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: GHC 7.8 release?

2013-02-11 Thread Gabriel Dos Reis
On Sun, Feb 10, 2013 at 3:30 PM, Simon Peyton-Jones
simo...@microsoft.com wrote:
 |   You may ask what use is a GHC release that doesn't cause a wave of 
 updates?
 |  And hence that doesn't work with at least some libraries.  Well, it's a 
 very useful
 |  forcing function to get new features actually out and tested.
 |
 |  But the way you test new features is to write programs that use them,
 |  and programs depend on libraries.

 That is of course ideal, but the ideal carries costs.  A half way house is a 
 release whose library support will be patchy.  Not such good testing, but 
 much lower costs.  But still (I think) a lot more testing than compile HEAD 
 gives us.

 Simon

Fitting:

 http://xkcd.com/1172/

(sorry, I couldn't resist)

-- Gaby

___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


RE: GHC 7.8 release?

2013-02-11 Thread Simon Peyton-Jones
(a) There are packages which tend to track GHC's latest version instead of the 
HP (yesod used to do this, which was a source of much pain).

(b) There are linux distributions which always track the latest everything, 
often in a rolling-release fashion (notably Arch).  They are actively hostile 
to the Platform, and a source of even greater pain.  Many package authors 
update because Arch users demand it and openly insult anyone who points them to 
the Platform or any policy which suggests that anything other then the 
absolutely latest version is acceptable.

These must be social questions (what I was earlier calling “signposting”) 
rather than technical ones.  For example, you say that (b) is not subject to 
any variety of reason, and yet no linux distribution tracks HEAD, does it?  
They don’t openly insult anyone who points to a release just because HEAD has 
new cool stuff!  No, they track things we call “releases”.  Very well, maybe we 
should call them “previews” instead, and only dignify it as a “release” when, 
and only when a preview is picked by HP as worthy of incorporation in the next 
HP.

Or something.   I’m just looking for a way to reconcile

·Release early, release often

·Stability for the Haskell Platform
It seems to me that such a reconciliation is within reach, and is actually very 
close to what we do, if we only signpost what is what far more vigorously and 
clearly than we do now.  But maybe I’m wrong.

Simon

From: Brandon Allbery [mailto:allber...@gmail.com]
Sent: 11 February 2013 01:15
To: Simon Peyton-Jones
Cc: Simon Marlow; Mark Lentczner; Manuel M T Chakravarty; kosti...@gmail.com; 
glasgow-haskell-users; ghc-d...@haskell.org; Edsko de Vries
Subject: Re: GHC 7.8 release?

On Sun, Feb 10, 2013 at 4:02 PM, Simon Peyton-Jones 
simo...@microsoft.commailto:simo...@microsoft.com wrote:
What causes the wave of package updates?  Just because GHC 7.8 (say) comes 
out, no package author need lift a finger.  The Haskell Platform sets the pace 
for package updates. When the Haskell Platform comes out, now THAT is indeed a 
trigger for a wave of updates.  Authors of packages in HP are forced to act; 
authors of other packages want their packages to work with the next HP.

(a) There are packages which tend to track GHC's latest version instead of the 
HP (yesod used to do this, which was a source of much pain).

(b) There are linux distributions which always track the latest everything, 
often in a rolling-release fashion (notably Arch).  They are actively hostile 
to the Platform, and a source of even greater pain.  Many package authors 
update because Arch users demand it and openly insult anyone who points them to 
the Platform or any policy which suggests that anything other then the 
absolutely latest version is acceptable.

You *might* be able to control expectations with respect to (a); (b) is not 
subject to any variety of reason.  It will produce as much pressure as it has 
users, plus multiply that pressure by the number of package authors who are 
also users.

--
brandon s allbery kf8nh   sine nomine associates
allber...@gmail.commailto:allber...@gmail.com 
 ballb...@sinenomine.netmailto:ballb...@sinenomine.net
unix, openafs, kerberos, infrastructure, xmonadhttp://sinenomine.net
___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: GHC 7.8 release?

2013-02-11 Thread Joachim Breitner
Hi,

Am Montag, den 11.02.2013, 22:31 + schrieb Simon Peyton-Jones:
 No, they track things we call “releases”.  Very well, maybe we should
 call them “previews” instead, and only dignify it as a “release” when,
 and only when a preview is picked by HP as worthy of incorporation in
 the next HP. 

wording does indeed help a lot. I remember that 7.2 was dubbed a
technology review with the effect that, at least Debian, never included
it in the main repository. It was packaged and provided in experimental,
for easy access to those who want to play with it, but not with
additional library packages. From what I can remember, there was no push
towards supporting 7.2 properly, and I believe this would have been
different if 7.2 was just “the next regular GHC release”.

Greetings,
Joachim

-- 
Joachim nomeata Breitner
Debian Developer
  nome...@debian.org | ICQ# 74513189 | GPG-Keyid: 4743206C
  JID: nome...@joachim-breitner.de | http://people.debian.org/~nomeata



signature.asc
Description: This is a digitally signed message part
___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: GHC 7.8 release?

2013-02-11 Thread Carter Schonwald
Agreed.

having relatively bug free technology preview releases, which (perhaps
ideally) have new functionality included in a way that keeps the breakage
overhead lowish, on a regular basis, is ideal.

one thought on the api hacking front:

the main concern we're hitting is that we want to not pin internal GHC
apis, yet we want to make the breakage rate on libraries people may want to
use that might depend on say GHC.Prim or GHC.TH to be minimal.

Is a possible solution that on preview releases we have the changed bits of
API for a module M to be exported in a module M.Experimental?

eg, new ghc primops  in a tech preview release maybe are exported by
GHC.Prim.Experimental
(or something of this sort?)

just throwing out one possible point in the design space.

cheers
-Carter



On Mon, Feb 11, 2013 at 5:31 PM, Simon Peyton-Jones
simo...@microsoft.comwrote:

  (a) There are packages which tend to track GHC's latest version instead
 of the HP (yesod used to do this, which was a source of much pain).

   

 (b) There are linux distributions which always track the latest
 everything, often in a rolling-release fashion (notably Arch).  They are
 actively hostile to the Platform, and a source of even greater pain.  Many
 package authors update because Arch users demand it and openly insult
 anyone who points them to the Platform or any policy which suggests that
 anything other then the absolutely latest version is acceptable.

 ** **

 These must be *social* questions (what I was earlier calling
 “signposting”) rather than technical ones.  For example, you say that (b)
 is not subject to any variety of reason, and yet no linux distribution
 tracks HEAD, does it?  They don’t openly insult anyone who points to a
 release just because HEAD has new cool stuff!  No, they track things we
 call “releases”.  Very well, maybe we should call them “previews” instead,
 and only dignify it as a “release” when, and only when a preview is picked
 by HP as worthy of incorporation in the next HP. 

 ** **

 Or something.   I’m just looking for a way to reconcile

 **·**Release early, release often

 **·**Stability for the Haskell Platform

 It seems to me that such a reconciliation is within reach, and is actually
 very close to what we do, if we only signpost what is what far more
 vigorously and clearly than we do now.  But maybe I’m wrong.

 ** **

 Simon

 ** **

 *From:* Brandon Allbery [mailto:allber...@gmail.com]
 *Sent:* 11 February 2013 01:15
 *To:* Simon Peyton-Jones
 *Cc:* Simon Marlow; Mark Lentczner; Manuel M T Chakravarty;
 kosti...@gmail.com; glasgow-haskell-users; ghc-d...@haskell.org; Edsko de
 Vries

 *Subject:* Re: GHC 7.8 release?

  ** **

 On Sun, Feb 10, 2013 at 4:02 PM, Simon Peyton-Jones simo...@microsoft.com
 wrote:

 What causes the wave of package updates?  Just because GHC 7.8 (say)
 comes out, no package author need lift a finger.  The Haskell Platform sets
 the pace for package updates. When the Haskell Platform comes out, now THAT
 is indeed a trigger for a wave of updates.  Authors of packages in HP are
 forced to act; authors of other packages want their packages to work with
 the next HP.

  ** **

 (a) There are packages which tend to track GHC's latest version instead of
 the HP (yesod used to do this, which was a source of much pain).

 

 (b) There are linux distributions which always track the latest
 everything, often in a rolling-release fashion (notably Arch).  They are
 actively hostile to the Platform, and a source of even greater pain.  Many
 package authors update because Arch users demand it and openly insult
 anyone who points them to the Platform or any policy which suggests that
 anything other then the absolutely latest version is acceptable.

 ** **

 You *might* be able to control expectations with respect to (a); (b) is
 not subject to any variety of reason.  It will produce as much pressure as
 it has users, plus multiply that pressure by the number of package authors
 who are also users.

 ** **

 -- 

 brandon s allbery kf8nh   sine nomine
 associates

 allber...@gmail.com
 ballb...@sinenomine.net

 unix, openafs, kerberos, infrastructure, xmonad
 http://sinenomine.net

 ___
 ghc-devs mailing list
 ghc-d...@haskell.org
 http://www.haskell.org/mailman/listinfo/ghc-devs


___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: GHC 7.8 release?

2013-02-11 Thread Johan Tibell
Hi,

I think reducing breakages is not necessarily, and maybe not even
primarily, an issue of releases. It's more about realizing that the cost of
breaking things (e.g. changing library APIs) has gone up as the Haskell
community and ecosystem has grown. We need to be conscious of that and
carefully consider if making a breaking change (e.g. changing a function
instead of adding a new function) is really necessary. Many platforms (e.g.
Java and Python) rarely, if ever, make breaking changes. If you look at
 compiler projects (e.g. LLVM and GCC) you never see intentional breakages,
even in major releases*. Here's a question I think we should be asking
ourselves: why is the major version of base bumped with every release? Is
it really necessary to make breaking changes this often? How about aiming
for having GHC 7.10 be a release where we only add new stuff and improve
old stuff?

-- Johan

* A major GCC release usually signifies that some large change to the code
generator was made.
___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: GHC 7.8 release?

2013-02-11 Thread kudah
On Mon, 11 Feb 2013 15:03:25 -0800 Johan Tibell
johan.tib...@gmail.com wrote:

 Many platforms (e.g. Java and Python) rarely, if ever,
 make breaking changes. If you look at compiler projects (e.g. LLVM
 and GCC) you never see intentional breakages, even in major
 releases*.

Those are very mature platforms, hundreds of millions of people
use them indirectly each day, it's hard to compare GHC to them.
If anything, Haskell is very young for its age, and should rather move
faster. Bad mistakes, accidents and partial or inefficient
implementations proliferate in standard libraries for decades,
tampering GHC's growth as a serious production language.

On Mon, 11 Feb 2013 22:31:53 + Simon Peyton-Jones
simo...@microsoft.com wrote:

 no linux distribution tracks HEAD, does it?

Gentoo packages HEAD just fine.

___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: GHC 7.8 release?

2013-02-11 Thread Gabriel Dos Reis
On Mon, Feb 11, 2013 at 5:03 PM, Johan Tibell johan.tib...@gmail.com wrote:
 Hi,

 I think reducing breakages is not necessarily, and maybe not even primarily,
 an issue of releases. It's more about realizing that the cost of breaking
 things (e.g. changing library APIs) has gone up as the Haskell community and
 ecosystem has grown. We need to be conscious of that and carefully consider
 if making a breaking change (e.g. changing a function instead of adding a
 new function) is really necessary. Many platforms (e.g. Java and Python)
 rarely, if ever, make breaking changes. If you look at  compiler projects
 (e.g. LLVM and GCC) you never see intentional breakages, even in major
 releases*. Here's a question I think we should be asking ourselves: why is
 the major version of base bumped with every release? Is it really necessary
 to make breaking changes this often? How about aiming for having GHC 7.10 be
 a release where we only add new stuff and improve old stuff?

 -- Johan

 * A major GCC release usually signifies that some large change to the code
 generator was made.

I have some experience with GCC releases -- having served as a GCC
Release Manager for several years. In fact, the release scheme we currently
have has gone through several iterations -- usually after many existential
crisis.  Yes, we don't break GCC ABI lightly, mostly because GCC isn't
a research compiler and most research works are done on forgotten branches
that nobody cares about anymore.  Implementing new standards (e.g. moving
from C++03 to C++11 that has several mandated API and ABI breakage) is a
royal pain that isn't worth replicating in GHC -- at least if you want
GHC to remain a research compiler.

Concerning your question about release number, I would venture that there
is a certain marketing aspect to it.  I can tell you that we, the
GCC community,
are very poor at that -- otherwise, we would have been at version 26
or something :-)

-- Gaby

___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: GHC 7.8 release?

2013-02-11 Thread Johan Tibell
On Mon, Feb 11, 2013 at 4:34 PM, Gabriel Dos Reis 
g...@integrable-solutions.net wrote:

 I have some experience with GCC releases -- having served as a GCC
 Release Manager for several years. In fact, the release scheme we currently
 have has gone through several iterations -- usually after many
 existential
 crisis.  Yes, we don't break GCC ABI lightly, mostly because GCC isn't
 a research compiler and most research works are done on forgotten
 branches
 that nobody cares about anymore.  Implementing new standards (e.g. moving
 from C++03 to C++11 that has several mandated API and ABI breakage) is a
 royal pain that isn't worth replicating in GHC -- at least if you want
 GHC to remain a research compiler.

 Concerning your question about release number, I would venture that there
 is a certain marketing aspect to it.  I can tell you that we, the
 GCC community,
 are very poor at that -- otherwise, we would have been at version 26
 or something :-)


Thanks for sharing! My perspective is of course as a user. I don't think
I've ever run into a case where the compiler broken a previous work e.g.
C++ program. On the other hand I have to make a release of most of the
libraries I maintain with every GHC release (to bump cabal version
constraints to accept the new base version, if nothing else).

-- Johan
___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: GHC 7.8 release?

2013-02-11 Thread Gabriel Dos Reis
On Mon, Feb 11, 2013 at 6:37 PM, Johan Tibell johan.tib...@gmail.com wrote:
 On Mon, Feb 11, 2013 at 4:34 PM, Gabriel Dos Reis
 g...@integrable-solutions.net wrote:

 I have some experience with GCC releases -- having served as a GCC
 Release Manager for several years. In fact, the release scheme we
 currently
 have has gone through several iterations -- usually after many
 existential
 crisis.  Yes, we don't break GCC ABI lightly, mostly because GCC isn't
 a research compiler and most research works are done on forgotten
 branches
 that nobody cares about anymore.  Implementing new standards (e.g. moving
 from C++03 to C++11 that has several mandated API and ABI breakage) is a
 royal pain that isn't worth replicating in GHC -- at least if you want
 GHC to remain a research compiler.

 Concerning your question about release number, I would venture that there
 is a certain marketing aspect to it.  I can tell you that we, the
 GCC community,
 are very poor at that -- otherwise, we would have been at version 26
 or something :-)


 Thanks for sharing! My perspective is of course as a user. I don't think
 I've ever run into a case where the compiler broken a previous work e.g. C++
 program. On the other hand I have to make a release of most of the libraries
 I maintain with every GHC release (to bump cabal version constraints to
 accept the new base version, if nothing else).

 -- Johan


I understand.

Concerning GCC, it is true that the shear size of the user base and the
audience of the compiler (industrial strength) calls for a very conservative
approach to ABI or API breaking.  On the hand, that means that there are
certain welcomed, beneficial changes that we cannot effect.  For
example, because
libstdc++ has been an early adopter of a reference counted-based implementation
of std::string, we could not switch to more efficient and more
multithread-friendly
implementation.  That was has been contributed for years but has been
sequestered
in some branches and namespaces integrated with the rest of the
library.  That is
a shame, but one that is unavoidable given the expectation of the GCC audience.

It is not clear to me that GHC is ready for that kind of constraints.

We are still describing the C++11 implementation as experimental
because we fear
that doing otherwise might commit ourselves to an ABI and API that we
may need to
break later -- possibly because of undetected bugs or because we have found
implementations we like better.  Of course, that causes some distress
in the community
because people would like to say GCC implements C++11.

Finally, we do break API, you have just been lucky :-)

 http://gcc.gnu.org/onlinedocs/libstdc++/manual/api.html

But, we have also developed very elaborate scheme for symbol
versioning and namespace associations to help users digest API breakages
without tears.  Symbol versioning is a very messy business.

I am still of the opinion that the current issue with GHC and HP is
social, and it
can be resolved through communication and coordination between the two
communities for the great good of the Haskell community.

-- Gaby

___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: GHC 7.8 release?

2013-02-11 Thread Jacques Carette

Let me strongly support Gaby's many points.

Simon has it right: we need a way to support 'users' in a stable way, 
without adding enormous inertia to the development of GHC.  I has lived 
through the slow death of a system from being rapidly innovative to 
having 'innovations' which exist only because a marketer says that the 
raft of boring, incremental improvements in each new release are 
innovative  on some What's New blurb.


Haskell is extremely useful, and GHC's flavour of Haskell is quite 
exciting because of the continual evolution of the language.  Please 
don't kill the excitement!


The Platform does seem to be an ideal mechanism to provide stability for 
users who value stability over bleeding-edge.  But for that to be 
successful, there are to be strong community commitment [especially from 
library maintainers] to tracking that evolution. If the social 
mechanisms are not strong enough to fully support the Platform, I would 
say that that is the most important thing to fix.


Jacques

___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: GHC 7.8 release?

2013-02-11 Thread Brandon Allbery
On Mon, Feb 11, 2013 at 7:37 PM, Johan Tibell johan.tib...@gmail.comwrote:

 Thanks for sharing! My perspective is of course as a user. I don't think
 I've ever run into a case where the compiler broken a previous work e.g.
 C++ program. On the other hand I have to make a release of most of the
 libraries I maintain with every GHC release (to bump cabal version
 constraints to accept the new base version, if nothing else).


gcc has had its moments occasionally, although usually major gcc issues
aren't called by gcc itself but by packagers (gcc 2.96, anyone?) or fugly
politics (egcs).

-- 
brandon s allbery kf8nh   sine nomine associates
allber...@gmail.com  ballb...@sinenomine.net
unix, openafs, kerberos, infrastructure, xmonadhttp://sinenomine.net
___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: GHC 7.8 release?

2013-02-11 Thread Manuel M T Chakravarty
Simon Peyton-Jones simo...@microsoft.com:
 |   You may ask what use is a GHC release that doesn't cause a wave of 
 updates?
 |  And hence that doesn't work with at least some libraries.  Well, it's a 
 very useful
 |  forcing function to get new features actually out and tested.
 |  
 |  But the way you test new features is to write programs that use them,
 |  and programs depend on libraries.
 
 That is of course ideal, but the ideal carries costs.  A half way house is a 
 release whose library support will be patchy.  Not such good testing, but 
 much lower costs.  But still (I think) a lot more testing than compile HEAD 
 gives us.

I don't think so. In my experience, library support is not patchy, but 
virtually non-existent as some of the very widely used libraries (like Text) 
break, and everything else depends on them in one way or another.

If we don't make sure that the commonly used libraries work with these 
preview releases, I don't think those releases are worth the effort.

I understand that we can't really guarantee API backwards compatibility for the 
GHC API (but that's ok as few packages depend on that). Critical are all the 
libraries bundled with GHC. Adding to them is fine, but no API definitions 
should change or be removed.

Manuel


___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: GHC 7.8 release?

2013-02-10 Thread Manuel M T Chakravarty
Simon Peyton-Jones simo...@microsoft.com:
 If there's a path to having a release strategy as Manuel suggests, and having 
 an intermediate release  with the new vector primops, type extensions and 
 such goodness, then I'm all for it.  A lot of these bits are things ill start 
 using almost immediately in production / real software, esp if I'm not 
 needing to patch every stable library beyond maybe relaxing versioning 
 constraints.
 
 Let me suggest once more a possible path, along the lines you suggest
 ·For people who value stability: use the Haskell Platform.  Ignore 
 GHC releases.
 ·For people who want as many features as possible: use GHC releases.
 ·For people who want to live on the bleeding edge: build HEAD from 
 source
  
 The Haskell Platform decides which GHC release to use, advertises that to 
 package authors who do whatever updates are needed.  HP may perfectly 
 sensibly skip an entire release entirely.
  
 In short, I think we already have the situation that you desire.  Perhaps we 
 just need to market it better? 
  
 Or am I mistaken?

There is one kink: for GHC releases to be *useful* substitutes for the HP for 
people who want medium stability, they must not change (expect maybe add to) 
the APIs in GHC versions that do not coincide with HP releases. 

Why? If they change APIs, many of the packages on Hackage will not build with 
these intermediate GHC releases, which makes them useless for anything, but 
testing GHC.

Otherwise, I am perfectly happy with your suggestion. However, this is not the 
status quo. All (major) GHC releases do break critical packages on Hackage.

Manuel


___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: GHC 7.8 release?

2013-02-10 Thread Manuel M T Chakravarty
Simon Marlow marlo...@gmail.com:
 I agree too - I think it would be great to have non-API-breaking releases 
 with new features.  So let's think about how that could work.
 
 Some features add APIs, e.g. SIMD adds new primops.  So we have to define 
 non-API-breaking as a minor version bump in the PVP sense; that is, you can 
 add to an API but not change it.
 
 As a straw man, let's suppose we want to do annual API releases in September, 
 with intermediate non-API releases in February.  Both would be classed as 
 major, and bump the GHC major version, but the Feb releases would only be 
 allowed to bump minor versions of packages. (except perhaps the version of 
 the GHC package, which is impossible to keep stable if we change the 
 compiler).
 
 So how to manage the repos.  We could have three branches, but that doesn't 
 seem practical.  Probably the best way forward is to develop new features on 
 separate branches and merge them into master at the appropriate time - i.e. 
 API-breaking feature branches could only be merged in after the Feb release.
 
 Thoughts?

That sounds sensible to me. 

Related to this, then, is the management of branches, which, I think, we can 
improve in two ways:

(1) Make all library packages into submodules.
(2) Fork-instead-of-branch and use GitHub pull requests.

Re (1): submodules make tracking of synchronised branches across multiple repos 
simpler. Yes, they also have their pitfalls, but given that we are already 
using submodules extensively, we need to deal with those pitfalls anyway. So, 
why not reap the benefits, too?

Re (2): we should encourage contributors to fork the GHC repos on GitHub and 
work in those. That makes it easy for everybody to build forks (which will be 
longer-lived under the above policy) and creating a fork doesn't require any 
special privileges in GHC repos. Finally, we can use GitHub pull requests to 
track contributions that are pending integration. This is IMHO also much nicer 
than attaching patches at Trac tickets.

Manuel

 On 09/02/13 02:04, Manuel M T Chakravarty wrote:
 I completely agree with Johan. The problem is to change core APIs too
 fast. Adding, say, SIMD instructions or having a new type extension
 (that needs to be explicitly activated with a -X option) shouldn't break
 packages.
 
 I'm all for restricting major API changes to once a year, but why can't
 we have multiple updates to the code generator per year or generally
 release that don't affect a large number of packages on Hackage?
 
 Manuel
 
 Johan Tibell johan.tib...@gmail.com mailto:johan.tib...@gmail.com:
 On Fri, Feb 8, 2013 at 6:28 AM, Simon Marlow marlo...@gmail.com
 mailto:marlo...@gmail.com wrote:
 
For a while we've been doing one major release per year, and 1-2
minor releases.  We have a big sign at the top of the download
page directing people to the platform.  We arrived here after
various discussions in the past - there were always a group of
people that wanted stability, and a roughly equally vocal group of
people who wanted the latest bits.  So we settled on one
API-breaking change per year as a compromise.
 
Since then, the number of packages has ballooned, and there's a
new factor in the equation: the cost to the ecosystem of an
API-breaking release of GHC.  All that updating of packages
collectively costs the community a lot of time, for little
benefit.  Lots of package updates contributes to Cabal Hell.  The
package updates need to happen before the platform picks up the
GHC release, so that when it goes into the platform, the packages
are ready.
 
So I think, if anything, there's pressure to have fewer major
releases of GHC.  However, we're doing the opposite: 7.0 to 7.2
was 10 months, 7.2 to 7.4 was 6 months, 7.4 to 7.6 was 7 months.
We're getting too efficient at making releases!
 
 
 I think we want to decouple GHC major releases (as in, we did lots
 of work) from API breaking releases. For example, GCC has lots of
 major (or big) releases, but rarely, if ever, break programs.
 
 I'd be delighted to see a release once in a while that made my
 programs faster/smaller/buggy without breaking any of them.
 
 -- Johan
 
 
 -- 
 You received this message because you are subscribed to the Google Groups 
 parallel-haskell group.
 To unsubscribe from this group and stop receiving emails from it, send an 
 email to parallel-haskell+unsubscr...@googlegroups.com.
 For more options, visit https://groups.google.com/groups/opt_out.
 
 


___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: GHC 7.8 release?

2013-02-10 Thread Doaitse Swierstra
Although it will definitely solve all problems, it would help if hackage would 
automatically send out mails to maintainers of packages which do not compile 
with specific ghc versions.

I have ran a couple of time into the situation where new GHC releases did nor 
compile my packages anymore, and I only found out by this being pointed out to 
me. I do not go over the hackage pages of my packages on a daily basis.

The changes I had to make were usually minor, and fixing the problems was easy 
(except for the case where I had to a add a complicated local type, when let 
bindings were no longer polymorphic),

 Doaitse


On Feb 10, 2013, at 10:50 , Manuel M T Chakravarty c...@cse.unsw.edu.au
 wrote:

 Simon Peyton-Jones simo...@microsoft.com:
 If there's a path to having a release strategy as Manuel suggests, and 
 having an intermediate release  with the new vector primops, type extensions 
 and such goodness, then I'm all for it.  A lot of these bits are things ill 
 start using almost immediately in production / real software, esp if I'm not 
 needing to patch every stable library beyond maybe relaxing versioning 
 constraints.
 
 Let me suggest once more a possible path, along the lines you suggest
 ·For people who value stability: use the Haskell Platform.  Ignore 
 GHC releases.
 ·For people who want as many features as possible: use GHC releases.
 ·For people who want to live on the bleeding edge: build HEAD from 
 source
  
 The Haskell Platform decides which GHC release to use, advertises that to 
 package authors who do whatever updates are needed.  HP may perfectly 
 sensibly skip an entire release entirely.
  
 In short, I think we already have the situation that you desire.  Perhaps we 
 just need to market it better? 
  
 Or am I mistaken?
 
 There is one kink: for GHC releases to be *useful* substitutes for the HP for 
 people who want medium stability, they must not change (expect maybe add to) 
 the APIs in GHC versions that do not coincide with HP releases. 
 
 Why? If they change APIs, many of the packages on Hackage will not build with 
 these intermediate GHC releases, which makes them useless for anything, but 
 testing GHC.
 
 Otherwise, I am perfectly happy with your suggestion. However, this is not 
 the status quo. All (major) GHC releases do break critical packages on 
 Hackage.
 
 Manuel
 
 
 
 -- 
 You received this message because you are subscribed to the Google Groups 
 parallel-haskell group.
 To unsubscribe from this group and stop receiving emails from it, send an 
 email to parallel-haskell+unsubscr...@googlegroups.com.
 For more options, visit https://groups.google.com/groups/opt_out.
  
  

___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: GHC 7.8 release?

2013-02-10 Thread Roman Cheplyaka
* Manuel M T Chakravarty c...@cse.unsw.edu.au [2013-02-10 21:17:07+1100]
 Re (2): we should encourage contributors to fork the GHC repos on
 GitHub and work in those. That makes it easy for everybody to build
 forks (which will be longer-lived under the above policy) and creating
 a fork doesn't require any special privileges in GHC repos. Finally,
 we can use GitHub pull requests to track contributions that are
 pending integration. This is IMHO also much nicer than attaching
 patches at Trac tickets.

FYI, it is also possible to create pull requests from one branch to
another. So, for people who already have push-access to the main repo
it is not strictly necessary to fork in order to submit a pull request.

Roman

___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


RE: GHC 7.8 release?

2013-02-10 Thread Simon Peyton-Jones
We seem to be circling ever closer to consensus here! Yay!

Indeed!  Good :-)

However, I’m not getting the bit about API changing vs non-API changing.

Firstly I don’t know which APIs are intended.  The GHC API is essentially GHC 
itself, so it changes daily.  Maybe you mean the base package?  Or what?

I suspect you mean that a “non-API-changing” release absolutely guarantees to 
compile any package that compiled with the previous version.  If so, that is a 
very strong constraint indeed. We do observe it for patch releases for GHC (e g 
7.6.2 should compile anything that 7.6.1 compiles).  But I think it would be 
difficult to guarantee for anything beyond a patch release.  Every single 
commit (and the commit rate is many/day) would have to be evaluated against 
this criterion.  And if it failed the criterion, it would have to go on a 
API-breaking HEAD. In effect we’d have two HEADs.  I can’t see us sustaining 
this.  And I don’t yet really see why it’s necessary.  If you don’t want an 
API-breaking change, stick with the patch releases.

So, we have a channel for non-API-breaking changes already: the patch releases. 
 So that means we already have all three channels!

·Haskell Platform

·Patch-level releases

·New releases

if that’s so, all we need is better signposting.   And I’m all for that!

Have I got this right?

Simon

From: Mark Lentczner [mailto:mark.lentcz...@gmail.com]
Sent: 09 February 2013 17:48
To: Simon Marlow; Manuel M T Chakravarty; Johan Tibell; Simon Peyton-Jones; 
Mark Lentczner; andreas.voel...@gmail.com; Carter Schonwald; 
kosti...@gmail.com; Edsko de Vries; ghc-d...@haskell.org; glasgow-haskell-users
Subject: Re: GHC 7.8 release?

We seem to be circling ever closer to consensus here! Yay!

I think the distinction of non-API breaking and API breaking release is very 
important. Refining SPJ's trifecta:

Haskell Platform comes out twice a year. It is based on very stable version of 
GHC, and intention is that people can just assume things on Hackage work with 
it. These are named for the year and sequence of the release: 2013.2, 2013.2.1, 
2013.4,...

Non-API breaking releases can come out as often as desired. However, the 
version that is current as of mid-Feb. and mid-Aug. will be the ones considered 
for HP inclusion. By non-API breaking we mean the whole API surface including 
all the libraries bundled with GHC, as well as the operation of ghc, cabal, 
ghc-pkg, etc. Additions of features that must be explicitly enabled are okay. 
Additions of new APIs into existing modules are discouraged: Much code often 
imports base modules wholesale, and name clashes could easily result. These 
should never bump the major revision number: 7.4.1, 7.4.2...

API breaking releases happen by being released into a separate channel when 
ready for library owners to look at them. This channel should probably go 
through several stages: Ready for core package owners to work with, then HP 
package owners, then all package owners. I'd imagine this is a several month 
process. At the end of which, the release can go into the main channel. Such a 
merge shouldn't happen more than once a year... I think even once every two 
years is fine (!) To avoid confusion, I'd suggest that while in the separate 
channel, these release be named with odd number: 7.9, 7.11,..., and when moved 
to the main channel renamed to even: 7.10, 7.12...

This idea of three channels needs to be much more clearly communicated. The 
warning on the download page is a failure: Googling ghc takes you to the home 
page of GHC which immediately trumpets the Lastest News of a release of GHC 
7.6.2. Once a user has read that and decided to download, then STOP! box is 
a) going to be skipped as they scan for the download link, and b) if read and 
followed, causes the WTF? Why is HP so back rev? So we need to change the 
front page so that the three channels are clearly communicated and targeted at 
the right users.

- Mark

(BTW: The first few links on the GHC web site are out of date: The second nav 
link is to a survey that is 7 years old. The License page is 8 years out of 
date. The FAQ is over a year old.)

On Sat, Feb 9, 2013 at 8:24 AM, Ian Lynagh 
i...@well-typed.commailto:i...@well-typed.com wrote:
On Sat, Feb 09, 2013 at 12:06:12PM +, Simon Marlow wrote:

 As a straw man, let's suppose we want to do annual API releases in
 September, with intermediate non-API releases in February.
That's a non-API release 5 months after the API release.

6.10.2 was 5   months after 6.10.1 (.3 was 1 month later, .4 a further 2)
6.12.2 was 4   months after 6.12.1 (.3 was 2 months later)
 7.0.2 was 3.5 months after  7.0.1 (.3 was 1 month later, .4 a further 3)
 7.2.2 was 3   months after  7.2.1
 7.4.2 was 4   months after  7.4.1
 7.6.2 was 4.5 months after  7.6.2

so if we do non-API releases, then perhaps it would make sense to stop
doing minor releases (unless a release turns out to just be broken).


Thanks
Ian

RE: GHC 7.8 release?

2013-02-10 Thread Simon Peyton-Jones
, even a point release (7.6.2 vs. 7.6.1) of ghc tends to be moderately violent 
with respect to the Platform.  Ideally, such a point release should not be 
difficult to slot in because it should be compatible modulo bug fixes, but with 
ghc's release strategy nobody has any confidence in it being that simple.

Well our clear intention for point releases (7.6.1 to 7.6.1) is that they 
should break nothing. I am concerned that in your experience point releases are 
“moderately violent”. We go to some pains to make sure that we don’t break 
anything.If we don’t succeed on this point-release policy, please do tell 
us when the release candidate comes out.  If we don’t know we are causing pain, 
we can’t stop inflicting it :-)

(Major releases are another matter.  There, things are likely to break.)

Simon

From: Brandon Allbery [mailto:allber...@gmail.com]
Sent: 09 February 2013 13:41
To: Simon Peyton-Jones
Cc: Carter Schonwald; Manuel Chakravarty; parallel-haskell; Mark Lentczner; GHC 
Users List; ghc-d...@haskell.org; Edsko de Vries
Subject: Re: GHC 7.8 release?

On Sat, Feb 9, 2013 at 6:27 AM, Simon Peyton-Jones 
simo...@microsoft.commailto:simo...@microsoft.com wrote:
In short, I think we already have the situation that you desire.  Perhaps we 
just need to market it better?

Or am I mistaken?

Except the current question is about how ghc releases interact with the 
Platform; this thread was set off by a question about getting 7.6.2 into the 
next Platform

And the main issue there is that ghc releases tend to break things and need a 
lot of testing in general to make it into the Platform; while this would be 
expected anyway, even a point release (7.6.2 vs. 7.6.1) of ghc tends to be 
moderately violent with respect to the Platform.  Ideally, such a point release 
should not be difficult to slot in because it should be compatible modulo bug 
fixes, but with ghc's release strategy nobody has any confidence in it being 
that simple.

--
brandon s allbery kf8nh   sine nomine associates
allber...@gmail.commailto:allber...@gmail.com 
 ballb...@sinenomine.netmailto:ballb...@sinenomine.net
unix, openafs, kerberos, infrastructure, xmonadhttp://sinenomine.net
___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: GHC 7.8 release?

2013-02-10 Thread Simon Marlow

On 10/02/13 15:36, Simon Peyton-Jones wrote:

We seem to be circling ever closer to consensus here! Yay!

Indeed!  Good :-)

However, I’m not getting the bit about API changing vs non-API changing.

Firstly I don’t know which APIs are intended.  The GHC API is
essentially GHC itself, so it changes daily.  Maybe you mean the base
package?  Or what?

I suspect you mean that a “non-API-changing” release absolutely
guarantees to compile any package that compiled with the previous
version.  If so, that is a very strong constraint indeed. We do observe
it for patch releases for GHC (e g 7.6.2 should compile anything that
7.6.1 compiles).  But I think it would be difficult to guarantee for
anything beyond a patch release.  Every single commit (and the commit
rate is many/day) would have to be evaluated against this criterion.
And if it failed the criterion, it would have to go on a API-breaking
HEAD. In effect we’d have two HEADs.  I can’t see us sustaining this.
And I don’t yet really see why it’s necessary.  If you don’t want an
API-breaking change, stick with the patch releases.

So, we have a channel for non-API-breaking changes already: the patch
releases.  So that means we already have all three channels!


Mark is asking for major GHC releases every year at the most, preferably 
less frequently.  That means major GHC releases in the sense that we do 
them now, where libraries change, and a wave of package updates are 
required to get everything working.


Johan, Manuel and Carter are saying that they want releases that add 
features but don't break code, i.e. a non-API-breaking release, as a way 
to get the new bits into the hands of the punters sooner.  This is 
something that we don't do right now, and it would entail a change to 
our workflow and release schedule.


It doesn't mean no API changes at all - we would have to allow APIs to 
be extended, because many feature additions come with new primops, or 
new supporting code in the ghc-prim or base packages.  The package 
version policy states precisely what it means to extend an API 
(http://www.haskell.org/haskellwiki/Package_versioning_policy) and most 
third-party packages will still work so long as we only bump the minor 
versions of the packages that come with GHC.


The GHC package itself would have to be exempt, because it contains 
every module in GHC, and hence would be impossible to keep stable if we 
are modifying the compiler to add new features.


Of course it's not practical to maintain an extra branch of GHC for 
non-API-breaking development - two branches is already plenty.  So there 
would need to be an API-freeze for a while between the major release and 
the non-API-breaking release, during which time people developing API 
changes would need to work on branches.


Is it workable?  I'm not sure, but I think it's worth a try.  I wouldn't 
want to see this replace the patchlevel bugfix releases that we already 
do, and as Ian points out, there isn't a lot of room in the release 
schedule for more releases, unless we stretch out the timescales, doing 
major releases less frequently.


Cheers,
Simon



·Haskell Platform

·Patch-level releases

·New releases


if that’s so, all we need is better signposting.   And I’m all for that!

Have I got this right?


Simon

*From:*Mark Lentczner [mailto:mark.lentcz...@gmail.com]
*Sent:* 09 February 2013 17:48
*To:* Simon Marlow; Manuel M T Chakravarty; Johan Tibell; Simon
Peyton-Jones; Mark Lentczner; andreas.voel...@gmail.com; Carter
Schonwald; kosti...@gmail.com; Edsko de Vries; ghc-d...@haskell.org;
glasgow-haskell-users
*Subject:* Re: GHC 7.8 release?

We seem to be circling ever closer to consensus here! Yay!

I think the distinction of non-API breaking and API breaking release is
very important. Refining SPJ's trifecta:

*Haskell Platform* comes out twice a year. It is based on very
stable version of GHC, and intention is that people can just assume
things on Hackage work with it. These are named for the year and
sequence of the release: 2013.2, 2013.2.1, 2013.4,...

*Non-API breaking releases* can come out as often as desired.
However, the version that is current as of mid-Feb. and mid-Aug.
will be the ones considered for HP inclusion. By non-API breaking we
mean the whole API surface including all the libraries bundled with
GHC, as well as the operation of ghc, cabal, ghc-pkg, etc. Additions
of features that must be explicitly enabled are okay. Additions of
new APIs into existing modules are discouraged: Much code often
imports base modules wholesale, and name clashes could easily
result. These should never bump the major revision number: 7.4.1,
7.4.2...

*API breaking releases* happen by being released into a separate
channel when ready for library owners to look at them. This channel
should probably go through several stages: Ready for core package
owners to work with, then HP package owners, then all

RE: GHC 7.8 release?

2013-02-10 Thread Simon Peyton-Jones
What I am still missing is this:

|  Mark is asking for major GHC releases every year at the most, preferably
|  less frequently.  That means major GHC releases in the sense that we do
|  them now, where libraries change, and a wave of package updates are
|  required to get everything working.

What causes the wave of package updates?  Just because GHC 7.8 (say) comes 
out, no package author need lift a finger.  The Haskell Platform sets the pace 
for package updates. When the Haskell Platform comes out, now THAT is indeed a 
trigger for a wave of updates.  Authors of packages in HP are forced to act; 
authors of other packages want their packages to work with the next HP.  

But there is no reason why package authors should respond to GHC releases, 
provided we signpost it accurately.

You may ask what use is a GHC release that doesn't cause a wave of updates?  
And hence that doesn't work with at least some libraries.  Well, it's a very 
useful forcing function to get new features actually out and tested.   Of 
course we could just not do that, and say build from source, but a release 
brings a welcome discipline.  But under this story, release or not-release 
would be a Little Deal, not a Big Deal.  The benefits are modest; the costs are 
modest.

In short, I'm continuing to propose that we stick to the current story, but 
signpost it better. If it ain't broke, don't fix it --- or at least fix only 
the bits that are broken, which is the signposting.

Simon

|  
|  Johan, Manuel and Carter are saying that they want releases that add
|  features but don't break code, i.e. a non-API-breaking release, as a way
|  to get the new bits into the hands of the punters sooner.  This is
|  something that we don't do right now, and it would entail a change to
|  our workflow and release schedule.
|  
|  It doesn't mean no API changes at all - we would have to allow APIs to
|  be extended, because many feature additions come with new primops, or
|  new supporting code in the ghc-prim or base packages.  The package
|  version policy states precisely what it means to extend an API
|  (http://www.haskell.org/haskellwiki/Package_versioning_policy) and most
|  third-party packages will still work so long as we only bump the minor
|  versions of the packages that come with GHC.
|  
|  The GHC package itself would have to be exempt, because it contains
|  every module in GHC, and hence would be impossible to keep stable if we
|  are modifying the compiler to add new features.
|  
|  Of course it's not practical to maintain an extra branch of GHC for
|  non-API-breaking development - two branches is already plenty.  So there
|  would need to be an API-freeze for a while between the major release and
|  the non-API-breaking release, during which time people developing API
|  changes would need to work on branches.
|  
|  Is it workable?  I'm not sure, but I think it's worth a try.  I wouldn't
|  want to see this replace the patchlevel bugfix releases that we already
|  do, and as Ian points out, there isn't a lot of room in the release
|  schedule for more releases, unless we stretch out the timescales, doing
|  major releases less frequently.
|  
|  Cheers,
|   Simon
|  
|  
|   ·Haskell Platform
|  
|   ·Patch-level releases
|  
|   ·New releases
|  
|  
|   if that’s so, all we need is better signposting.   And I’m all for that!
|  
|   Have I got this right?
|  
|  
|   Simon
|  
|   *From:*Mark Lentczner [mailto:mark.lentcz...@gmail.com]
|   *Sent:* 09 February 2013 17:48
|   *To:* Simon Marlow; Manuel M T Chakravarty; Johan Tibell; Simon
|   Peyton-Jones; Mark Lentczner; andreas.voel...@gmail.com; Carter
|   Schonwald; kosti...@gmail.com; Edsko de Vries; ghc-d...@haskell.org;
|   glasgow-haskell-users
|   *Subject:* Re: GHC 7.8 release?
|  
|   We seem to be circling ever closer to consensus here! Yay!
|  
|   I think the distinction of non-API breaking and API breaking release is
|   very important. Refining SPJ's trifecta:
|  
|   *Haskell Platform* comes out twice a year. It is based on very
|   stable version of GHC, and intention is that people can just assume
|   things on Hackage work with it. These are named for the year and
|   sequence of the release: 2013.2, 2013.2.1, 2013.4,...
|  
|   *Non-API breaking releases* can come out as often as desired.
|   However, the version that is current as of mid-Feb. and mid-Aug.
|   will be the ones considered for HP inclusion. By non-API breaking we
|   mean the whole API surface including all the libraries bundled with
|   GHC, as well as the operation of ghc, cabal, ghc-pkg, etc. Additions
|   of features that must be explicitly enabled are okay. Additions of
|   new APIs into existing modules are discouraged: Much code often
|   imports base modules wholesale, and name clashes could easily
|   result. These should never bump the major revision number: 7.4.1,
|   7.4.2...
|  
|   *API breaking

Re: GHC 7.8 release?

2013-02-10 Thread Ian Lynagh
On Sun, Feb 10, 2013 at 09:02:18PM +, Simon Peyton-Jones wrote:
 
 You may ask what use is a GHC release that doesn't cause a wave of updates?  
 And hence that doesn't work with at least some libraries.  Well, it's a very 
 useful forcing function to get new features actually out and tested.

But the way you test new features is to write programs that use them,
and programs depend on libraries.


Thanks
Ian


___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: GHC 7.8 release?

2013-02-10 Thread David Terei
On 10 February 2013 13:02, Simon Peyton-Jones simo...@microsoft.com wrote:
 What I am still missing is this:

 |  Mark is asking for major GHC releases every year at the most, preferably
 |  less frequently.  That means major GHC releases in the sense that we do
 |  them now, where libraries change, and a wave of package updates are
 |  required to get everything working.

 What causes the wave of package updates?  Just because GHC 7.8 (say) comes 
 out, no package author need lift a finger.  The Haskell Platform sets the 
 pace for package updates. When the Haskell Platform comes out, now THAT is 
 indeed a trigger for a wave of updates.  Authors of packages in HP are forced 
 to act; authors of other packages want their packages to work with the next 
 HP.

 But there is no reason why package authors should respond to GHC releases, 
 provided we signpost it accurately.

 You may ask what use is a GHC release that doesn't cause a wave of updates?  
 And hence that doesn't work with at least some libraries.  Well, it's a very 
 useful forcing function to get new features actually out and tested.   Of 
 course we could just not do that, and say build from source, but a release 
 brings a welcome discipline.  But under this story, release or not-release 
 would be a Little Deal, not a Big Deal.  The benefits are modest; the costs 
 are modest.

 In short, I'm continuing to propose that we stick to the current story, but 
 signpost it better. If it ain't broke, don't fix it --- or at least fix only 
 the bits that are broken, which is the signposting.

My understanding of the proposed changes (which I'm also supportive
of) is to separate GHC improvements that break existing libraries (or
perhaps even simply add language level features), and those that are
improvements under-the-hood (e.g., bug fixes, performance
improvements).

So rather than 7.8 be a huge single release containing new type level
features, SIMD, the new code-generator. There would be two releases,
one containing just say the new-code-generator, improvements to the IO
manager, potentially also DPH... another release would containing new
language level improvements.

So then HP can benefit from improvements to the existing language and
API without having to also pull in breaking (or just extending)
changes...

It's the issue of a research compiler Vs. and industrial compiler and
managing that more explicitly in the release model.

Cheers,
David


 Simon

 |
 |  Johan, Manuel and Carter are saying that they want releases that add
 |  features but don't break code, i.e. a non-API-breaking release, as a way
 |  to get the new bits into the hands of the punters sooner.  This is
 |  something that we don't do right now, and it would entail a change to
 |  our workflow and release schedule.
 |
 |  It doesn't mean no API changes at all - we would have to allow APIs to
 |  be extended, because many feature additions come with new primops, or
 |  new supporting code in the ghc-prim or base packages.  The package
 |  version policy states precisely what it means to extend an API
 |  (http://www.haskell.org/haskellwiki/Package_versioning_policy) and most
 |  third-party packages will still work so long as we only bump the minor
 |  versions of the packages that come with GHC.
 |
 |  The GHC package itself would have to be exempt, because it contains
 |  every module in GHC, and hence would be impossible to keep stable if we
 |  are modifying the compiler to add new features.
 |
 |  Of course it's not practical to maintain an extra branch of GHC for
 |  non-API-breaking development - two branches is already plenty.  So there
 |  would need to be an API-freeze for a while between the major release and
 |  the non-API-breaking release, during which time people developing API
 |  changes would need to work on branches.
 |
 |  Is it workable?  I'm not sure, but I think it's worth a try.  I wouldn't
 |  want to see this replace the patchlevel bugfix releases that we already
 |  do, and as Ian points out, there isn't a lot of room in the release
 |  schedule for more releases, unless we stretch out the timescales, doing
 |  major releases less frequently.
 |
 |  Cheers,
 |   Simon
 |
 |
 |   ·Haskell Platform
 |  
 |   ·Patch-level releases
 |  
 |   ·New releases
 |  
 |  
 |   if that’s so, all we need is better signposting.   And I’m all for that!
 |  
 |   Have I got this right?
 |  
 |  
 |   Simon
 |  
 |   *From:*Mark Lentczner [mailto:mark.lentcz...@gmail.com]
 |   *Sent:* 09 February 2013 17:48
 |   *To:* Simon Marlow; Manuel M T Chakravarty; Johan Tibell; Simon
 |   Peyton-Jones; Mark Lentczner; andreas.voel...@gmail.com; Carter
 |   Schonwald; kosti...@gmail.com; Edsko de Vries; ghc-d...@haskell.org;
 |   glasgow-haskell-users
 |   *Subject:* Re: GHC 7.8 release?
 |  
 |   We seem to be circling ever closer to consensus here! Yay!
 |  
 |   I think the distinction of non-API breaking and API breaking release is
 |   very important. Refining SPJ's

RE: GHC 7.8 release?

2013-02-10 Thread Simon Peyton-Jones
|   You may ask what use is a GHC release that doesn't cause a wave of updates?
|  And hence that doesn't work with at least some libraries.  Well, it's a very 
useful
|  forcing function to get new features actually out and tested.
|  
|  But the way you test new features is to write programs that use them,
|  and programs depend on libraries.

That is of course ideal, but the ideal carries costs.  A half way house is a 
release whose library support will be patchy.  Not such good testing, but much 
lower costs.  But still (I think) a lot more testing than compile HEAD gives 
us.

Simon

___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: GHC 7.8 release?

2013-02-10 Thread Ian Lynagh
On Sun, Feb 10, 2013 at 09:30:23PM +, Simon Peyton-Jones wrote:
 |   You may ask what use is a GHC release that doesn't cause a wave of 
 updates?
 |  And hence that doesn't work with at least some libraries.  Well, it's a 
 very useful
 |  forcing function to get new features actually out and tested.
 |  
 |  But the way you test new features is to write programs that use them,
 |  and programs depend on libraries.
 
 That is of course ideal, but the ideal carries costs.  A half way house is a 
 release whose library support will be patchy.

But that's not what happens. GHC 7.8 is released. Someone installs it in
order to try to use TypeHoles when developing their program. But their
program depends on text, so they send Bryan a mail saying that text
doesn't build with 7.8. And so the wave of updates begins.


Thanks
Ian


___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: GHC 7.8 release?

2013-02-10 Thread Ganesh Sittampalam
On 10/02/2013 21:43, Ian Lynagh wrote:
 On Sun, Feb 10, 2013 at 09:30:23PM +, Simon Peyton-Jones wrote:
 |   You may ask what use is a GHC release that doesn't cause a wave of 
 updates?
 |  And hence that doesn't work with at least some libraries.  Well, it's a 
 very useful
 |  forcing function to get new features actually out and tested.
 |  
 |  But the way you test new features is to write programs that use them,
 |  and programs depend on libraries.

 That is of course ideal, but the ideal carries costs.  A half way house is a 
 release whose library support will be patchy.
 
 But that's not what happens. GHC 7.8 is released. Someone installs it in
 order to try to use TypeHoles when developing their program. But their
 program depends on text, so they send Bryan a mail saying that text
 doesn't build with 7.8. And so the wave of updates begins.

As the maintainer of a low-level package (HTTP), I certainly see this
kind of pressure starting even before a GHC release - e.g.
https://github.com/haskell/HTTP/issues/36

As one of the maintainers of a high-level tool (darcs) that aims to
always build against the current HP, I generate this kind of pressure
myself: once GHC is released, I expect it to be in the HP within 3-6
months, so I need to get started quickly. I can't even check darcs
itself until the dependencies work.

I don't think there are any easy answers :-/

Ganesh


___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: GHC 7.8 release?

2013-02-10 Thread Carter Schonwald
Yes, exactly this.

A release where the versions of base, and all other baked in libraries are
only minor version bumps and where breaking changes are localized to
relatively experimental language features / extensions and GHC specific
APIs would ideal.

Eg: I'm OK having to patch ghc-mod so it works with a new intermediate GHC
release.  (Esp since it uses GHC internal apis)

The new scheduler improvements, the recent doh work  , the great SIMD work
/ code generator improvments, the type level nats, ordered type families,
the overloaded list syntax,

All of these extensions and associated API augmentations should not break
stable libraries, at least on minor version bumps, cause
1) maybe experimental new APIs can be included in minor releases as
separate explicitly experimental modules (this gives a way of including new
functionality in a minor release)
2) generally type checking / inference on stable code that doesn't enable
new features stays the same.

I'm probably overlooking some pieces or. Details, and I'm largely restating
what Johan and Manuel have communicated.

-Carter
On Feb 10, 2013 4:43 PM, Ian Lynagh i...@well-typed.com wrote:

 On Sun, Feb 10, 2013 at 09:30:23PM +, Simon Peyton-Jones wrote:
  |   You may ask what use is a GHC release that doesn't cause a wave of
 updates?
  |  And hence that doesn't work with at least some libraries.  Well, it's
 a very useful
  |  forcing function to get new features actually out and tested.
  |
  |  But the way you test new features is to write programs that use them,
  |  and programs depend on libraries.
 
  That is of course ideal, but the ideal carries costs.  A half way house
 is a release whose library support will be patchy.

 But that's not what happens. GHC 7.8 is released. Someone installs it in
 order to try to use TypeHoles when developing their program. But their
 program depends on text, so they send Bryan a mail saying that text
 doesn't build with 7.8. And so the wave of updates begins.


 Thanks
 Ian


 ___
 ghc-devs mailing list
 ghc-d...@haskell.org
 http://www.haskell.org/mailman/listinfo/ghc-devs

___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: GHC 7.8 release?

2013-02-10 Thread Gabriel Dos Reis
On Sun, Feb 10, 2013 at 3:16 PM, Ian Lynagh i...@well-typed.com wrote:
 On Sun, Feb 10, 2013 at 09:02:18PM +, Simon Peyton-Jones wrote:

 You may ask what use is a GHC release that doesn't cause a wave of updates?  
 And hence that doesn't work with at least some libraries.  Well, it's a very 
 useful forcing function to get new features actually out and tested.

 But the way you test new features is to write programs that use them,
 and programs depend on libraries.


 Thanks
 Ian

Releasing GHC early and often (possibly with API breakage) isn't
really the problem.  The real problem is how to coordinate with
library authors (e.g. Haskell Platform), etc.

I suspect GHC should continue to offer a platform for research
and experiments. That is much harder if you curtail the ability to
release GHC early and often.

-- Gaby

___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: GHC 7.8 release?

2013-02-10 Thread Carter Schonwald
Well said. Having a more aggressive release cycle is another interesting
perspective.
On Feb 10, 2013 6:21 PM, Gabriel Dos Reis g...@integrable-solutions.net
wrote:

 On Sun, Feb 10, 2013 at 3:16 PM, Ian Lynagh i...@well-typed.com wrote:
  On Sun, Feb 10, 2013 at 09:02:18PM +, Simon Peyton-Jones wrote:
 
  You may ask what use is a GHC release that doesn't cause a wave of
 updates?  And hence that doesn't work with at least some libraries.  Well,
 it's a very useful forcing function to get new features actually out and
 tested.
 
  But the way you test new features is to write programs that use them,
  and programs depend on libraries.
 
 
  Thanks
  Ian

 Releasing GHC early and often (possibly with API breakage) isn't
 really the problem.  The real problem is how to coordinate with
 library authors (e.g. Haskell Platform), etc.

 I suspect GHC should continue to offer a platform for research
 and experiments. That is much harder if you curtail the ability to
 release GHC early and often.

 -- Gaby

 ___
 ghc-devs mailing list
 ghc-d...@haskell.org
 http://www.haskell.org/mailman/listinfo/ghc-devs

___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: GHC 7.8 release?

2013-02-10 Thread Brandon Allbery
On Sun, Feb 10, 2013 at 4:02 PM, Simon Peyton-Jones
simo...@microsoft.comwrote:

 What causes the wave of package updates?  Just because GHC 7.8 (say)
 comes out, no package author need lift a finger.  The Haskell Platform sets
 the pace for package updates. When the Haskell Platform comes out, now THAT
 is indeed a trigger for a wave of updates.  Authors of packages in HP are
 forced to act; authors of other packages want their packages to work with
 the next HP.


(a) There are packages which tend to track GHC's latest version instead of
the HP (yesod used to do this, which was a source of much pain).

(b) There are linux distributions which always track the latest everything,
often in a rolling-release fashion (notably Arch).  They are actively
hostile to the Platform, and a source of even greater pain.  Many package
authors update because Arch users demand it and openly insult anyone who
points them to the Platform or any policy which suggests that anything
other then the absolutely latest version is acceptable.

You *might* be able to control expectations with respect to (a); (b) is not
subject to any variety of reason.  It will produce as much pressure as it
has users, plus multiply that pressure by the number of package authors who
are also users.

-- 
brandon s allbery kf8nh   sine nomine associates
allber...@gmail.com  ballb...@sinenomine.net
unix, openafs, kerberos, infrastructure, xmonadhttp://sinenomine.net
___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: GHC 7.8 release?

2013-02-10 Thread John Lato
While I'm notionally in favor of decoupling API-breaking changes from
non-API breaking changes, there are two major difficulties: GHC.Prim and
Template Haskell. Should a non-API-breaking change mean that GHC.Prim is
immutable?  If so, this greatly restricts GHC's development.  If not, it
means that a large chunk of hackage will become unbuildable due to deps on
vector and primitive.  With Template Haskell the situation is largely
similar, although the deps are different.

What I would like to see are more patch-level bugfix releases.  I suspect
the reason we don't have more is that making a release is a lot of work.
 So, Ian, what needs to happen to make more frequent patch releases
feasible?



On Mon, Feb 11, 2013 at 7:42 AM, Carter Schonwald 
carter.schonw...@gmail.com wrote:

 Well said. Having a more aggressive release cycle is another interesting
 perspective.
 On Feb 10, 2013 6:21 PM, Gabriel Dos Reis g...@integrable-solutions.net
 wrote:

 On Sun, Feb 10, 2013 at 3:16 PM, Ian Lynagh i...@well-typed.com wrote:
  On Sun, Feb 10, 2013 at 09:02:18PM +, Simon Peyton-Jones wrote:
 
  You may ask what use is a GHC release that doesn't cause a wave of
 updates?  And hence that doesn't work with at least some libraries.  Well,
 it's a very useful forcing function to get new features actually out and
 tested.
 
  But the way you test new features is to write programs that use them,
  and programs depend on libraries.
 
 
  Thanks
  Ian

 Releasing GHC early and often (possibly with API breakage) isn't
 really the problem.  The real problem is how to coordinate with
 library authors (e.g. Haskell Platform), etc.

 I suspect GHC should continue to offer a platform for research
 and experiments. That is much harder if you curtail the ability to
 release GHC early and often.

 -- Gaby

 ___
 ghc-devs mailing list
 ghc-d...@haskell.org
 http://www.haskell.org/mailman/listinfo/ghc-devs


 ___
 ghc-devs mailing list
 ghc-d...@haskell.org
 http://www.haskell.org/mailman/listinfo/ghc-devs


___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


RE: GHC 7.8 release?

2013-02-09 Thread Simon Peyton-Jones
If there's a path to having a release strategy as Manuel suggests, and having 
an intermediate release  with the new vector primops, type extensions and such 
goodness, then I'm all for it.  A lot of these bits are things ill start using 
almost immediately in production / real software, esp if I'm not needing to 
patch every stable library beyond maybe relaxing versioning constraints.
Let me suggest once more a possible path, along the lines you suggest

·For people who value stability: use the Haskell Platform.  Ignore GHC 
releases.

·For people who want as many features as possible: use GHC releases.

·For people who want to live on the bleeding edge: build HEAD from 
source


The Haskell Platform decides which GHC release to use, advertises that to 
package authors who do whatever updates are needed.  HP may perfectly sensibly 
skip an entire release entirely.

In short, I think we already have the situation that you desire.  Perhaps we 
just need to market it better?

Or am I mistaken?

Simon

From: Carter Schonwald [mailto:carter.schonw...@gmail.com]
Sent: 09 February 2013 02:45
To: Manuel Chakravarty
Cc: GHC Users List; ghc-d...@haskell.org; Andreas Voellmy; Simon Peyton-Jones; 
Edsko de Vries; Mark Lentczner; Johan Tibell; parallel-haskell
Subject: Re: GHC 7.8 release?


+10^100 to Johan and Manuel. Breaking changes on pieces that aren't 
experimental is the main compatibility / new version pain,

and I say this as someone who's spent time before and around the 7.4 and 7.6 
releases testing out lots of major packages and sending a few patches to 
various maintainers.

If there's a path to having a release strategy as Manuel suggests, and having 
an intermediate release  with the new vector primops, type extensions and such 
goodness, then I'm all for it.  A lot of these bits are things ill start using 
almost immediately in production / real software, esp if I'm not needing to 
patch every stable library beyond maybe relaxing versioning constraints.

-Carter
On Feb 8, 2013 9:05 PM, Manuel M T Chakravarty 
c...@cse.unsw.edu.aumailto:c...@cse.unsw.edu.au wrote:
I completely agree with Johan. The problem is to change core APIs too fast. 
Adding, say, SIMD instructions or having a new type extension (that needs to be 
explicitly activated with a -X option) shouldn't break packages.

I'm all for restricting major API changes to once a year, but why can't we have 
multiple updates to the code generator per year or generally release that don't 
affect a large number of packages on Hackage?

Manuel

Johan Tibell johan.tib...@gmail.commailto:johan.tib...@gmail.com:
On Fri, Feb 8, 2013 at 6:28 AM, Simon Marlow 
marlo...@gmail.commailto:marlo...@gmail.com wrote:
For a while we've been doing one major release per year, and 1-2 minor 
releases.  We have a big sign at the top of the download page directing people 
to the platform.  We arrived here after various discussions in the past - there 
were always a group of people that wanted stability, and a roughly equally 
vocal group of people who wanted the latest bits.  So we settled on one 
API-breaking change per year as a compromise.

Since then, the number of packages has ballooned, and there's a new factor in 
the equation: the cost to the ecosystem of an API-breaking release of GHC.  All 
that updating of packages collectively costs the community a lot of time, for 
little benefit.  Lots of package updates contributes to Cabal Hell.  The 
package updates need to happen before the platform picks up the GHC release, so 
that when it goes into the platform, the packages are ready.

So I think, if anything, there's pressure to have fewer major releases of GHC.  
However, we're doing the opposite: 7.0 to 7.2 was 10 months, 7.2 to 7.4 was 6 
months, 7.4 to 7.6 was 7 months.  We're getting too efficient at making 
releases!

I think we want to decouple GHC major releases (as in, we did lots of work) 
from API breaking releases. For example, GCC has lots of major (or big) 
releases, but rarely, if ever, break programs.

I'd be delighted to see a release once in a while that made my programs 
faster/smaller/buggy without breaking any of them.

-- Johan

___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: GHC 7.8 release?

2013-02-09 Thread Simon Marlow
I agree too - I think it would be great to have non-API-breaking 
releases with new features.  So let's think about how that could work.


Some features add APIs, e.g. SIMD adds new primops.  So we have to 
define non-API-breaking as a minor version bump in the PVP sense; that 
is, you can add to an API but not change it.


As a straw man, let's suppose we want to do annual API releases in 
September, with intermediate non-API releases in February.  Both would 
be classed as major, and bump the GHC major version, but the Feb 
releases would only be allowed to bump minor versions of packages. 
(except perhaps the version of the GHC package, which is impossible to 
keep stable if we change the compiler).


So how to manage the repos.  We could have three branches, but that 
doesn't seem practical.  Probably the best way forward is to develop new 
features on separate branches and merge them into master at the 
appropriate time - i.e. API-breaking feature branches could only be 
merged in after the Feb release.


Thoughts?

Cheers,
Simon

On 09/02/13 02:04, Manuel M T Chakravarty wrote:

I completely agree with Johan. The problem is to change core APIs too
fast. Adding, say, SIMD instructions or having a new type extension
(that needs to be explicitly activated with a -X option) shouldn't break
packages.

I'm all for restricting major API changes to once a year, but why can't
we have multiple updates to the code generator per year or generally
release that don't affect a large number of packages on Hackage?

Manuel

Johan Tibell johan.tib...@gmail.com mailto:johan.tib...@gmail.com:

On Fri, Feb 8, 2013 at 6:28 AM, Simon Marlow marlo...@gmail.com
mailto:marlo...@gmail.com wrote:

For a while we've been doing one major release per year, and 1-2
minor releases.  We have a big sign at the top of the download
page directing people to the platform.  We arrived here after
various discussions in the past - there were always a group of
people that wanted stability, and a roughly equally vocal group of
people who wanted the latest bits.  So we settled on one
API-breaking change per year as a compromise.

Since then, the number of packages has ballooned, and there's a
new factor in the equation: the cost to the ecosystem of an
API-breaking release of GHC.  All that updating of packages
collectively costs the community a lot of time, for little
benefit.  Lots of package updates contributes to Cabal Hell.  The
package updates need to happen before the platform picks up the
GHC release, so that when it goes into the platform, the packages
are ready.

So I think, if anything, there's pressure to have fewer major
releases of GHC.  However, we're doing the opposite: 7.0 to 7.2
was 10 months, 7.2 to 7.4 was 6 months, 7.4 to 7.6 was 7 months.
We're getting too efficient at making releases!


I think we want to decouple GHC major releases (as in, we did lots
of work) from API breaking releases. For example, GCC has lots of
major (or big) releases, but rarely, if ever, break programs.

I'd be delighted to see a release once in a while that made my
programs faster/smaller/buggy without breaking any of them.

-- Johan





___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: GHC 7.8 release?

2013-02-09 Thread Brandon Allbery
On Sat, Feb 9, 2013 at 6:27 AM, Simon Peyton-Jones simo...@microsoft.comwrote:

 In short, I think we already have the situation that you desire.  Perhaps
 we just need to market it better?  

 ** **

 Or am I mistaken?


Except the current question is about how ghc releases interact with the
Platform; this thread was set off by a question about getting 7.6.2 into
the next Platform

And the main issue there is that ghc releases tend to break things and need
a lot of testing in general to make it into the Platform; while this would
be expected anyway, even a point release (7.6.2 vs. 7.6.1) of ghc tends to
be moderately violent with respect to the Platform.  Ideally, such a point
release should not be difficult to slot in because it should be compatible
modulo bug fixes, but with ghc's release strategy nobody has any confidence
in it being that simple.

-- 
brandon s allbery kf8nh   sine nomine associates
allber...@gmail.com  ballb...@sinenomine.net
unix, openafs, kerberos, infrastructure, xmonadhttp://sinenomine.net
___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: GHC 7.8 release?

2013-02-09 Thread Ian Lynagh
On Sat, Feb 09, 2013 at 12:06:12PM +, Simon Marlow wrote:
 
 As a straw man, let's suppose we want to do annual API releases in
 September, with intermediate non-API releases in February.

That's a non-API release 5 months after the API release.

6.10.2 was 5   months after 6.10.1 (.3 was 1 month later, .4 a further 2)
6.12.2 was 4   months after 6.12.1 (.3 was 2 months later)
 7.0.2 was 3.5 months after  7.0.1 (.3 was 1 month later, .4 a further 3)
 7.2.2 was 3   months after  7.2.1
 7.4.2 was 4   months after  7.4.1
 7.6.2 was 4.5 months after  7.6.2

so if we do non-API releases, then perhaps it would make sense to stop
doing minor releases (unless a release turns out to just be broken).


Thanks
Ian


___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: GHC 7.8 release?

2013-02-08 Thread Tim Watson
On 8 Feb 2013, at 05:18, Carter Schonwald wrote:
 johan, how do you and Bryan have those jenkin's nodes setup?
 
 (I'm planning  to setup something similar  for my own use, and seeing how 
 thats setup would be awesome)
 

Likewise, I'm in the process of setting up Elastic Bamboo on EC2 for Cloud 
Haskell and would be very interested in seeing how you've dealt with multiple 
versions of GHC.

Cheers,
Tim
___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: GHC 7.8 release?

2013-02-08 Thread Bryan O'Sullivan
On Fri, Feb 8, 2013 at 1:29 AM, Tim Watson watson.timo...@gmail.com wrote:

 Likewise, I'm in the process of setting up Elastic Bamboo on EC2 for Cloud
 Haskell and would be very interested in seeing how you've dealt with
 multiple versions of GHC.


It's easy to parameterize builds in Jenkins based on different values of an
environment variable, so Johan and I just have different versions of GHC
installed side by side, and then set $GHC_VERSION to 7.6 7.4 7.2 7.0 6.12
(or whatever), put /usr/local/$GHC_VERSION/bin at the front of $PATH, and
the right thing happens.
___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: GHC 7.8 release?

2013-02-08 Thread Tim Watson
Hi Bryan,

On 8 Feb 2013, at 11:53, Bryan O'Sullivan wrote:

 On Fri, Feb 8, 2013 at 1:29 AM, Tim Watson watson.timo...@gmail.com wrote:
 Likewise, I'm in the process of setting up Elastic Bamboo on EC2 for Cloud 
 Haskell and would be very interested in seeing how you've dealt with multiple 
 versions of GHC.
 
 It's easy to parameterize builds in Jenkins based on different values of an 
 environment variable, so Johan and I just have different versions of GHC 
 installed side by side, and then set $GHC_VERSION to 7.6 7.4 7.2 7.0 6.12 
 (or whatever), put /usr/local/$GHC_VERSION/bin at the front of $PATH, and the 
 right thing happens.

Ok cool, that's pretty much what I had in mind but I wasn't sure about 
installing dependencies and using cabal-install. In my development environment 
I quickly found that installing multiple GHCs and haskell-platform releases got 
a bit messy, so I was wondering if there was a recognised 'best way' to do 
this. I'll probably replicate what I've done with other things (such as Erlang) 
and manage it with ${PREFIX}/ghc/versions/... and symlink 
${PREFIX}/ghc/current/... to avoid the path switching. Hopefully telling 
cabal-install to use ${PREFIX}/ghc/current/lib will 'just work' when installing 
dependencies as I switch between ghc versions.

Cheers!
Tim
___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: GHC 7.8 release?

2013-02-08 Thread Ian Lynagh
On Thu, Feb 07, 2013 at 09:42:39AM -0800, Mark Lentczner wrote:
 
 I wish GHC would radically change it's release process. Things like 7.8
 shouldn't be release as 7.8. That sounds major and stable. The web site
 will have 7.8 at the top. The warning to use the platform will fall flat
 because it makes the platform look out of date. Really, 7.8 should be in
 a different release channel, not on the front page. It should bake in that
 channel for six months - where only the third group of people will use it,
 until it is getting close to merge into main, at which point the fourth
 group will start to use it, so that the day it hits main, all the libraries
 just work. Ideally, the first two groups of people will not pay the
 slightest attention to it until it is further baked.

It's a catch-22: We don't want people to use a new release until all the
bugs have been found and fixed, and all the libraries have been updated.
But if people don't use it, then the bugs won't be found and the
libraries won't be updated.

I think you're saying that you'd like the uptake of new GHC versions to
be slower, which would mean fewer people would be using 7.6 now, but in
the last few days I've seen the Debian guys have had to send mails to
maintainers telling them that their packages don't work with 7.6:
http://lists.debian.org/debian-haskell/2013/02/threads.html
despite 7.6 having been out for 5 months and about to enter the HP.

Perhaps more automatic Hackage building, with a group of people looking
at the logs of failing packages and acting appropriately, is the way
forward. Some cases (such as installation failed due to dependencies
not being installable) you'd want to be handled automatically.


Thanks
Ian


___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: GHC 7.8 release?

2013-02-08 Thread Michael Snoyman
On Fri, Feb 8, 2013 at 3:55 PM, Ian Lynagh i...@well-typed.com wrote:

 On Thu, Feb 07, 2013 at 09:42:39AM -0800, Mark Lentczner wrote:
 
  I wish GHC would radically change it's release process. Things like 7.8
  shouldn't be release as 7.8. That sounds major and stable. The web site
  will have 7.8 at the top. The warning to use the platform will fall flat
  because it makes the platform look out of date. Really, 7.8 should be
 in
  a different release channel, not on the front page. It should bake in
 that
  channel for six months - where only the third group of people will use
 it,
  until it is getting close to merge into main, at which point the fourth
  group will start to use it, so that the day it hits main, all the
 libraries
  just work. Ideally, the first two groups of people will not pay the
  slightest attention to it until it is further baked.

 It's a catch-22: We don't want people to use a new release until all the
 bugs have been found and fixed, and all the libraries have been updated.
 But if people don't use it, then the bugs won't be found and the
 libraries won't be updated.

 I think you're saying that you'd like the uptake of new GHC versions to
 be slower, which would mean fewer people would be using 7.6 now, but in
 the last few days I've seen the Debian guys have had to send mails to
 maintainers telling them that their packages don't work with 7.6:
 http://lists.debian.org/debian-haskell/2013/02/threads.html
 despite 7.6 having been out for 5 months and about to enter the HP.

 Perhaps more automatic Hackage building, with a group of people looking
 at the logs of failing packages and acting appropriately, is the way
 forward. Some cases (such as installation failed due to dependencies
 not being installable) you'd want to be handled automatically.


 Thanks
 Ian


 ___
 Glasgow-haskell-users mailing list
 Glasgow-haskell-users@haskell.org
 http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


This is an issue I'm hoping Stackage will be able to help address.
Currently, we're running daily builds of the Stackage package set
(currently at about 330 packages) using the most recent Haskell Platform.
However, I'm hoping to augment this with GHC 7.6.2 as well (obviously
dropping the Haskell Platform version constraints at that point, as they
would not be compatible). We could also theoretically include release
candidates in this process, which I think would help flesh out bugs and
drive support for newer GHCs more quickly.

Michael
___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: GHC 7.8 release?

2013-02-08 Thread Simon Marlow
For a while we've been doing one major release per year, and 1-2 minor 
releases.  We have a big sign at the top of the download page directing 
people to the platform.  We arrived here after various discussions in 
the past - there were always a group of people that wanted stability, 
and a roughly equally vocal group of people who wanted the latest bits.  
So we settled on one API-breaking change per year as a compromise.


Since then, the number of packages has ballooned, and there's a new 
factor in the equation: the cost to the ecosystem of an API-breaking 
release of GHC.  All that updating of packages collectively costs the 
community a lot of time, for little benefit.  Lots of package updates 
contributes to Cabal Hell.  The package updates need to happen before 
the platform picks up the GHC release, so that when it goes into the 
platform, the packages are ready.


So I think, if anything, there's pressure to have fewer major releases 
of GHC.  However, we're doing the opposite: 7.0 to 7.2 was 10 months, 
7.2 to 7.4 was 6 months, 7.4 to 7.6 was 7 months. We're getting too 
efficient at making releases!


My feeling is that this pace is too fast.  You might argue that with 
better tools and infrastructure the community wouldn't have so much work 
to do for each release, and I wholeheartedly agree. Perhaps if we stop 
releasing GHC so frequently they'll have time to work on it :)  
Releasing early and often is great, but at the moment it's having 
negative effects on the ecosystem (arguably due to deficiencies in the 
infrastructure).


Does this strike a chord with anyone, or have I got the wrong impression 
and everyone is happy with the pace?


Cheers,
Simon

On 07/02/13 18:15, Simon Peyton-Jones wrote:


It’s fairly simple in my mind. There are two “channels” (if I 
understand Mark’s terminology right):


·Haskell Platform:

oA stable development environment, lots of libraries known to work

oNewcomers, and people who value stability, should use the Haskell 
Platform


oHP comes with a particular version of GHC, probably not the hottest 
new one, but that doesn’t matter.  It works.


·GHC home page downloads:

oMore features but not so stable

oLibraries not guaranteed to work

oWorth releasing, though, as a forcing function to fix bugs, and as a 
checkpoint for people to test, so that by the time the HP adopts a 
particular version it is reasonably solid.


So we already have the two channels Mark asks for, don’t we? One is 
called the Haskell Platform and one is called the GHC home page.



That leaves a PR issue: we really /don’t/ want newcomers or Joe Users 
wanting the “new shiny”. They want the Haskell Platform, and as Mark 
says those users should not pay the slightest attention until it 
appears in the Haskell Platform.


So perhaps we principally need a way to point people away from GHC and 
towards HP?  eg We could prominently say at every download point 
“Stop!  Are you sure you want this?  You might be better off with the 
Haskell Platform!  Here’s why...”.


Have I understood aright?  If so, how could we achieve the right 
social dynamics?


Our goal is to let people who value stability get stability, while the 
hot-shots race along in a different channel and pay the price of flat 
tires etc.


PS: absolutely right to use 7.6.2 for the next HP.  Don’t even think 
about 7.8.


Simon

*From:*Mark Lentczner [mailto:mark.lentcz...@gmail.com]
*Sent:* 07 February 2013 17:43
*To:* Simon Peyton-Jones
*Cc:* andreas.voel...@gmail.com; Carter Schonwald; GHC users; Simon 
Marlow; parallel-haskell; kosti...@gmail.com; Edsko de Vries; 
ghc-d...@haskell.org

*Subject:* Re: GHC 7.8 release?

I'd say the window for 7.8 in the platform is about closed. If 7.8 
were to be release in the next two weeks that would be just about the 
least amount of time I'd want to see for libraries in the platform to 
get all stable with the GHC version. And we'd also be counting on the 
GHC team to be quickly responding to bugs so that there could be a 
point release of 7.8 mid-April. Historically, none of that seems likely.


So my current trajectory is to base HP 2013.2.0.0 on GHC 7.6.2.

Since 7.8 will seems like it will be released before May, we will be 
faced again with the bad public relations issue: Everyone will want 
the new shiny and be confused as to why the platform is such a 
laggard. We'll see four reactions:


  * New comers who are starting out and figure they should use the
latest... Many will try to use 7.8, half the libraries on hackage
won't work, things will be wonky, and they'll have a poor experience.
  * People doing production / project work will stay on 7.6 and ignore
7.8 for a few months.
  * The small group of people exploring the frontiers will know how to
get things set up and be happy.
  * Eventually library authors will get around to making sure their
stuff will work with it.

I wish GHC would radically change it's release process. Things like 
7.8 shouldn't

Re: GHC 7.8 release?

2013-02-08 Thread Ian Lynagh
On Fri, Feb 08, 2013 at 02:28:20PM +, Simon Marlow wrote:
 
 So I think, if anything, there's pressure to have fewer major
 releases of GHC.  However, we're doing the opposite: 7.0 to 7.2 was
 10 months, 7.2 to 7.4 was 6 months, 7.4 to 7.6 was 7 months. We're
 getting too efficient at making releases!

7.2 was billed as a technology preview rather than a regular stable
release. However, it still required just as much effort as a regular
stable release, both for us (we probably spent just as much time trying
to make it bug-free, making builds, making docs, etc) and for the
community (libraries still needed to adjust dependencies etc).

One result of that extra effort was that the 7.4 release got delayed,
and the delay was magnified by pushing it over the Christmas period.

7.6 was released roughly according to the regular yearly release plan
(although the 7.4 delay made the gap between the two shorter).


So in my opinion, 7.2 was a bad idea (but I don't think anyone knew that
before we tried it), and I'd agree that we'd be better sticking to
not-more-than-yearly major releases.

I wouldn't oppose less-than-yearly (e.g. every 18 months) if that makes
life easier for distros, library maintainers, the HP, etc. But I
wouldn't advocate it either; from GHC's point of view, historically
we've always had enough new stuff to justify a new major release after a
year.


Thanks
Ian
-- 
Ian Lynagh, Haskell Consultant
Well-Typed LLP, http://www.well-typed.com/

___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: GHC 7.8 release?

2013-02-08 Thread José Pedro Magalhães
(sorry for re-post, but the first one got rejected from some lists due to
too many recipients)

On Fri, Feb 8, 2013 at 2:28 PM, Simon Marlow marlo...@gmail.com wrote:

  Does this strike a chord with anyone, or have I got the wrong impression
 and everyone is happy with the pace?


I am happy with the pace; I like the release early, release often
approach. The HP is not forced to use the
latest GHC, and the GHC download page already clearly directs users to the
HP. Slowing down GHC releases
will slow down adoption of new features, because while installing GHC might
be harder than installing the HP,
installing GHC HEAD is harder. My experience is that almost no one, apart
from GHC devs, has HEAD, and
they aren't willing to install it just to play with one new feature. Once a
new compiler version is out, however,
many people are happy to try it, even if it has no accompanying HP.


Cheers,
Pedro
___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: GHC 7.8 release?

2013-02-08 Thread Serge D. Mechveliani
On Fri, Feb 08, 2013 at 02:28:20PM +, Simon Marlow wrote:
 [..]
 So I think, if anything, there's pressure to have fewer major
 releases of GHC.  However, we're doing the opposite: 7.0 to 7.2 was
 10 months, 7.2 to 7.4 was 6 months, 7.4 to 7.6 was 7 months. We're
 getting too efficient at making releases!
 
 My feeling is that this pace is too fast. 
 [..]


The GHC versions appear too fast (last 13 years).
If asked, I would ask to make them to appear 5 times slower.

Regards,

--
Sergei

___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: GHC 7.8 release?

2013-02-08 Thread Johan Tibell
On Fri, Feb 8, 2013 at 6:28 AM, Simon Marlow marlo...@gmail.com wrote:

  For a while we've been doing one major release per year, and 1-2 minor
 releases.  We have a big sign at the top of the download page directing
 people to the platform.  We arrived here after various discussions in the
 past - there were always a group of people that wanted stability, and a
 roughly equally vocal group of people who wanted the latest bits.  So we
 settled on one API-breaking change per year as a compromise.

 Since then, the number of packages has ballooned, and there's a new factor
 in the equation: the cost to the ecosystem of an API-breaking release of
 GHC.  All that updating of packages collectively costs the community a lot
 of time, for little benefit.  Lots of package updates contributes to Cabal
 Hell.  The package updates need to happen before the platform picks up the
 GHC release, so that when it goes into the platform, the packages are ready.

 So I think, if anything, there's pressure to have fewer major releases of
 GHC.  However, we're doing the opposite: 7.0 to 7.2 was 10 months, 7.2 to
 7.4 was 6 months, 7.4 to 7.6 was 7 months.  We're getting too efficient at
 making releases!


I think we want to decouple GHC major releases (as in, we did lots of
work) from API breaking releases. For example, GCC has lots of major (or
big) releases, but rarely, if ever, break programs.

I'd be delighted to see a release once in a while that made my programs
faster/smaller/buggy without breaking any of them.

-- Johan
___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: GHC 7.8 release?

2013-02-08 Thread Manuel M T Chakravarty
I completely agree with Johan. The problem is to change core APIs too fast. 
Adding, say, SIMD instructions or having a new type extension (that needs to be 
explicitly activated with a -X option) shouldn't break packages.

I'm all for restricting major API changes to once a year, but why can't we have 
multiple updates to the code generator per year or generally release that don't 
affect a large number of packages on Hackage?

Manuel

Johan Tibell johan.tib...@gmail.com:
 On Fri, Feb 8, 2013 at 6:28 AM, Simon Marlow marlo...@gmail.com wrote:
 For a while we've been doing one major release per year, and 1-2 minor 
 releases.  We have a big sign at the top of the download page directing 
 people to the platform.  We arrived here after various discussions in the 
 past - there were always a group of people that wanted stability, and a 
 roughly equally vocal group of people who wanted the latest bits.  So we 
 settled on one API-breaking change per year as a compromise.
 
 Since then, the number of packages has ballooned, and there's a new factor in 
 the equation: the cost to the ecosystem of an API-breaking release of GHC.  
 All that updating of packages collectively costs the community a lot of time, 
 for little benefit.  Lots of package updates contributes to Cabal Hell.  The 
 package updates need to happen before the platform picks up the GHC release, 
 so that when it goes into the platform, the packages are ready.
 
 So I think, if anything, there's pressure to have fewer major releases of 
 GHC.  However, we're doing the opposite: 7.0 to 7.2 was 10 months, 7.2 to 7.4 
 was 6 months, 7.4 to 7.6 was 7 months.  We're getting too efficient at making 
 releases!
 
 I think we want to decouple GHC major releases (as in, we did lots of work) 
 from API breaking releases. For example, GCC has lots of major (or big) 
 releases, but rarely, if ever, break programs.
 
 I'd be delighted to see a release once in a while that made my programs 
 faster/smaller/buggy without breaking any of them.
 
 -- Johan

___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: GHC 7.8 release?

2013-02-08 Thread Carter Schonwald
+10^100 to Johan and Manuel. Breaking changes on pieces that aren't
experimental is the main compatibility / new version pain,

and I say this as someone who's spent time before and around the 7.4 and
7.6 releases testing out lots of major packages and sending a few patches
to various maintainers.

If there's a path to having a release strategy as Manuel suggests, and
having an intermediate release  with the new vector primops, type
extensions and such goodness, then I'm all for it.  A lot of these bits are
things ill start using almost immediately in production / real software,
esp if I'm not needing to patch every stable library beyond maybe relaxing
versioning constraints.

-Carter
On Feb 8, 2013 9:05 PM, Manuel M T Chakravarty c...@cse.unsw.edu.au
wrote:

 I completely agree with Johan. The problem is to change core APIs too
 fast. Adding, say, SIMD instructions or having a new type extension (that
 needs to be explicitly activated with a -X option) shouldn't break packages.

 I'm all for restricting major API changes to once a year, but why can't we
 have multiple updates to the code generator per year or generally release
 that don't affect a large number of packages on Hackage?

 Manuel

 Johan Tibell johan.tib...@gmail.com:

 On Fri, Feb 8, 2013 at 6:28 AM, Simon Marlow marlo...@gmail.com wrote:

  For a while we've been doing one major release per year, and 1-2 minor
 releases.  We have a big sign at the top of the download page directing
 people to the platform.  We arrived here after various discussions in the
 past - there were always a group of people that wanted stability, and a
 roughly equally vocal group of people who wanted the latest bits.  So we
 settled on one API-breaking change per year as a compromise.

 Since then, the number of packages has ballooned, and there's a new
 factor in the equation: the cost to the ecosystem of an API-breaking
 release of GHC.  All that updating of packages collectively costs the
 community a lot of time, for little benefit.  Lots of package updates
 contributes to Cabal Hell.  The package updates need to happen before the
 platform picks up the GHC release, so that when it goes into the platform,
 the packages are ready.

 So I think, if anything, there's pressure to have fewer major releases of
 GHC.  However, we're doing the opposite: 7.0 to 7.2 was 10 months, 7.2 to
 7.4 was 6 months, 7.4 to 7.6 was 7 months.  We're getting too efficient at
 making releases!


 I think we want to decouple GHC major releases (as in, we did lots of
 work) from API breaking releases. For example, GCC has lots of major (or
 big) releases, but rarely, if ever, break programs.

 I'd be delighted to see a release once in a while that made my programs
 faster/smaller/buggy without breaking any of them.

 -- Johan



___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


GHC 7.8 release?

2013-02-07 Thread Simon Peyton-Jones
Dear GHC users,

Carter: Will this RTS update make it into ghc 7.8 update thats coming up in the 
next monthish?
Andreas: We are almost there - we are now trying to sort out a problem on mac 
os x. It would be helpful to know if there is a cutoff date for getting things 
into 7.8.

Simon, Ian, and I have just been discussing 7.8, and would be interested in 
what you guys think.

At ICFP we speculated that we'd make a release of GHC soon after Christmas to 
embody tons of stuff that has been included since 7.6, specifically:

· major improvements in DPH (vectorisation avoidance, new vectoriser)

· type holes

· rebindable list syntax

· major changes to the type inference engine

· type level natural numbers

· overlapping type families

· the new code generator

· support for vector (SSE/AVX) instructions

Whenever it comes it would definitely be great to include Andreas  friends' 
work:

· Scheduler changes to the RTS to improve latency

The original major reason for proposing a post-Xmas release was to get DPH in a 
working state out into the wild.  However, making a proper release imposes 
costs on everyone else.  Library authors have to scurry around to make their 
libraries work, etc.   Some of the new stuff hasn't been in HEAD for that long, 
and hence has not been very thoroughly tested.   (But of course making a 
release unleashes a huge wave of testing that doesn't happen otherwise.)

So another alternative is to leave it all as HEAD, and wait another few months 
before making a release.  You can still use all the new stuff by compiling 
HEAD, or grabbing a snapshot distribution.  And it makes it hard for the 
Haskell platform if GHC moves too fast. Many people are still on 7.4.

There seem to be pros and cons each way.  I don't have a strong opinion.  If 
you have a view, let us know.

Simon

___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: GHC 7.8 release?

2013-02-07 Thread José Pedro Magalhães
For the record, if we decide for a release soon, I'll make sure the
new-typeable branch gets merged asap.


Cheers,
Pedro

On Thu, Feb 7, 2013 at 8:25 AM, Simon Peyton-Jones simo...@microsoft.comwrote:

  Dear GHC users,  

 *
 *

 *Carter*: Will this RTS update make it into ghc 7.8 update thats coming
 up in the next monthish?

 *Andreas*: We are almost there - we are now trying to sort out a problem
 on mac os x. It would be helpful to know if there is a cutoff date for
 getting things into 7.8. 

 ** **

 Simon, Ian, and I have just been discussing 7.8, and would be interested
 in what you guys think.  


 At ICFP we speculated that we’d make a release of GHC soon after Christmas
 to embody tons of stuff that has been included since 7.6, specifically:***
 *

 **· **major improvements in DPH (vectorisation avoidance, new
 vectoriser)

 **· **type holes

 **· **rebindable list syntax

 **· **major changes to the type inference engine

 **· **type level natural numbers

 **· **overlapping type families

 **· **the new code generator

 **· **support for vector (SSE/AVX) instructions

 ** **

 Whenever it comes it would definitely be great to include Andreas 
 friends’ work:

 **· **Scheduler changes to the RTS to improve latency

 ** **

 The original major reason for proposing a post-Xmas release was to get DPH
 in a working state out into the wild.  However, making a proper release
 imposes costs on everyone else.  Library authors have to scurry around to
 make their libraries work, etc.   Some of the new stuff hasn’t been in HEAD
 for that long, and hence has not been very thoroughly tested.   (But of
 course making a release unleashes a huge wave of testing that doesn’t
 happen otherwise.)

 ** **

 So another alternative is to leave it all as HEAD, and wait another few
 months before making a release.  You can still use all the new stuff by
 compiling HEAD, or grabbing a snapshot distribution.  And it makes it hard
 for the Haskell platform if GHC moves too fast. Many people are still on
 7.4.

 ** **

 There seem to be pros and cons each way.  I don’t have a strong opinion.
 If you have a view, let us know.

 ** **

 Simon

 ** **

 --
 You received this message because you are subscribed to the Google Groups
 parallel-haskell group.
 To unsubscribe from this group and stop receiving emails from it, send an
 email to parallel-haskell+unsubscr...@googlegroups.com.
 For more options, visit https://groups.google.com/groups/opt_out.



___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: GHC 7.8 release?

2013-02-07 Thread Roman Cheplyaka
* Simon Peyton-Jones simo...@microsoft.com [2013-02-07 08:25:10+]
 So another alternative is to leave it all as HEAD, and wait another
 few months before making a release.  You can still use all the new
 stuff by compiling HEAD, or grabbing a snapshot distribution.  And it
 makes it hard for the Haskell platform if GHC moves too fast. Many
 people are still on 7.4.

Maybe make a release candidate, as was done with 7.6.2?

Roman

___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: GHC 7.8 release?

2013-02-07 Thread Geoffrey Mainland
In practice the versions of GHC that are widely used are those that are
included in the platform. Maybe we should coordinate with their next
release? They are targeting a May 6 release, and the release process is
starting March 4, so it sounds like the original GHC release plan
(February release) would be a good fit for the platform as it would
allow library writers to catch up and ensure that STABLE was tested
enough for inclusion in the platform. It would be a shame to miss the
platform release.

Geoff

On 02/07/2013 08:25 AM, Simon Peyton-Jones wrote:
 Dear GHC users, 
 
 * 
  
 *
 
 *Carter*: Will this RTS update make it into ghc 7.8 update thats coming
 up in the next monthish?
 
 *Andreas*: We are almost there - we are now trying to sort out a problem
 on mac os x. It would be helpful to know if there is a cutoff date for
 getting things into 7.8. 
 
  
 
 Simon, Ian, and I have just been discussing 7.8, and would be interested
 in what you guys think. 
 
 
 At ICFP we speculated that we’d make a release of GHC soon after
 Christmas to embody tons of stuff that has been included since 7.6,
 specifically:
 
 · major improvements in DPH (vectorisation avoidance, new
 vectoriser)
 
 · type holes
 
 · rebindable list syntax
 
 · major changes to the type inference engine
 
 · type level natural numbers
 
 · overlapping type families
 
 · the new code generator
 
 · support for vector (SSE/AVX) instructions
 
  
 
 Whenever it comes it would definitely be great to include Andreas 
 friends’ work:
 
 · Scheduler changes to the RTS to improve latency
 
  
 
 The original major reason for proposing a post-Xmas release was to get
 DPH in a working state out into the wild.  However, making a proper
 release imposes costs on everyone else.  Library authors have to scurry
 around to make their libraries work, etc.   Some of the new stuff hasn’t
 been in HEAD for that long, and hence has not been very thoroughly
 tested.   (But of course making a release unleashes a huge wave of
 testing that doesn’t happen otherwise.)
 
  
 
 So another alternative is to leave it all as HEAD, and wait another few
 months before making a release.  You can still use all the new stuff by
 compiling HEAD, or grabbing a snapshot distribution.  And it makes it
 hard for the Haskell platform if GHC moves too fast. Many people are
 still on 7.4.
 
  
 
 There seem to be pros and cons each way.  I don’t have a strong
 opinion.  If you have a view, let us know.
 
  
 
 Simon



___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: GHC 7.8 release?

2013-02-07 Thread Richard Eisenberg
Geoff's reasoning seems quite sound.
+1 for February release.

On Feb 7, 2013, at 3:50 AM, Geoffrey Mainland mainl...@apeiron.net wrote:

 In practice the versions of GHC that are widely used are those that are
 included in the platform. Maybe we should coordinate with their next
 release? They are targeting a May 6 release, and the release process is
 starting March 4, so it sounds like the original GHC release plan
 (February release) would be a good fit for the platform as it would
 allow library writers to catch up and ensure that STABLE was tested
 enough for inclusion in the platform. It would be a shame to miss the
 platform release.
 
 Geoff
 
 On 02/07/2013 08:25 AM, Simon Peyton-Jones wrote:
 Dear GHC users, 
 
 *
   
 *
 
 *Carter*: Will this RTS update make it into ghc 7.8 update thats coming
 up in the next monthish?
 
 *Andreas*: We are almost there - we are now trying to sort out a problem
 on mac os x. It would be helpful to know if there is a cutoff date for
 getting things into 7.8. 
 
 
 
 Simon, Ian, and I have just been discussing 7.8, and would be interested
 in what you guys think. 
 
 
 At ICFP we speculated that we’d make a release of GHC soon after
 Christmas to embody tons of stuff that has been included since 7.6,
 specifically:
 
 · major improvements in DPH (vectorisation avoidance, new
 vectoriser)
 
 · type holes
 
 · rebindable list syntax
 
 · major changes to the type inference engine
 
 · type level natural numbers
 
 · overlapping type families
 
 · the new code generator
 
 · support for vector (SSE/AVX) instructions
 
 
 
 Whenever it comes it would definitely be great to include Andreas 
 friends’ work:
 
 · Scheduler changes to the RTS to improve latency
 
 
 
 The original major reason for proposing a post-Xmas release was to get
 DPH in a working state out into the wild.  However, making a proper
 release imposes costs on everyone else.  Library authors have to scurry
 around to make their libraries work, etc.   Some of the new stuff hasn’t
 been in HEAD for that long, and hence has not been very thoroughly
 tested.   (But of course making a release unleashes a huge wave of
 testing that doesn’t happen otherwise.)
 
 
 
 So another alternative is to leave it all as HEAD, and wait another few
 months before making a release.  You can still use all the new stuff by
 compiling HEAD, or grabbing a snapshot distribution.  And it makes it
 hard for the Haskell platform if GHC moves too fast. Many people are
 still on 7.4.
 
 
 
 There seem to be pros and cons each way.  I don’t have a strong
 opinion.  If you have a view, let us know.
 
 
 
 Simon
 
 
 
 ___
 Glasgow-haskell-users mailing list
 Glasgow-haskell-users@haskell.org
 http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
 


___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: GHC 7.8 release?

2013-02-07 Thread Ian Lynagh

I'm not too optimistic we could actually get the final release out
during February, assuming we want to allow a couple of weeks for people
to test an RC.

Does the Haskell Platform actually want to commit to using a GHC release
with tons of [new] stuff, that has had little testing, days or weeks
after its release? I thought the idea was that it would favour
known-good releases over the latest-and-greatest, but perhaps I
misunderstood or the philosophy has changed.


Thanks
Ian

On Thu, Feb 07, 2013 at 09:00:37AM -0500, Richard Eisenberg wrote:
 Geoff's reasoning seems quite sound.
 +1 for February release.
 
 On Feb 7, 2013, at 3:50 AM, Geoffrey Mainland mainl...@apeiron.net wrote:
 
  In practice the versions of GHC that are widely used are those that are
  included in the platform. Maybe we should coordinate with their next
  release? They are targeting a May 6 release, and the release process is
  starting March 4, so it sounds like the original GHC release plan
  (February release) would be a good fit for the platform as it would
  allow library writers to catch up and ensure that STABLE was tested
  enough for inclusion in the platform. It would be a shame to miss the
  platform release.
  
  Geoff
  
  On 02/07/2013 08:25 AM, Simon Peyton-Jones wrote:
  Dear GHC users, 
  
  *  
  
  *
  
  *Carter*: Will this RTS update make it into ghc 7.8 update thats coming
  up in the next monthish?
  
  *Andreas*: We are almost there - we are now trying to sort out a problem
  on mac os x. It would be helpful to know if there is a cutoff date for
  getting things into 7.8. 
  
  
  
  Simon, Ian, and I have just been discussing 7.8, and would be interested
  in what you guys think. 
  
  
  At ICFP we speculated that we’d make a release of GHC soon after
  Christmas to embody tons of stuff that has been included since 7.6,
  specifically:
  
  · major improvements in DPH (vectorisation avoidance, new
  vectoriser)
  
  · type holes
  
  · rebindable list syntax
  
  · major changes to the type inference engine
  
  · type level natural numbers
  
  · overlapping type families
  
  · the new code generator
  
  · support for vector (SSE/AVX) instructions
  
  
  
  Whenever it comes it would definitely be great to include Andreas 
  friends’ work:
  
  · Scheduler changes to the RTS to improve latency
  
  
  
  The original major reason for proposing a post-Xmas release was to get
  DPH in a working state out into the wild.  However, making a proper
  release imposes costs on everyone else.  Library authors have to scurry
  around to make their libraries work, etc.   Some of the new stuff hasn’t
  been in HEAD for that long, and hence has not been very thoroughly
  tested.   (But of course making a release unleashes a huge wave of
  testing that doesn’t happen otherwise.)
  
  
  
  So another alternative is to leave it all as HEAD, and wait another few
  months before making a release.  You can still use all the new stuff by
  compiling HEAD, or grabbing a snapshot distribution.  And it makes it
  hard for the Haskell platform if GHC moves too fast. Many people are
  still on 7.4.
  
  
  
  There seem to be pros and cons each way.  I don’t have a strong
  opinion.  If you have a view, let us know.
  
  
  
  Simon

___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


RE: GHC 7.8 release?

2013-02-07 Thread p.k.f.holzenspies
+1

Ph.


 -Original Message-
 From: glasgow-haskell-users-boun...@haskell.org [mailto:glasgow-haskell-
 users-boun...@haskell.org] On Behalf Of Richard Eisenberg
 Sent: donderdag 7 februari 2013 15:01
 To: Geoffrey Mainland
 Cc: parallel-hask...@googlegroups.com; glasgow-haskell-users@haskell.org;
 ghc-d...@haskell.org
 Subject: Re: GHC 7.8 release?
 
 Geoff's reasoning seems quite sound.
 +1 for February release.
 
 On Feb 7, 2013, at 3:50 AM, Geoffrey Mainland mainl...@apeiron.net
 wrote:
 
  In practice the versions of GHC that are widely used are those that are
  included in the platform. Maybe we should coordinate with their next
  release? They are targeting a May 6 release, and the release process is
  starting March 4, so it sounds like the original GHC release plan
  (February release) would be a good fit for the platform as it would
  allow library writers to catch up and ensure that STABLE was tested
  enough for inclusion in the platform. It would be a shame to miss the
  platform release.
 
  Geoff
 
  On 02/07/2013 08:25 AM, Simon Peyton-Jones wrote:
  Dear GHC users,
 
  *
  *
 
  *Carter*: Will this RTS update make it into ghc 7.8 update thats coming
  up in the next monthish?
 
  *Andreas*: We are almost there - we are now trying to sort out a
 problem
  on mac os x. It would be helpful to know if there is a cutoff date for
  getting things into 7.8.
 
 
 
  Simon, Ian, and I have just been discussing 7.8, and would be interested
  in what you guys think.
 
 
  At ICFP we speculated that we'd make a release of GHC soon after
  Christmas to embody tons of stuff that has been included since 7.6,
  specifically:
 
  * major improvements in DPH (vectorisation avoidance, new
  vectoriser)
 
  * type holes
 
  * rebindable list syntax
 
  * major changes to the type inference engine
 
  * type level natural numbers
 
  * overlapping type families
 
  * the new code generator
 
  * support for vector (SSE/AVX) instructions
 
 
 
  Whenever it comes it would definitely be great to include Andreas 
  friends' work:
 
  * Scheduler changes to the RTS to improve latency
 
 
 
  The original major reason for proposing a post-Xmas release was to get
  DPH in a working state out into the wild.  However, making a proper
  release imposes costs on everyone else.  Library authors have to scurry
  around to make their libraries work, etc.   Some of the new stuff hasn't
  been in HEAD for that long, and hence has not been very thoroughly
  tested.   (But of course making a release unleashes a huge wave of
  testing that doesn't happen otherwise.)
 
 
 
  So another alternative is to leave it all as HEAD, and wait another few
  months before making a release.  You can still use all the new stuff by
  compiling HEAD, or grabbing a snapshot distribution.  And it makes it
  hard for the Haskell platform if GHC moves too fast. Many people are
  still on 7.4.
 
 
 
  There seem to be pros and cons each way.  I don't have a strong
  opinion.  If you have a view, let us know.
 
 
 
  Simon
 
 
 
  ___
  Glasgow-haskell-users mailing list
  Glasgow-haskell-users@haskell.org
  http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
 
 
 
 ___
 Glasgow-haskell-users mailing list
 Glasgow-haskell-users@haskell.org
 http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: GHC 7.8 release?

2013-02-07 Thread John Lato
I agree with Ian.  Mid-February is very soon, and there's a lot of stuff
that seems to just be coming in now.  That doesn't leave much time for
testing to get 7.8 out in sync with the platform.

Although my perspective is a bit colored by the last release.  Testing the
7.6.1 RC took several weeks for us because of the number of upstream
packages that needed to be updated (not all trivially).  By the time we
were prepared to begin testing our own systems 7.6.1 was already released,
and we couldn't use it because of a number of bugs (
http://hackage.haskell.org/trac/ghc/ticket/7257 was a blocker, but there
were others also).  Most of the bugs were fixed very quickly (thanks Simon
M. and Simon PJ!), but by then they were already in the wild.  If there had
been a bit more time to test 7.6.1, maybe some of those fixes would have
made it into the release.


John L.


On Thu, Feb 7, 2013 at 10:23 PM, Ian Lynagh i...@well-typed.com wrote:


 I'm not too optimistic we could actually get the final release out
 during February, assuming we want to allow a couple of weeks for people
 to test an RC.

 Does the Haskell Platform actually want to commit to using a GHC release
 with tons of [new] stuff, that has had little testing, days or weeks
 after its release? I thought the idea was that it would favour
 known-good releases over the latest-and-greatest, but perhaps I
 misunderstood or the philosophy has changed.


 Thanks
 Ian

 On Thu, Feb 07, 2013 at 09:00:37AM -0500, Richard Eisenberg wrote:
  Geoff's reasoning seems quite sound.
  +1 for February release.
 
  On Feb 7, 2013, at 3:50 AM, Geoffrey Mainland mainl...@apeiron.net
 wrote:
 
   In practice the versions of GHC that are widely used are those that are
   included in the platform. Maybe we should coordinate with their next
   release? They are targeting a May 6 release, and the release process is
   starting March 4, so it sounds like the original GHC release plan
   (February release) would be a good fit for the platform as it would
   allow library writers to catch up and ensure that STABLE was tested
   enough for inclusion in the platform. It would be a shame to miss the
   platform release.
  
   Geoff
  
   On 02/07/2013 08:25 AM, Simon Peyton-Jones wrote:
   Dear GHC users,
  
   *
   *
  
   *Carter*: Will this RTS update make it into ghc 7.8 update thats
 coming
   up in the next monthish?
  
   *Andreas*: We are almost there - we are now trying to sort out a
 problem
   on mac os x. It would be helpful to know if there is a cutoff date for
   getting things into 7.8.
  
  
  
   Simon, Ian, and I have just been discussing 7.8, and would be
 interested
   in what you guys think.
  
  
   At ICFP we speculated that we’d make a release of GHC soon after
   Christmas to embody tons of stuff that has been included since 7.6,
   specifically:
  
   · major improvements in DPH (vectorisation avoidance, new
   vectoriser)
  
   · type holes
  
   · rebindable list syntax
  
   · major changes to the type inference engine
  
   · type level natural numbers
  
   · overlapping type families
  
   · the new code generator
  
   · support for vector (SSE/AVX) instructions
  
  
  
   Whenever it comes it would definitely be great to include Andreas 
   friends’ work:
  
   · Scheduler changes to the RTS to improve latency
  
  
  
   The original major reason for proposing a post-Xmas release was to get
   DPH in a working state out into the wild.  However, making a proper
   release imposes costs on everyone else.  Library authors have to
 scurry
   around to make their libraries work, etc.   Some of the new stuff
 hasn’t
   been in HEAD for that long, and hence has not been very thoroughly
   tested.   (But of course making a release unleashes a huge wave of
   testing that doesn’t happen otherwise.)
  
  
  
   So another alternative is to leave it all as HEAD, and wait another
 few
   months before making a release.  You can still use all the new stuff
 by
   compiling HEAD, or grabbing a snapshot distribution.  And it makes it
   hard for the Haskell platform if GHC moves too fast. Many people are
   still on 7.4.
  
  
  
   There seem to be pros and cons each way.  I don’t have a strong
   opinion.  If you have a view, let us know.
  
  
  
   Simon

 ___
 Haskell-platform mailing list
 haskell-platf...@projects.haskell.org
 http://projects.haskell.org/cgi-bin/mailman/listinfo/haskell-platform

___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


RE: GHC 7.8 release?

2013-02-07 Thread Simon Peyton-Jones
It’s fairly simple in my mind. There are two “channels” (if I understand Mark’s 
terminology right):


· Haskell Platform:

o   A stable development environment, lots of libraries known to work

o   Newcomers, and people who value stability, should use the Haskell Platform

o   HP comes with a particular version of GHC, probably not the hottest new 
one, but that doesn’t matter.  It works.



· GHC home page downloads:

o   More features but not so stable

o   Libraries not guaranteed to work

o   Worth releasing, though, as a forcing function to fix bugs, and as a 
checkpoint for people to test, so that by the time the HP adopts a particular 
version it is reasonably solid.

So we already have the two channels Mark asks for, don’t we?  One is called the 
Haskell Platform and one is called the GHC home page.

That leaves a PR issue: we really don’t want newcomers or Joe Users wanting the 
“new shiny”. They want the Haskell Platform, and as Mark says those users 
should not pay the slightest attention until it appears in the Haskell Platform.

So perhaps we principally need a way to point people away from GHC and towards 
HP?  eg We could prominently say at every download point “Stop!  Are you sure 
you want this?  You might be better off with the Haskell Platform!  Here’s 
why...”.

Have I understood aright?  If so, how could we achieve the right social 
dynamics?

Our goal is to let people who value stability get stability, while the 
hot-shots race along in a different channel and pay the price of flat tires etc.

PS: absolutely right to use 7.6.2 for the next HP.  Don’t even think about 7.8.

Simon



From: Mark Lentczner [mailto:mark.lentcz...@gmail.com]
Sent: 07 February 2013 17:43
To: Simon Peyton-Jones
Cc: andreas.voel...@gmail.com; Carter Schonwald; GHC users; Simon Marlow; 
parallel-haskell; kosti...@gmail.com; Edsko de Vries; ghc-d...@haskell.org
Subject: Re: GHC 7.8 release?

I'd say the window for 7.8 in the platform is about closed. If 7.8 were to be 
release in the next two weeks that would be just about the least amount of time 
I'd want to see for libraries in the platform to get all stable with the GHC 
version. And we'd also be counting on the GHC team to be quickly responding to 
bugs so that there could be a point release of 7.8 mid-April. Historically, 
none of that seems likely.

So my current trajectory is to base HP 2013.2.0.0 on GHC 7.6.2.

Since 7.8 will seems like it will be released before May, we will be faced 
again with the bad public relations issue: Everyone will want the new shiny and 
be confused as to why the platform is such a laggard. We'll see four reactions:

  *   New comers who are starting out and figure they should use the latest... 
Many will try to use 7.8, half the libraries on hackage won't work, things will 
be wonky, and they'll have a poor experience.
  *   People doing production / project work will stay on 7.6 and ignore 7.8 
for a few months.
  *   The small group of people exploring the frontiers will know how to get 
things set up and be happy.
  *   Eventually library authors will get around to making sure their stuff 
will work with it.
I wish GHC would radically change it's release process. Things like 7.8 
shouldn't be release as 7.8. That sounds major and stable. The web site will 
have 7.8 at the top. The warning to use the platform will fall flat because it 
makes the platform look out of date. Really, 7.8 should be in a different 
release channel, not on the front page. It should bake in that channel for six 
months - where only the third group of people will use it, until it is getting 
close to merge into main, at which point the fourth group will start to use it, 
so that the day it hits main, all the libraries just work. Ideally, the first 
two groups of people will not pay the slightest attention to it until it is 
further baked.

While we achievements of the GHC team are great, less than half of those 7.8 
features seem interesting from the viewpoint of the aims of the platform. I 
don't think adding syntactic or type-level features are really all that 
important for Haskell at this juncture. And while I do like to see improvements 
in generated code and run-time performance, I think even those are less 
important than making crucial ecosystem improvements to things like package 
management, cross-compilation, and libraries.

- Mark
___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: GHC 7.8 release?

2013-02-07 Thread Christian Höner zu Siederdissen
Hi Simon,

The download page already has a big Stop there.
http://www.haskell.org/ghc/download_ghc_7_6_2

Apart from that, I am /really/ looking forward to sse/avx extensions and
the official new-code-gen to further narrow the gap between
high-performance C and high-performance Haskell.

That being said, I would be fine using HEAD, but a release is very
convenient in terms of installing, even if they are in the form of rc
(which I typically install to see if something breaks or is faster).

Maybe you want to consider providing a couple of release candidates
instead of 7.8 now?

Gruss,
Christian

* Simon Peyton Jones simo...@microsoft.com [07.02.2013 19:25]:
It's fairly simple in my mind. There are two channels (if I understand
Mark's terminology right):
 
 
 
. Haskell Platform:
 
o   A stable development environment, lots of libraries known to work
 
o   Newcomers, and people who value stability, should use the Haskell
Platform
 
o   HP comes with a particular version of GHC, probably not the hottest
new one, but that doesn't matter.  It works.
 
 
 
. GHC home page downloads:
 
o   More features but not so stable
 
o   Libraries not guaranteed to work
 
o   Worth releasing, though, as a forcing function to fix bugs, and as a
checkpoint for people to test, so that by the time the HP adopts a
particular version it is reasonably solid.
 
 
 
So we already have the two channels Mark asks for, don't we?  One is
called the Haskell Platform and one is called the GHC home page. 
 
That leaves a PR issue: we really don't want newcomers or Joe Users
wanting the new shiny. They want the Haskell Platform, and as Mark says
those users should not pay the slightest attention until it appears in the
Haskell Platform.
 
 
 
So perhaps we principally need a way to point people away from GHC and
towards HP?  eg We could prominently say at every download point Stop! 
Are you sure you want this?  You might be better off with the Haskell
Platform!  Here's why
 
 
 
Have I understood aright?  If so, how could we achieve the right social
dynamics? 
 
 
 
Our goal is to let people who value stability get stability, while the
hot-shots race along in a different channel and pay the price of flat
tires etc.
 
 
 
PS: absolutely right to use 7.6.2 for the next HP.  Don't even think about
7.8.
 
 
 
Simon
 
 
 
 
 
 
 
From: Mark Lentczner [mailto:mark.lentcz...@gmail.com]
Sent: 07 February 2013 17:43
To: Simon Peyton-Jones
Cc: andreas.voel...@gmail.com; Carter Schonwald; GHC users; Simon Marlow;
parallel-haskell; kosti...@gmail.com; Edsko de Vries; ghc-d...@haskell.org
Subject: Re: GHC 7.8 release?
 
 
 
I'd say the window for 7.8 in the platform is about closed. If 7.8 were to
be release in the next two weeks that would be just about the least amount
of time I'd want to see for libraries in the platform to get all stable
with the GHC version. And we'd also be counting on the GHC team to be
quickly responding to bugs so that there could be a point release of 7.8
mid-April. Historically, none of that seems likely.
 
 
 
So my current trajectory is to base HP 2013.2.0.0 on GHC 7.6.2.
 
 
 
Since 7.8 will seems like it will be released before May, we will be faced
again with the bad public relations issue: Everyone will want the new
shiny and be confused as to why the platform is such a laggard. We'll see
four reactions:
 
  o New comers who are starting out and figure they should use the
latest... Many will try to use 7.8, half the libraries on hackage
won't work, things will be wonky, and they'll have a poor experience.
  o People doing production / project work will stay on 7.6 and ignore 7.8
for a few months.
  o The small group of people exploring the frontiers will know how to get
things set up and be happy.
  o Eventually library authors will get around to making sure their stuff
will work with it.
 
I wish GHC would radically change it's release process. Things like 7.8
shouldn't be release as 7.8. That sounds major and stable. The web site
will have 7.8 at the top. The warning to use the platform will fall flat
because it makes the platform look out of date. Really, 7.8 should be in
a different release channel, not on the front page. It should bake in that
channel for six months - where only the third group of people will use it,
until it is getting close to merge into main, at which point the fourth
group will start to use it, so that the day it hits main, all the
libraries just work. Ideally, the first two groups of people will not pay
the slightest attention to it until it is further baked.
 
 
 
While we achievements of the GHC team are great, less than

Re: GHC 7.8 release?

2013-02-07 Thread Henrik Nilsson

Hi all,

Ian Lynagh wrote:

 Does the Haskell Platform actually want to commit to using a GHC
 release with tons of [new] stuff, that has had little testing, days
 or weeks after its release? I thought the idea was that it would
 favour known-good releases over the latest-and-greatest, but perhaps I
 misunderstood or the philosophy has changed.

From a teaching perspective, I'd hope the philosophy is still
known-good releases.

The Haskell platform is what we deploy on our teaching machines,
and we really need to be able to trust that it will work very
smoothly, or we'd risk losing lots of valuable teaching time and,
even worse, putting lots of students off Haskell. (Getting students
to appreciate Haskell is an upwards struggle at the best of times
anyway.)

Something like new run-time system features sounds like something
that really ought to be tested very thoroughly before being integrated
into the HP.

So, for (general) teaching, at least, stability over new features any
day.

Best,

/Henrik

--
Henrik Nilsson
School of Computer Science
The University of Nottingham
n...@cs.nott.ac.uk
This message and any attachment are intended solely for the addressee and may 
contain confidential information. If you have received this message in error, 
please send it back to me, and immediately delete it.   Please do not use, copy 
or disclose the information contained in this message or in any attachment.  
Any views or opinions expressed by the author of this email do not necessarily 
reflect the views of the University of Nottingham.

This message has been checked for viruses but the contents of an attachment
may still contain software viruses which could damage your computer system:
you are advised to perform your own checks. Email communications with the
University of Nottingham may be monitored as permitted by UK legislation.

___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: GHC 7.8 release?

2013-02-07 Thread Austin Seipp
This is a slight tangent but, I am always somewhat confused about the
release schedule. When reading this, the basic decision seems to come
down to when do we cut a release, taking into account factors like
reliability/bugs/support/community/other stuff like that.

So, IMO, perhaps one thing that's needed is a more formalized release
schedule, with something like a merge window for 'big changes'? For
example, many projects like LLVM and GCC have fairly fixed release
windows, with an accompanying merge window several months before an
official release. (The Linux kernel does this too, but they have a
much shorter cycle.) If a large feature misses the merge window, it
must go into the next release.

Personally, I am not too worried about necessarily getting every new
feature into a release, even if they're awesome (and they all are!)
And while giving HP users the latest and greatest is great, they want
stability more than anything, in my opinion. So I think they're fine
with that too. What I am worried about is there being a good length of
time where the features integrated have time to bake and see some
polish, without a lot of interference.

There are a lot of issues with this including how to deal with work
that goes on in the mean time, etc. GHC also has far less manpower and
a much different ratio of developer influence and 'spread' than any of
the above projects. And we have to define what qualifies as 'big
change.' But if the issue seems to be one of time, synchronization,
and quality, perhaps we should think about whether or not a change
like a more formalized schedule could help.

I think making releases so people can find bugs is important. But that
will always happen anyway, so I'd rather be a little cautious and wait
this one out, than try to cram it. The new vectoriser only came in
within the past ~48 hours, and SIMD was just pushed in the past week
(and DPH will need SIMD support merged, too!) I think Feburary or even
March is way, way too early for a solid release, and it's certainly
too late for the HP anyway. I see little pain in postponement,
personally.

On Thu, Feb 7, 2013 at 2:25 AM, Simon Peyton-Jones
simo...@microsoft.com wrote:
 Dear GHC users,



 Carter: Will this RTS update make it into ghc 7.8 update thats coming up in
 the next monthish?

 Andreas: We are almost there - we are now trying to sort out a problem on
 mac os x. It would be helpful to know if there is a cutoff date for getting
 things into 7.8.



 Simon, Ian, and I have just been discussing 7.8, and would be interested in
 what you guys think.


 At ICFP we speculated that we’d make a release of GHC soon after Christmas
 to embody tons of stuff that has been included since 7.6, specifically:

 · major improvements in DPH (vectorisation avoidance, new
 vectoriser)

 · type holes

 · rebindable list syntax

 · major changes to the type inference engine

 · type level natural numbers

 · overlapping type families

 · the new code generator

 · support for vector (SSE/AVX) instructions



 Whenever it comes it would definitely be great to include Andreas  friends’
 work:

 · Scheduler changes to the RTS to improve latency



 The original major reason for proposing a post-Xmas release was to get DPH
 in a working state out into the wild.  However, making a proper release
 imposes costs on everyone else.  Library authors have to scurry around to
 make their libraries work, etc.   Some of the new stuff hasn’t been in HEAD
 for that long, and hence has not been very thoroughly tested.   (But of
 course making a release unleashes a huge wave of testing that doesn’t happen
 otherwise.)



 So another alternative is to leave it all as HEAD, and wait another few
 months before making a release.  You can still use all the new stuff by
 compiling HEAD, or grabbing a snapshot distribution.  And it makes it hard
 for the Haskell platform if GHC moves too fast. Many people are still on
 7.4.



 There seem to be pros and cons each way.  I don’t have a strong opinion.  If
 you have a view, let us know.



 Simon




 ___
 ghc-devs mailing list
 ghc-d...@haskell.org
 http://www.haskell.org/mailman/listinfo/ghc-devs




-- 
Regards,
Austin

___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


  1   2   >