Re: backward compatibility

2011-01-20 Thread Max Bolingbroke
On 20 January 2011 02:47, John Meacham j...@repetae.net wrote:
 Allowing this was a specific feature that was included in ghc on
 purpose (as well as the relaxed if/then layout rule in do statements)
 So this is definitely a regression.

Ian split this out in this patch:
http://darcs.haskell.org/cgi-bin/darcsweb.cgi?r=ghc;a=darcs_commitdiff;h=20101124220507-3fd76-26e1672e163f309adf8992fd402df1214b7db6dd.gz

(You can see the tests here:
http://darcs.haskell.org/cgi-bin/darcsweb.cgi?r=testsuite;a=darcs_commitdiff;h=20101125012715-3fd76-fb009b5a590d609380c894261e651710f86c0430.gz)

However, when he split it out he made sure that it was still turned on
by default unless the package explicitly requested Haskell 98 or 2010
compatibility (with -XHaskell98 or -XHaskell2010) - so I'm not sure
why it should cause breakage. I don't have a HEAD build around so I
can't find out for myself at the moment.

Cheers,
Max

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


Re: backward compatibility

2011-01-20 Thread Ian Lynagh
On Thu, Jan 20, 2011 at 08:14:29AM +, Max Bolingbroke wrote:
 On 20 January 2011 02:47, John Meacham j...@repetae.net wrote:
  Allowing this was a specific feature that was included in ghc on
  purpose (as well as the relaxed if/then layout rule in do statements)
  So this is definitely a regression.
 
 Ian split this out in this patch:
 http://darcs.haskell.org/cgi-bin/darcsweb.cgi?r=ghc;a=darcs_commitdiff;h=20101124220507-3fd76-26e1672e163f309adf8992fd402df1214b7db6dd.gz
 
 (You can see the tests here:
 http://darcs.haskell.org/cgi-bin/darcsweb.cgi?r=testsuite;a=darcs_commitdiff;h=20101125012715-3fd76-fb009b5a590d609380c894261e651710f86c0430.gz)
 
 However, when he split it out he made sure that it was still turned on
 by default unless the package explicitly requested Haskell 98 or 2010
 compatibility (with -XHaskell98 or -XHaskell2010) - so I'm not sure
 why it should cause breakage. I don't have a HEAD build around so I
 can't find out for myself at the moment.

Yes, it's still on in GHC by default, but Cabal specifies Haskell98 if a
language isn't given in the .cabal file.

network probably wants to give NondecreasingIndentation as an extension
if impl(ghc = 7.1).


Thanks
Ian


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


Re: backward compatibility

2011-01-20 Thread 山本和彦
Hello,

 Yes, it's still on in GHC by default, but Cabal specifies Haskell98 if a
 language isn't given in the .cabal file.
 
 network probably wants to give NondecreasingIndentation as an extension
 if impl(ghc = 7.1).

I'm not asking how to fix packages. Actually the layout of the network
package on github has been fixed today.

I'm asking why GHC breaks backward compatibility
(e.g. FlexibleInstances and BangPatterns) and why maintainers of
packages should do boring fixes. What are benefits of such overhead?

--Kazu

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


Re: backward compatibility

2011-01-20 Thread Wolfgang Jeltsch
Am Donnerstag, den 20.01.2011, 23:25 +0900 schrieb 山本和彦:
 I'm asking why GHC breaks backward compatibility (e.g.
 FlexibleInstances and BangPatterns) and why maintainers of packages
 should do boring fixes. What are benefits of such overhead?

Hi,

what are the changes in GHC wrt. FlexibleInstances and BangPatterns?

Best wishes,
Wolfgang


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


Release/git plans

2011-01-20 Thread Simon Marlow
As promised, here are our plans for forthcoming GHC releases and the git 
switchover:


 - do a 7.0.2 RC as soon as possible, followed shortly by a release.
   Currently blocking this is a problem with Cabal that shows up on
   OS X 10.6, we hope to have this resolved soon.

 - switch the GHC repo to git (this is ready to go, we just need to
   flip the switch and do some work on the wiki build documentation)

 - switch the libraries and other repositories to git, once we have
   decided on the strategy (mirror or convert) for each one.

 - make a new stable branch for 7.2, and release 7.2.1 shortly after.

So we'll be doing a 7.2.1 release much earlier than planned.  Our 
motivation for doing this is:


 - the 7.0 branch is darcs, but the HEAD will be git, so the longer
   this situation persists the more difficult it is to merge changes.
   Hence we want to fork a new STABLE branch as soon as possible.

 - one of the fixes we need to make soon, to fix equality superclasses,
   is too large a change to put in the 7.0 branch.  We also have some
   pending changes to the internal representation of coercions that
   will be disruptive in HEAD, and will make future merging to 7.0
   difficult.

 - 7.0.2 should be a nice stable release, and HEAD is actually in
   pretty good shape right now too.



FYI, the git repo is now attached to our Trac instance, so you can 
browse the source tree and history here:


 http://hackage.haskell.org/trac/ghc/browser

it's not terribly fast, but it works.  With git we'll be able to link 
directly to commits from tickets and vice-versa.  The GHC git repo that 
we'll be using is here:


 http://darcs.haskell.org/ghc.git

(note different from the URL for the testing repo, although it's the 
same repo).  I'm mirroring this manually from the darcs repo, so it 
might lag a bit at times.


Cheers,
Simon

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


Re: Release/git plans

2011-01-20 Thread austin seipp
Hello Simon,

On Thu, Jan 20, 2011 at 9:48 AM, Simon Marlow marlo...@gmail.com wrote:
 ...
  - make a new stable branch for 7.2, and release 7.2.1 shortly after.

 So we'll be doing a 7.2.1 release much earlier than planned.  Our motivation
 for doing this is:

  - the 7.0 branch is darcs, but the HEAD will be git, so the longer
   this situation persists the more difficult it is to merge changes.
   Hence we want to fork a new STABLE branch as soon as possible.

  - one of the fixes we need to make soon, to fix equality superclasses,
   is too large a change to put in the 7.0 branch.  We also have some
   pending changes to the internal representation of coercions that
   will be disruptive in HEAD, and will make future merging to 7.0
   difficult.

  - 7.0.2 should be a nice stable release, and HEAD is actually in
   pretty good shape right now too.

So, given that 7.2 will be released much earlier than the normal
release cycle, is there any room for anything else to get into HEAD
for the 7.2 release before everything is switched? In particular I
fixed up Max Bolingbroke's old compiler plugin work to be usable with
the latest HEAD, and all the fundamental work is there and done, just
some additional small things are needed (notably having ghc dump
plugin information a la -ddump flags, and testsuite patches are about
it I think.) The patch itself is pretty small and doesn't touch *too*
much code, mostly adding dynamic loading and the plugin API, but it's
arguably adding a 'big' feature for users of GHC to start utilizing,
and perhaps a release in 7.2 would cause problems merging changes
until you cut a new STABLE branch with git, like you said.

It would be nice to have this in GHC 7.2, but I was thinking of
eventually extending the scope of compiler plugins to allow users to
write Cmm optimisations as well. It would likely be best to wait for
the switch to Git and for the new code generator branch to be merged
before that work happens though, but writing plugins that do Core
passes seem to work well right now.

 The GHC git repo that
 we'll be using is here:

  http://darcs.haskell.org/ghc.git

This is an incredibly minor note in my opinion (that was brought up
before IIRC) but, isn't it a little strange for ghc's git repository
to exist on darcs.haskell.org? Not that it's a problem, just slightly
confusing I guess.

-- 
Regards,
Austin

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


RE: backward compatibility

2011-01-20 Thread Sittampalam, Ganesh
Simon Marlow wrote:

 Hopefully that explains why sometimes we make breaking changes.  If
 the 
 breaking change has a high enough impact, then it becomes worthwhile
 to 
 add backwards compatibility (via warnings / deprecation or whatever).
 Of course from the point of view of the user, the impact is always
 either high (it broke) or zero (it didn't) :-)  We have to make a
 judgement as to whether we should spend effort on backwards
 compatibility or not.  Perhaps we're getting it wrong - so feedback
 from 
 users is always valuable.

From the point of view of darcs, which is usually trying to support 2 or 3 GHC 
versions at a time, one cycle of deprecation makes life a lot simpler. We do 
look at warnings and try to fix them, but it's nicer not to have to do so in a 
real hurry.

Cheers,

Ganesh

=== 
Please access the attached hyperlink for an important electronic communications 
disclaimer: 
http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html 
=== 


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


Re: Release/git plans

2011-01-20 Thread Max Bolingbroke
On 20 January 2011 16:57, austin seipp a...@hacks.yi.org wrote:
 It would be nice to have this in GHC 7.2, but I was thinking of
 eventually extending the scope of compiler plugins to allow users to
 write Cmm optimisations as well.

This would be particularly cool because Cmm optimisations in the new
Hoopl framework compose extremely nicely.

(And yes, obviously I would be very happy if Simon commits my plugins
patches ;-))

Max

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


Re: backward compatibility

2011-01-20 Thread Brandon S Allbery KF8NH
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

On 1/20/11 12:09 , Sittampalam, Ganesh wrote:
 Simon Marlow wrote:
 judgement as to whether we should spend effort on backwards
 compatibility or not.  Perhaps we're getting it wrong - so feedback
 from 
 users is always valuable.
 
 From the point of view of darcs, which is usually trying to support 2 or 3 
 GHC versions at a time, one cycle of deprecation makes life a lot simpler. We 
 do look at warnings and try to fix them, but it's nicer not to have to do so 
 in a real hurry.

And of the Haskell Platform, etc.  Think of it as the price of failing to
avoid success.

- -- 
brandon s. allbery [linux,solaris,freebsd,perl]  allb...@kf8nh.com
system administrator  [openafs,heimdal,too many hats]  allb...@ece.cmu.edu
electrical and computer engineering, carnegie mellon university  KF8NH
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.11 (Darwin)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAk04bpsACgkQIn7hlCsL25Wh2QCgydcO3kZGxRTePJvp+HvnZloI
r/wAn0YIv8ZqN6ZS9WNMvaH86F3AHZgl
=m18O
-END PGP SIGNATURE-

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


Re: backward compatibility

2011-01-20 Thread Axel Simon

Hi Simon,

On Jan 20, 2011, at 17:54, Simon Marlow wrote:


The layout fix is this change:

http://hackage.haskell.org/trac/ghc/changeset/9a82b1ffa35fa4c3927c66a1037a37d436cf6aac

Another case where GHC was not strictly standards-compliant, and it  
was fixed by adding a flag for the extension.



These were all bugs, but fixing them broke some code,  
unfortunately.  In cases like this we *could* deprecate the  
behaviour for one major release with a warning, before removing it.   
However there's a non-trivial cost to doing so, and in some of these  
cases it would have been quite awkward to implement the warning  
(plus the cost of adding tests to make sure we actually got the  
warning right; it's easy to introduce yet more bugs). Furthermore,  
deprecations are often ignored, so sometimes the breakage is just  
delayed.


Hopefully that explains why sometimes we make breaking changes.  If  
the breaking change has a high enough impact, then it becomes  
worthwhile to add backwards compatibility (via warnings /  
deprecation or whatever). Of course from the point of view of the  
user, the impact is always either high (it broke) or zero (it  
didn't) :-)  We have to make a judgement as to whether we should  
spend effort on backwards compatibility or not.  Perhaps we're  
getting it wrong - so feedback from users is always valuable.


I appreciate that you want to make ghc compliant to the standard. But  
to be honest, it is still the case that ghc defines the de-facto  
standard of what a Haskell program can be, since many programs do  
employ one or more ghc-only extensions.


In the case of the layout bug, I think it might be worth considering  
going the other way: adjusting the standard with what ghc has always  
done. If I understand correctly, all my code using:


foo = do
  some computation
  trace I am here $ do
  some more computation

will break. I use this style of coding a lot to avoid too much  
indentation and thus I would have to enable this extension everywhere  
(and get warnings (or errors?) for older ghcs). Even if we had 2 or 3  
implementations of Haskell 2010 in a decade, then they might not have  
this extension. Furthermore, if they claim they actually do implement  
the layout extension then they still might get it wrong in some subtle  
way. An extension is never as well exercised as the non-extension part  
of the compiler. I therefore think that keeping the number of  
extensions to a minimum should be a high priority. It seems that the  
ghc team is going overboard with the amount of extensions and their  
granularity that I do not believe that there will ever be another  
compiler since implementing all these extensions is a nightmare. The  
road of may extensions is leading down the road that the Haskell  
standards aimed to avoid: having a single implementation defining what  
a Haskell program can be.


So, again, for this particular extension I suggest that the layout  
rule in the standard(s) should be revised -- if I'm mistaken, this  
will not break other programs.


Cheers,
Axel


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


Re: Release/git plans

2011-01-20 Thread Isaac Dupree

On 01/20/11 11:57, austin seipp wrote:

The GHC git repo that
we'll be using is here:

  http://darcs.haskell.org/ghc.git


This is an incredibly minor note in my opinion (that was brought up
before IIRC) but, isn't it a little strange for ghc's git repository
to exist on darcs.haskell.org? Not that it's a problem, just slightly
confusing I guess.


Yes, and the commits mailing-list is still called cvs-...@haskell.org. 
 The niceness of sounding right tends to be outweighed by the 
inconvenience of switching :)


-Isaac

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


Re: Release/git plans

2011-01-20 Thread austin seipp
Point taken, I personally think it's rather minor although it was
brought up before like I said, so perhaps others think differently.

Either way, I, for one, welcome our new version control overlord.

On Thu, Jan 20, 2011 at 3:09 PM, Isaac Dupree
m...@isaac.cedarswampstudios.org wrote:
 On 01/20/11 11:57, austin seipp wrote:

 The GHC git repo that
 we'll be using is here:

  http://darcs.haskell.org/ghc.git

 This is an incredibly minor note in my opinion (that was brought up
 before IIRC) but, isn't it a little strange for ghc's git repository
 to exist on darcs.haskell.org? Not that it's a problem, just slightly
 confusing I guess.

 Yes, and the commits mailing-list is still called cvs-...@haskell.org.
  The niceness of sounding right tends to be outweighed by the inconvenience
 of switching :)

 -Isaac

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




-- 
Regards,
Austin

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


Re: Release/git plans

2011-01-20 Thread Christian Höner zu Siederdissen
This is Haskell. One should abstract away the system used. Call it
vcs-ghc@ and vcs.haskell.org ;-)

Gruss,
Christian

* austin seipp a...@hacks.yi.org [20.01.2011 22:19]:
 Point taken, I personally think it's rather minor although it was
 brought up before like I said, so perhaps others think differently.
 
 Either way, I, for one, welcome our new version control overlord.
 
 On Thu, Jan 20, 2011 at 3:09 PM, Isaac Dupree
 m...@isaac.cedarswampstudios.org wrote:
  On 01/20/11 11:57, austin seipp wrote:
 
  The GHC git repo that
  we'll be using is here:
 
   http://darcs.haskell.org/ghc.git
 
  This is an incredibly minor note in my opinion (that was brought up
  before IIRC) but, isn't it a little strange for ghc's git repository
  to exist on darcs.haskell.org? Not that it's a problem, just slightly
  confusing I guess.
 
  Yes, and the commits mailing-list is still called cvs-...@haskell.org.
   The niceness of sounding right tends to be outweighed by the inconvenience
  of switching :)
 
  -Isaac
 
  ___
  Glasgow-haskell-users mailing list
  Glasgow-haskell-users@haskell.org
  http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
 
 
 
 
 -- 
 Regards,
 Austin
 
 ___
 Glasgow-haskell-users mailing list
 Glasgow-haskell-users@haskell.org
 http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


pgpncMFW5zZsL.pgp
Description: PGP signature
___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: backward compatibility

2011-01-20 Thread Ian Lynagh
On Thu, Jan 20, 2011 at 05:09:58PM -, Sittampalam, Ganesh wrote:
 
 From the point of view of darcs, which is usually trying to support 2 or 3 
 GHC versions at a time, one cycle of deprecation makes life a lot simpler. 
 We do look at warnings and try to fix them, but it's nicer not to have to do 
 so in a real hurry.

Note that in 2 of these cases (FlexibleInstances and BangPatterns), once
the package is fixed for 7.2 it will still work with older versions.
And actually, Cabal ought to accept NondecreasingIndentation (and do
nothing) for older GHCs too; I've just written a patch to fix that.

So these aren't changes where you need anything like ifdefs to support
both before and after.


Thanks
Ian


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


Re: backward compatibility

2011-01-20 Thread Ian Lynagh
On Thu, Jan 20, 2011 at 09:22:37PM +0100, Axel Simon wrote:

 In the case of the layout bug, I think it might be worth considering  
 going the other way: adjusting the standard with what ghc has always  
 done.

Anyone can propose language changes - the process is described here:
http://hackage.haskell.org/trac/haskell-prime/wiki/Process

 I therefore think that keeping the number of extensions 
 to a minimum should be a high priority. It seems that the ghc team is 
 going overboard with the amount of extensions and their granularity that 
 I do not believe that there will ever be another compiler since 
 implementing all these extensions is a nightmare. The road of may 
 extensions is leading down the road that the Haskell standards aimed to 
 avoid: having a single implementation defining what a Haskell program can 
 be.

I'm not sure if you're saying there should be fewer new language
features implemented, less fine-grained control over which are enabled,
or something else?


Thanks
Ian


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


Re: backward compatibility

2011-01-20 Thread Brandon S Allbery KF8NH
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

On 1/20/11 21:12 , Ian Lynagh wrote:
 On Thu, Jan 20, 2011 at 09:22:37PM +0100, Axel Simon wrote:
 I therefore think that keeping the number of extensions 
 to a minimum should be a high priority. It seems that the ghc team is 
 going overboard with the amount of extensions and their granularity that 
 I do not believe that there will ever be another compiler since 
 implementing all these extensions is a nightmare. The road of may 
 extensions is leading down the road that the Haskell standards aimed to 
 avoid: having a single implementation defining what a Haskell program can 
 be.
 
 I'm not sure if you're saying there should be fewer new language
 features implemented, less fine-grained control over which are enabled,
 or something else?

Many of the new features ought to be changes to the standard, not
individual language features that might or might not be implemented by
various compilers.

Less fine-grained control could be taken as a subset of this; consider that
Haskell2010 can be understood as Haskell98 + a number of language extensions
(or de-extensions in the case of n+k).

I think he has a good point:  having too many individual language features
significantly raises the bar for what other compilers need to at least
consider supporting.  Even if we don't necessarily change the official
standard, perhaps there should be standard packages of extensions which
compilers are encouraged to support even if they don't support fine-grained
extension control.

- -- 
brandon s. allbery [linux,solaris,freebsd,perl]  allb...@kf8nh.com
system administrator  [openafs,heimdal,too many hats]  allb...@ece.cmu.edu
electrical and computer engineering, carnegie mellon university  KF8NH
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.11 (Darwin)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAk05BEcACgkQIn7hlCsL25VBnwCfT9nCZ5eLs4oJ3jUFHf3Tl8o1
7DwAnicvaNk6XuT0H1pZbaotzjKGoP+/
=vqzt
-END PGP SIGNATURE-

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


Re: backward compatibility

2011-01-20 Thread Axel Simon


On 21.01.2011, at 03:12, Ian Lynagh wrote:


On Thu, Jan 20, 2011 at 09:22:37PM +0100, Axel Simon wrote:


In the case of the layout bug, I think it might be worth  
considering

going the other way: adjusting the standard with what ghc has always
done.


Anyone can propose language changes - the process is described here:
   http://hackage.haskell.org/trac/haskell-prime/wiki/Process


I therefore think that keeping the number of extensions
to a minimum should be a high priority. It seems that the ghc team is
going overboard with the amount of extensions and their granularity  
that

I do not believe that there will ever be another compiler since
implementing all these extensions is a nightmare. The road of may
extensions is leading down the road that the Haskell standards  
aimed to
avoid: having a single implementation defining what a Haskell  
program can

be.


I'm not sure if you're saying there should be fewer new language
features implemented, less fine-grained control over which are  
enabled,

or something else?



I agree that new language features is required to make Haskell a  
research platform. So it would be awkward to try to stop people from  
adding new language features. I don't mind if highly experimental  
language features come in many varieties (i.e. with fine-grained  
control about what is allowed).


I'm more concerned about standard extensions that many (even most)  
people use somewhere in their projects. I get the feeling that these  
get split up into too many individual language features which will  
make it difficult for other compilers to implement the extension and  
the switched-off extension correctly. Haskell 2010 is going into the  
right direction in making some of these features mandatory which means  
that they become language features that you can't switch them off  
anymore. This makes it more likely that future compilers can implement  
a comprehensive Haskell language. So yes, less fine-grained control  
for features people use often.


The layout rule seems to be one extension that can go into the report  
(both 98 and 2010) without breaking any program. If this is really so,  
then I think it is easiest for compiler writer and users if such a  
change is made to the report. I think only very few language features  
qualify for going directly into the reports since most of them can  
break programs.


Hope this clarifies my opinion,

Cheers,
Axel



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