Re: Offering GHC builder build slaves

2014-04-09 Thread Karel Gardas

On 04/ 9/14 03:41 AM, Alain O'Dea wrote:

-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

On 14-04-08 08:17 PM, Karel Gardas wrote:

On 04/ 8/14 03:16 PM, Alain O'Dea wrote:

The two build slaves I intend to run are: - x86_64 Solaris (on
SmartOS)


Please name it smartos-x86 then. I'm running real Solaris 11.1 as
a builder here so let's make it different name builder and see if
there are any incompatibilities between those two (I hope still
very close) platforms.

BTW: what's your platform triple detected by config.guess?

Thanks! Karel


Hi Karel,

My platform triple detected by config.guess is:
x86_64-unknown-solaris2

I got that by running `cat config.status | grep TargetPlatformFull`.


Hi Alain,

hmm, that's after GHC own platform processing is done, but what does

sh config.guess

tells you? E.g. on my two Solaris 11 I get:

$ sh config.guess
i386-pc-solaris2.11

$ sh config.guess
sparc-sun-solaris2.11

BTW: also if you are building GHC on AMD64/Solaris/err/SmartOS, then I 
think Christian (cced) may be interested as he is currently working on 
cross-compiling from i386/Solaris to AMD64/Solaris and he is hit by some 
bugs along the way. So if you do have already binary for GHC on that, 
then perhaps it'll work on Solaris too...


You may wonder why I'm so picky about Solaris, but I've just been hit on 
Solaris 10 by bugs (in linker) which are not presented on Solaris 11 so 
in the past I needed to switch off shared libs on Solaris 10 and keep 
this functionality on Solaris 11 so I'm curious what third member to 
Solaris family will bring here. I hope SmartOS is still more closer to 
Solaris 11 than Solaris 10 thanks to its roots in OpenSolaris project...


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


Re: 7.8.1 plan

2014-04-09 Thread Karel Gardas


Hi Pavel,

I've too built binary dist for Solaris 11 and Solaris 10. The advantage 
of Solaris 11 build is that it supports shared libs and is built using 
system provided gmp and ffi libs.


Solaris 2.10:
https://app.box.com/s/s1bysqga0x5f3itysu7g
https://app.box.com/s/fbfki0szetnp4pghpeuk

Solaris 2.11:
https://app.box.com/s/zstci63pt10t4yix74s8
https://app.box.com/s/9375dyx8hwu9cnox2lgi

The first link is binary tarball while the second is sha256.

Karel

On 04/ 9/14 07:31 AM, Pavel Ryzhov wrote:

Hi,

I made Solaris 11 x86 bindist. It seems to be working fine. I will try
to make IPS package later than.

https://s3-eu-west-1.amazonaws.com/ghc-paulrz/ghc-7.8.1-i386-unknown-solaris2.tar.bz2
sha256: 268b91eee42aa1f100062857416a4b69045bbb36fca9fafd6fb7adb8db8bc6b2

Regards,
Pavel Ryzhov

On 08 Apr 2014, at 21:39, Carter Schonwald carter.schonw...@gmail.com
mailto:carter.schonw...@gmail.com wrote:


ok, did a sha256 on my bindist
98ab924806a8af6ffde5365be64eb5fb826a38d3827ac31720cc89542f235592 for
https://s3.amazonaws.com/wellposed.com/opensource/ghc/releaseBuilds-unofficial/ghc-7.8.1-x86_64-apple-darwin.tar.bz2


On Tue, Apr 8, 2014 at 1:17 PM, Páli Gábor János pali.ga...@gmail.com
mailto:pali.ga...@gmail.com wrote:

2014-04-08 15:28 GMT+02:00 Austin Seipp aus...@well-typed.com
mailto:aus...@well-typed.com:
 Feel free to make builds - I'll add them as they come in and will
 announce soon...

The FreeBSD builds are now available, along with the respective SHA256
sums and the updated README file, as usual:

http://haskell.inf.elte.hu/ghc/ghc-7.8.1-i386-portbld-freebsd.tar.bz2
http://haskell.inf.elte.hu/ghc/ghc-7.8.1-x86_64-portbld-freebsd.tar.bz2
http://haskell.inf.elte.hu/ghc/SHA256SUMS
http://haskell.inf.elte.hu/ghc/README.html
___
ghc-devs mailing list
ghc-devs@haskell.org mailto:ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs


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




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


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


Re: 7.8.1 plan

2014-04-09 Thread Karel Gardas


Hi Jens,

Ben Gamari (cced) documented it well here: 
http://bgamari.github.io/posts/2014-03-06-compiling-ghc-7.8-on-arm.html


Looks like the issue is caused by binutils' linker while fixed in gold.

Cheers,
Karel


On 04/ 9/14 10:21 AM, Jens Petersen wrote:

dll-split: internal error: evacuate(static): strange closure type 0
 (GHC version 7.8.1 for arm_unknown_linux)
 Please report this as a GHC bug:
http://www.haskell.org/ghc/reportabug
make[1]: *** [compiler/stage2/dll-split.stamp] Aborted

See http://koji.fedoraproject.org/koji/taskinfo?taskID=6719940 for
the full build.log, etc.
I reproduced this two times now. RC2 built okay on ARM so I am not
sure what changed.


I tested and this also happens on Fedora 20 ARM [1] so I now doubt it
could be due to any recent changes in Fedora devel (Rawhide).
I filed https://ghc.haskell.org/trac/ghc/ticket/8976.

Anyway I suppose it may be too late to fix for the 7.8.1 release but
hopefully soon for 7.8.2.

Jens

[1] http://koji.fedoraproject.org/koji/taskinfo?taskID=6720188


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


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


Avoiding bumping the major version of base in every release

2014-04-09 Thread Johan Tibell
Hi!

Bumping the major version number of base creates a bunch of work for
package maintainers. Some times this work is justified, when there were
actual non-backwards compatible API changes and maintainers need to fix
their code. Often the work is busy work, as there were no real breakages
and maintainers need to update their version bounds and make a new release.

When bumps to the major version leads to busy work, maintainers often
express a desire to get rid of version bounds altogether. While that might
be a natural reaction, I don't think that's actually a good idea and it
will lead to more breakages in the end*.

All this is to say, we should try to avoid major version bumps to base.
Here's my suggestion

*Short term*

   - Make sure we only bump the major version number when we actually make
   a breaking change. We don't need to bump base because the major GHC version
   number changed.
   - Try harder to not make breaking changes. Breaking changes has a very
   high cost to users and are seldom worth it to them. For example, avoid
   renaming functions just because the new name feels cleaner. Just add a new
   function and have the old function call the new function. All successful
   languages do this.

*Medium term*

   - Break up base a bit. There are several other good reasons to do this,
   but having a monolithic base means that breaking changes to the most
   obscure modules cause a major version bump for the package as a whole.

* But in the case of missing upper bounds, the breakages and extra work
falls on the users of libraries, not on their maintainers. That's really
bad as the users are not really in a position to deal with the breakages.

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


Re: Offering GHC builder build slaves

2014-04-09 Thread Alain O'Dea
 On Apr 9, 2014, at 8:36, Karel Gardas karel.gar...@centrum.cz wrote:
 
 On 04/ 9/14 03:41 AM, Alain O'Dea wrote:
 -BEGIN PGP SIGNED MESSAGE-
 Hash: SHA1
 
 On 14-04-08 08:17 PM, Karel Gardas wrote:
 On 04/ 8/14 03:16 PM, Alain O'Dea wrote:
 The two build slaves I intend to run are: - x86_64 Solaris (on
 SmartOS)
 
 Please name it smartos-x86 then. I'm running real Solaris 11.1 as
 a builder here so let's make it different name builder and see if
 there are any incompatibilities between those two (I hope still
 very close) platforms.
 
 BTW: what's your platform triple detected by config.guess?
 
 Thanks! Karel
 
 Hi Karel,
 
 My platform triple detected by config.guess is:
 x86_64-unknown-solaris2
 
 I got that by running `cat config.status | grep TargetPlatformFull`.
 
 Hi Alain,
 
 hmm, that's after GHC own platform processing is done, but what does
 
 sh config.guess
 
 tells you? E.g. on my two Solaris 11 I get:
 
 $ sh config.guess
 i386-pc-solaris2.11
 
 $ sh config.guess
 sparc-sun-solaris2.11

Ah.  I'll have to send that later today.

 BTW: also if you are building GHC on AMD64/Solaris/err/SmartOS, then I think 
 Christian (cced) may be interested as he is currently working on 
 cross-compiling from i386/Solaris to AMD64/Solaris and he is hit by some bugs 
 along the way. So if you do have already binary for GHC on that, then perhaps 
 it'll work on Solaris too...

Christian, the SmartOS GHC binaries should work unmodified on Solaris 10 and 
11.  Both 32- and 64-bit GHC 7.6.3 are available in SmartOS PKGSRC.  I have 
successfully used them as bootstrap for GHC 7.8.  The binaries should be 
separable.  I can get the build details if desired.

 You may wonder why I'm so picky about Solaris, but I've just been hit on 
 Solaris 10 by bugs (in linker) which are not presented on Solaris 11 so in 
 the past I needed to switch off shared libs on Solaris 10 and keep this 
 functionality on Solaris 11 so I'm curious what third member to Solaris 
 family will bring here.

It seems SmartOS builds GHC 7.8 cleanly without patches.  There are some test 
failures which I'm working on.

 I hope SmartOS is still more closer to Solaris 11 than Solaris 10 thanks to 
 its roots in OpenSolaris project...

SmartOS is an Illumos distro (like Ubuntu is to Linux).  Illumos is descended 
directly from the last public commit of OpenSolaris 10 (grr Oracle).

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


Re: Avoiding bumping the major version of base in every release

2014-04-09 Thread Johan Tibell
I just noticed that 7.8.1 bumps the major version of base, but I can't see
any breaking changes in the release notes:
http://www.haskell.org/ghc/docs/7.8.1-rc2/html/users_guide/release-7-8-1.html


On Wed, Apr 9, 2014 at 12:00 PM, Johan Tibell johan.tib...@gmail.comwrote:

 Hi!

 Bumping the major version number of base creates a bunch of work for
 package maintainers. Some times this work is justified, when there were
 actual non-backwards compatible API changes and maintainers need to fix
 their code. Often the work is busy work, as there were no real breakages
 and maintainers need to update their version bounds and make a new release.

 When bumps to the major version leads to busy work, maintainers often
 express a desire to get rid of version bounds altogether. While that might
 be a natural reaction, I don't think that's actually a good idea and it
 will lead to more breakages in the end*.

 All this is to say, we should try to avoid major version bumps to base.
 Here's my suggestion

 *Short term*

- Make sure we only bump the major version number when we actually
make a breaking change. We don't need to bump base because the major GHC
version number changed.
- Try harder to not make breaking changes. Breaking changes has a very
high cost to users and are seldom worth it to them. For example, avoid
renaming functions just because the new name feels cleaner. Just add a new
function and have the old function call the new function. All successful
languages do this.

 *Medium term*

- Break up base a bit. There are several other good reasons to do
this, but having a monolithic base means that breaking changes to the most
obscure modules cause a major version bump for the package as a whole.

 * But in the case of missing upper bounds, the breakages and extra work
 falls on the users of libraries, not on their maintainers. That's really
 bad as the users are not really in a position to deal with the breakages.

 -- Johan


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


Re: Avoiding bumping the major version of base in every release

2014-04-09 Thread Herbert Valerio Riedel
On 2014-04-09 at 12:00:36 +0200, Johan Tibell wrote:

[...]

 All this is to say, we should try to avoid major version bumps to base.
 Here's my suggestion

 *Short term*

- Make sure we only bump the major version number when we actually make
a breaking change. We don't need to bump base because the major GHC version
number changed.

Fwiw, I did go over the changes in base-4.7.0.0 when I compiled the
changelog to check whether the major bump was justified; but since a
couple of deprecated functions where removed, several new typeclass
instances were added (however, this isn't a justification anymore), the
rather disruptive Typeable change occured, as well as the PrimBool
changes (which may leak into the API exposed by base) I believed it was
well justified.

- Try harder to not make breaking changes. Breaking changes has a very
high cost to users and are seldom worth it to them. For example, avoid
renaming functions just because the new name feels cleaner. Just add a new
function and have the old function call the new function. All successful
languages do this.

Aren't we already following this practice in base?

 *Medium term*

- Break up base a bit. There are several other good reasons to do this,
but having a monolithic base means that breaking changes to the most
obscure modules cause a major version bump for the package as a whole.

 * But in the case of missing upper bounds, the breakages and extra work
 falls on the users of libraries, not on their maintainers. That's really
 bad as the users are not really in a position to deal with the breakages.

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


Re: Avoiding bumping the major version of base in every release

2014-04-09 Thread Johan Tibell
On Wed, Apr 9, 2014 at 2:17 PM, Herbert Valerio Riedel
hvrie...@gmail.comwrote:

 On 2014-04-09 at 12:00:36 +0200, Johan Tibell wrote:
  *Short term*
 
 - Make sure we only bump the major version number when we actually
 make
 a breaking change. We don't need to bump base because the major GHC
 version
 number changed.

 Fwiw, I did go over the changes in base-4.7.0.0 when I compiled the
 changelog to check whether the major bump was justified; but since a
 couple of deprecated functions where removed, several new typeclass
 instances were added (however, this isn't a justification anymore), the
 rather disruptive Typeable change occured, as well as the PrimBool
 changes (which may leak into the API exposed by base) I believed it was
 well justified.


I wasn't aware there was a more detailed changelog. Thanks for pointing it
out. I just wanted to make sure we're all on the same page here.


 - Try harder to not make breaking changes. Breaking changes has a very
 high cost to users and are seldom worth it to them. For example, avoid
 renaming functions just because the new name feels cleaner. Just add
 a new
 function and have the old function call the new function. All
 successful
 languages do this.

 Aren't we already following this practice in base?


I am and I'm hoping others are too. Since hope is not a strategy I just
thought I'd spell it out to make sure we all agree.

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


Re: Avoiding bumping the major version of base in every release

2014-04-09 Thread Herbert Valerio Riedel
On 2014-04-09 at 14:51:48 +0200, Johan Tibell wrote:

[...]

 Fwiw, I did go over the changes in base-4.7.0.0 when I compiled the
 changelog to check whether the major bump was justified; but since a
 couple of deprecated functions where removed, several new typeclass
 instances were added (however, this isn't a justification anymore), the
 rather disruptive Typeable change occured, as well as the PrimBool
 changes (which may leak into the API exposed by base) I believed it was
 well justified.


 I wasn't aware there was a more detailed changelog. Thanks for pointing it
 out. I just wanted to make sure we're all on the same page here.

Oh, and btw, here's also a somewhat older API delta (which is only as
accurate as the hoogle txt files generated -- i.e. take it with a grain
of salt) I generated some time ago:

  https://gist.github.com/hvr/6648575
___
ghc-devs mailing list
ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs


Re: Backward-compatible role annotations

2014-04-09 Thread Richard Eisenberg
We indeed had unexported internal coercions as a desideratum during the 
design process, but we didn't have a specific use case and it didn't mesh with 
our eventual decision to use class instances. Now that the whole thing is 
implemented, Coercible instances are actually fully magical inside of GHC. 
Thus, there would be nothing especially difficult, from an implementation 
standpoint, of adding the feature described below in a later release. There is 
always the niggling issue of concrete syntax. So, if you (or others) hit upon a 
nice, real use case desiring this feature and want to come up with a design, 
please propose it! I do think it would likely be easy to make happen.

Richard

On Apr 8, 2014, at 10:28 PM, Isaac Dupree m...@isaac.cedarswampstudios.org 
wrote:

 I've been wondering whether there are any cases where the ability to coerce a 
 parameter should not be exported (as for Set) but where the implementation 
 would like to use some coercions (for example, if it internally wanted to 
 coerce the contained type to a specific newtype, to change some of the 
 contained type's instances while being able to guarantee that the 
 invariant-related instances stayed safe).
 
 This would call for coercibility to be something you can import and export.  
 What if, in the long term, there were a flag ExplicitRoleExports (probably 
 rarely used):
 
 - with ExplicitRoleExports on, role signatures would be listed in the export 
 list and must be at least as restrictive as the roles visible within the 
 module.  Exported types without role signatures in the export list would 
 default to being exported as all-nominal.
 
 - with ExplicitRoleExports off, any types the modules export would be 
 exported with the same roles visible inside the module.
 
 As is currently, the default role at a type's definition site would allow as 
 many coercions as is segfault-safe.
 
 -Isaac
 
 P.S. I think this particular proposal likely has issues.  If you import (T :: 
 * - * - *) as nominal, representational and from elsewhere as 
 representational, nominal, do those roles combine somehow?  What about 
 contravariant [or is it covariant] roles as in (T :: (* - *) - *)?  I 
 haven't thought these through.  Also I haven't thought of any concrete use 
 cases for export-controlled roles; perhaps there aren't any.
 
 
 On 03/31/2014 02:12 PM, Dominique Devriese wrote:
 Richard,
 
 Right, but I was thinking about the debate between
 nominal/non-parametric-by-default or
 representational/parametric-by-default for parameters of data types
 that aren't forced to nominal from inspecting the datatype
 implementation.  As I understand it, representational-by-default
 (currently used) may leave libraries that don't add role annotations
 open for abuse, but won't unnecessarily break library users' code and
 nominal-by-default prevents all abuse but may unnecessarily break code
 that uses libraries that have not added proper role annotations.
 
 What I was wondering about is if the dilemma could be solved by
 choosing nominal-by-default in the long term for the role inference
 (so that library writers cannot accidentally leave abstraction holes
 open by forgetting to add role annotations) and use them in the
 long-term-supported SafeNewtypeDeriving extension, but provide a
 deprecated not-quite-as-safe GND extension for helping out users of
 libraries that have not yet added role annotations. I would fancy that
 this not-quite-as-safe GND could use unsafeCoerce wherever the safe
 one would give an error about annotated roles.
 
 Regards,
 Dominique
 
 2014-03-31 17:05 GMT+02:00 Richard Eisenberg e...@cis.upenn.edu:
 Hi Dominique,
 
 When implementing roles, I was indeed worried about the problem you're 
 addressing: that code that previously worked with GND now won't. However, 
 it turns out that few people have really complained about this. IIRC, in 
 all of Hackage, only 3 packages needed to be changed because of this. If 
 there were a larger impact to the GND breakage, I think your suggestion 
 would be a good one.
 
 The problem I'm adressing in this thread is different: that library authors 
 have been given a new, not-backward-compatible way of preventing abuses of 
 their datatypes, and no proposal I have seen really addresses all of the 
 problems here. I'm hoping my no-role-annots package might be helpful, but 
 it doesn't fully resolve the issues.
 
 Richard
 
 On Mar 31, 2014, at 2:51 AM, Dominique Devriese 
 dominique.devri...@cs.kuleuven.be wrote:
 
 Richard,
 
 (re-posting because I first used an address that is not subscribed to the 
 lists)
 
 I've been wondering about the following: it seems like the main
 problem in this situation is that the GeneralizedNewtypeDeriving
 extension changed meaning from just coerce everything while deriving
 to only coerce stuff if it's allowed by the relevant role
 annotations.  Would it not be an alternative solution to split up the
 GND extension into
 
 * a backwards-compatible one 

Re: 7.8.1 plan

2014-04-09 Thread Pavel Ryzhov
Hi Karel,

That is great! 

Do you know if there any plans for 64-bit build of GHC for Solaris 11?

Regards,
Pavel

On 09 Apr 2014, at 10:49, Karel Gardas karel.gar...@centrum.cz wrote:

 
 Hi Pavel,
 
 I've too built binary dist for Solaris 11 and Solaris 10. The advantage of 
 Solaris 11 build is that it supports shared libs and is built using system 
 provided gmp and ffi libs.
 
 Solaris 2.10:
 https://app.box.com/s/s1bysqga0x5f3itysu7g
 https://app.box.com/s/fbfki0szetnp4pghpeuk
 
 Solaris 2.11:
 https://app.box.com/s/zstci63pt10t4yix74s8
 https://app.box.com/s/9375dyx8hwu9cnox2lgi
 
 The first link is binary tarball while the second is sha256.
 
 Karel
 
 On 04/ 9/14 07:31 AM, Pavel Ryzhov wrote:
 Hi,
 
 I made Solaris 11 x86 bindist. It seems to be working fine. I will try
 to make IPS package later than.
 
 https://s3-eu-west-1.amazonaws.com/ghc-paulrz/ghc-7.8.1-i386-unknown-solaris2.tar.bz2
 sha256: 268b91eee42aa1f100062857416a4b69045bbb36fca9fafd6fb7adb8db8bc6b2
 
 Regards,
 Pavel Ryzhov
 
 On 08 Apr 2014, at 21:39, Carter Schonwald carter.schonw...@gmail.com
 mailto:carter.schonw...@gmail.com wrote:
 
 ok, did a sha256 on my bindist
 98ab924806a8af6ffde5365be64eb5fb826a38d3827ac31720cc89542f235592 for
 https://s3.amazonaws.com/wellposed.com/opensource/ghc/releaseBuilds-unofficial/ghc-7.8.1-x86_64-apple-darwin.tar.bz2
 
 
 On Tue, Apr 8, 2014 at 1:17 PM, Páli Gábor János pali.ga...@gmail.com
 mailto:pali.ga...@gmail.com wrote:
 
2014-04-08 15:28 GMT+02:00 Austin Seipp aus...@well-typed.com
mailto:aus...@well-typed.com:
 Feel free to make builds - I'll add them as they come in and will
 announce soon...
 
The FreeBSD builds are now available, along with the respective SHA256
sums and the updated README file, as usual:
 
http://haskell.inf.elte.hu/ghc/ghc-7.8.1-i386-portbld-freebsd.tar.bz2
http://haskell.inf.elte.hu/ghc/ghc-7.8.1-x86_64-portbld-freebsd.tar.bz2
http://haskell.inf.elte.hu/ghc/SHA256SUMS
http://haskell.inf.elte.hu/ghc/README.html
___
ghc-devs mailing list
ghc-devs@haskell.org mailto:ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs
 
 
 ___
 ghc-devs mailing list
 ghc-devs@haskell.org mailto:ghc-devs@haskell.org
 http://www.haskell.org/mailman/listinfo/ghc-devs
 
 
 
 ___
 ghc-devs mailing list
 ghc-devs@haskell.org
 http://www.haskell.org/mailman/listinfo/ghc-devs
 



signature.asc
Description: Message signed with OpenPGP using GPGMail
___
ghc-devs mailing list
ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs


RE: Avoiding bumping the major version of base in every release

2014-04-09 Thread Simon Peyton Jones
Sounds reasonable to me, but I'm fwding this to the Core Libraries committee, 
who are in charge of all this.

On the question of breaking up 'base', see 
https://ghc.haskell.org/trac/ghc/wiki/SplitBase, which seems stalled for lack 
of anyone willing to take up the cudgels.

Simon

From: ghc-devs [mailto:ghc-devs-boun...@haskell.org] On Behalf Of Johan Tibell
Sent: 09 April 2014 11:01
To: ghc-devs@haskell.org
Subject: Avoiding bumping the major version of base in every release

Hi!

Bumping the major version number of base creates a bunch of work for package 
maintainers. Some times this work is justified, when there were actual 
non-backwards compatible API changes and maintainers need to fix their code. 
Often the work is busy work, as there were no real breakages and maintainers 
need to update their version bounds and make a new release.

When bumps to the major version leads to busy work, maintainers often express a 
desire to get rid of version bounds altogether. While that might be a natural 
reaction, I don't think that's actually a good idea and it will lead to more 
breakages in the end*.

All this is to say, we should try to avoid major version bumps to base. Here's 
my suggestion

Short term

  *   Make sure we only bump the major version number when we actually make a 
breaking change. We don't need to bump base because the major GHC version 
number changed.
  *   Try harder to not make breaking changes. Breaking changes has a very high 
cost to users and are seldom worth it to them. For example, avoid renaming 
functions just because the new name feels cleaner. Just add a new function and 
have the old function call the new function. All successful languages do this.
Medium term

  *   Break up base a bit. There are several other good reasons to do this, but 
having a monolithic base means that breaking changes to the most obscure 
modules cause a major version bump for the package as a whole.
* But in the case of missing upper bounds, the breakages and extra work falls 
on the users of libraries, not on their maintainers. That's really bad as the 
users are not really in a position to deal with the breakages.

-- Johan

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


Re: [core libraries] RE: Avoiding bumping the major version of base in every release

2014-04-09 Thread Edward Kmett
The current plan with breaking up base is mostly to push it out until we
get the lower hanging fruit out of the way for 7.10, and to start moving
forward more aggressively on that around 7.12.

Back at ICFP we made the call to more or less take greater ownership of
base upon the release of 7.8. Given the release timeline that was perhaps,
in hindsight, a mistake, as it drained a lot of momentum.

That said, now that 7.8 is out the door we can at least get started on the
Foldable/Traversable/Applicative/Monoid changes and AMP.

The orginal plan, and one that I think is still a good plan going forward,
is that the changes for 7.10 should be done in such a way that most users
can work around them all without CPP at all, and just enjoy the greater
flexibility of Foldable/Traversable/Applicative/Monoid in Prelude. I think
the major things broken by those inclusions are  and $ in the pretty
printing libraries, which could hide two symbols, and a boatload of
redundant import warnings.

Almost any serious stab at breaking up base to meet the demands of the
javascript crowd, one of the two major reasons for breaking up base, is
going to cause some serious challenges for the very makeup of the Prelude
we export today. I'm all for doing splitting up base, but it is definitely
stalled for a reason, and I think that given the scope of work in just
modernizing the Prelude, we've got a lot bitten off already for this coming
year in 7.10.

Beyond that, one potentially viable plan is to break it up in phases -- if
the more invasive changes needed to make the ghcjs/haste crowd can't
converge for 7.12 we could at least start splintering off some parts of
base that don't feed into the Prelude. That would let us better meet
Johan's goal of an eventually more stable base version number as those
things at the fringes of base are the kinds of thing that iterate quickly,
but very little of the Prelude itself changes from release to release --
although, 7.10 will be a rather large exception in that regard.

-Edward






On Wed, Apr 9, 2014 at 4:50 PM, Simon Peyton Jones simo...@microsoft.comwrote:

  Sounds reasonable to me, but I’m fwding this to the Core Libraries
 committee, who are in charge of all this.



 On the question of breaking up ‘base’, see
 https://ghc.haskell.org/trac/ghc/wiki/SplitBase, which seems stalled for
 lack of anyone willing to take up the cudgels.



 Simon



 *From:* ghc-devs [mailto:ghc-devs-boun...@haskell.org] *On Behalf Of *Johan
 Tibell
 *Sent:* 09 April 2014 11:01
 *To:* ghc-devs@haskell.org
 *Subject:* Avoiding bumping the major version of base in every release



 Hi!



 Bumping the major version number of base creates a bunch of work for
 package maintainers. Some times this work is justified, when there were
 actual non-backwards compatible API changes and maintainers need to fix
 their code. Often the work is busy work, as there were no real breakages
 and maintainers need to update their version bounds and make a new release.



 When bumps to the major version leads to busy work, maintainers often
 express a desire to get rid of version bounds altogether. While that might
 be a natural reaction, I don't think that's actually a good idea and it
 will lead to more breakages in the end*.



 All this is to say, we should try to avoid major version bumps to base.
 Here's my suggestion



 *Short term*

- Make sure we only bump the major version number when we actually
make a breaking change. We don't need to bump base because the major GHC
version number changed.
- Try harder to not make breaking changes. Breaking changes has a very
high cost to users and are seldom worth it to them. For example, avoid
renaming functions just because the new name feels cleaner. Just add a new
function and have the old function call the new function. All successful
languages do this.

  *Medium term*

- Break up base a bit. There are several other good reasons to do
this, but having a monolithic base means that breaking changes to the most
obscure modules cause a major version bump for the package as a whole.

  * But in the case of missing upper bounds, the breakages and extra work
 falls on the users of libraries, not on their maintainers. That's really
 bad as the users are not really in a position to deal with the breakages.



 -- Johan



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

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


Re: Offering GHC builder build slaves

2014-04-09 Thread Páli Gábor János
2014-04-09 0:25 GMT+02:00 Lyndon Nerenberg lyn...@orthanc.ca:
 Is there any way to verify that builder-client can actually do a successful 
 build,
 without having access to the build system server?  'builder-client --do-build'
 wants to connect and authenticate first; it would be helpful if there was a 
 way
 to bypass that so that I can first verify the local build environment is sane.

This is because the builder client gets the commands to be executed
from the server.  A naive solution would be to put the commands in the
script and run it.

You can find the current set of installed commands at one of the
active builders page, e.g. [1].  Note that you may have to change some
of them, such as the flags passed to configure script and name of the
make(1) command.

[1] http://haskell.inf.elte.hu/builders/solaris-x86-head/23.html
___
ghc-devs mailing list
ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs


Re: ghc-7.8-rc2 in -O2 mode eats all stack and RAM on pandoc-citeproc / highlighting-kate

2014-04-09 Thread Sergei Trofimovich
On Fri, 4 Apr 2014 16:19:48 +
Simon Peyton Jones simo...@microsoft.com wrote:

Filed the reproducer as a new ticket:
https://ghc.haskell.org/trac/ghc/ticket/8980

[ Looks like highlighting-kate asks to be added to
  compiler performance benchmarks (are there such ones?)
  It tends to stress ghc all the time:
http://hackage.haskell.org/trac/ghc/ticket/3664
] 

Thanks!

 Sergei
 
 SpecConstr is too aggressive: it sometimes blows up the program badly and we 
 have no good solution.  See Trac #7898, #7068, #7944, #5550, #8836.
 
 I notice that the latter three are actually fixed in 7.8, so worth trying 
 that.  If it still fails, do add instructions to reproduce to one of the 
 above open tickets, or make a new one.
 
 
 Amos Robinson (cc'd) was working on this problem, but I have not heard 
 anything recently.
 
 It surely ought to be possible to throttle it a bit so that it stops before 
 generating too vast a program.
 
 Meanwhile you can use -fno-spec-constr to simply switch it off for offending 
 modules.  That should get you going.  

 Simon
 
 | -Original Message-
 | From: ghc-devs [mailto:ghc-devs-boun...@haskell.org] On Behalf Of
 | Sergei Trofimovich
 | Sent: 03 April 2014 21:20
 | To: ghc-devs@haskell.org
 | Subject: Re: ghc-7.8-rc2 in -O2 mode eats all stack and RAM on pandoc-
 | citeproc / highlighting-kate
 | 
 | On Sat, 22 Mar 2014 22:21:42 +0300
 | Sergei Trofimovich sly...@gmail.com wrote:
 | 
 |  Hello!
 | 
 |  I have noticed the problem in ghc-7.6.3 first when tried to build all
 |  haskell userland with -O2 opt level.
 | 
 |  It led to amazing bugs!
 | 
 |  Here is one of those (highlighting-kate hackage package):
 |   [281 of 452] Compiling Text.Highlighting.Kate.Syntax.Asp (
 |   highlighting-kate-0.5.6.1/Text/Highlighting/Kate/Syntax/Asp.hs,
 |   highlighting-kate-0.5.6.1/Text/Highlighting/Kate/Syntax/Asp.o )
 |   stack overflow: use +RTS -Ksize to increase it
 | 
 |  How to reproduce it:
 |  1. Download a bundled file (6.6MB):
 | 
 |  http://code.haskell.org/~slyfox/selfcontained-eater-ghc-7.8-
 | rc2.tar.gz
 |  2. Unpack and run there:
 |./mk.sh
 | 
 |  The script is designed to plug any built ghc version w/o external
 | depends.
 | 
 |  Command will fail as:
 |  $ ./mk.sh
 |  ...
 |  [281 of 452] Compiling Text.Highlighting.Kate.Syntax.Asp (
 | highlighting-kate-0.5.6.1/Text/Highlighting/Kate/Syntax/Asp.hs,
 | highlighting-kate-0.5.6.1/Text/Highlighting/Kate/Syntax/Asp.o )
 |  stack overflow: use +RTS -Ksize to increase it
 | 
 |  On ghc-7.6.3 it will progress a bit more: down to 452 file and will
 |  crash there similar way.
 | 
 |  I've 'cabal unpack'-ed all sources and configured/de-.hsc-ed them
 |  manually/added needed -DWhatever / added {-# LANGUAGE CPP #-} around.
 |  Nothing else.
 | 
 |  It's very hard to shrink such large thing manually down to 2-3 files.
 |  Would be cool if ghc (and cabal) would be able to spit something
 |  self-sufficient (like 'gcc -i' does) for devs to reproduce.
 | 
 |  Adding '-v' shows such log:
 |  ...
 |  *** Simplifier:
 |  Result size of Simplifier iteration=1
 |= {terms: 21,973, types: 21,838, coercions: 1,842}
 |  Result size of Simplifier iteration=2
 |= {terms: 21,952, types: 21,819, coercions: 1,842}
 |  Result size of Simplifier
 |= {terms: 21,950, types: 21,817, coercions: 1,842}
 |  *** SpecConstr:
 |  Result size of SpecConstr***CRASH
 | 
 | Nobody interested? Is it too scary?
 | 
 | Such inliner blowups are hard to shrink down from real examples down to
 | toy ones. I could try to but I need a bit of guidance.
 | 
 | Maybe you need only an intermediate core step right before an OOM,
 | whatever?

-- 

  Sergei


signature.asc
Description: PGP signature
___
ghc-devs mailing list
ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs


Re: Offering GHC builder build slaves

2014-04-09 Thread Alain O'Dea
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

On 14-04-09 11:49 AM, Alain O'Dea wrote:
 On Apr 9, 2014, at 8:36, Karel Gardas karel.gar...@centrum.cz
 wrote:
 
 On 04/ 9/14 03:41 AM, Alain O'Dea wrote: -BEGIN PGP SIGNED
 MESSAGE- Hash: SHA1
 
 On 14-04-08 08:17 PM, Karel Gardas wrote:
 On 04/ 8/14 03:16 PM, Alain O'Dea wrote: The two build
 slaves I intend to run are: - x86_64 Solaris (on SmartOS)
 
 Please name it smartos-x86 then. I'm running real Solaris
 11.1 as a builder here so let's make it different name
 builder and see if there are any incompatibilities between
 those two (I hope still very close) platforms.
 
 BTW: what's your platform triple detected by config.guess?
 
 Thanks! Karel
 
 Hi Karel,
 
 My platform triple detected by config.guess is: 
 x86_64-unknown-solaris2
 
 I got that by running `cat config.status | grep
 TargetPlatformFull`.
 
 Hi Alain,
 
 hmm, that's after GHC own platform processing is done, but what
 does
 
 sh config.guess
 
 tells you? E.g. on my two Solaris 11 I get:
 
 $ sh config.guess i386-pc-solaris2.11
 
 $ sh config.guess sparc-sun-solaris2.11

Karel, I think I finally have what you were looking for:

x86_64-pc-solaris2.11
i386-pc-solaris2.11

Gábor sent me usernames and passwords for my builders and I'm in the
process of setting those up now.

 
 Ah.  I'll have to send that later today.
 
 BTW: also if you are building GHC on AMD64/Solaris/err/SmartOS,
 then I think Christian (cced) may be interested as he is
 currently working on cross-compiling from i386/Solaris to
 AMD64/Solaris and he is hit by some bugs along the way. So if you
 do have already binary for GHC on that, then perhaps it'll work
 on Solaris too...
 
 Christian, the SmartOS GHC binaries should work unmodified on
 Solaris 10 and 11.  Both 32- and 64-bit GHC 7.6.3 are available in
 SmartOS PKGSRC.  I have successfully used them as bootstrap for GHC
 7.8.  The binaries should be separable.  I can get the build
 details if desired.
 
 You may wonder why I'm so picky about Solaris, but I've just been
 hit on Solaris 10 by bugs (in linker) which are not presented on
 Solaris 11 so in the past I needed to switch off shared libs on
 Solaris 10 and keep this functionality on Solaris 11 so I'm
 curious what third member to Solaris family will bring here.
 
 It seems SmartOS builds GHC 7.8 cleanly without patches.  There are
 some test failures which I'm working on.
 
 I hope SmartOS is still more closer to Solaris 11 than Solaris 10
 thanks to its roots in OpenSolaris project...
 
 SmartOS is an Illumos distro (like Ubuntu is to Linux).  Illumos is
 descended directly from the last public commit of OpenSolaris 10
 (grr Oracle).
 
 Thanks, Karel
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.14 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

iQEcBAEBAgAGBQJTRetbAAoJEP0rIXJNjNSAGpIH/Rd0Kp4K3OV5jIdwiT3x1GNI
jbed0L48bOB9u4ChasoLsq+12iOhwYkb4eBd+hAWGnjW+/EDsX7F19qfuBugsr9a
GiYyGRprRaMFMUQ0DR1pFPqeLKe5EUaNw5Al4KVW5i9W3LDCwGL3pQI8D0dRYzlN
4QlG7OcDG9DN8mTyiFAtWOjFloqkQN1G6EQG1GbwkHSdjKrXVRfeatAxMl9QfS7H
I1o9sLDKJWQTL38XmnMuXWKqLmvxundO0UUJNmvmKoJdSnRnBvD5m4BvnpIN1Cl2
xVnIvPef5PuPE5I1EXqZu61zUD2qgqmyVCHZui5D+ltZoEUS0Hh94JSzb2YOSGs=
=mu2x
-END PGP SIGNATURE-
___
ghc-devs mailing list
ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs


Re: 7.8.1 plan

2014-04-09 Thread Jens Petersen
On 9 April 2014 17:53, Karel Gardas karel.gar...@centrum.cz wrote:

 Ben Gamari (cced) documented it well here: http://bgamari.github.io/
 posts/2014-03-06-compiling-ghc-7.8-on-arm.html

 Looks like the issue is caused by binutils' linker while fixed in gold.


Thanks a lot, Karel!  I will try Ben's hack later.

I am still surprised that RC2 builds fine on ARM (I re-verified that
yesterday [1]) but not final 7.8.1.
Were there some late ARM or linking changes that cause this now?

On 04/ 9/14 10:21 AM, Jens Petersen wrote:

 dll-split: internal error: evacuate(static): strange closure type 0



See http://koji.fedoraproject.org/koji/taskinfo?taskID=6719940 for



 I reproduced this two times now. RC2 built okay on ARM so I am not
 sure what changed.


[1]  http://koji.fedoraproject.org/koji/taskinfo?taskID=6720331
___
ghc-devs mailing list
ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs


Re: 7.8.1 plan

2014-04-09 Thread Austin Seipp
Jens,

It's probably due to abb86adf7f749b3d44887d28bc96b43c5a1e0631[1] which
was merged post RC2. I base this on the fact your build is failing
during the dynamic build. Do try a reverse patch and see if it helps.

I believe Karel is right - you just need to use Gold. Ben actually had
patches to make the build fail if using binutils ld was detected, but
I believe I had reservations about the patch which I cannot recall off
the top of my head. In any case, a fix like that can certainly go in
7.8.2.

Do let us know how it goes.

[1] https://github.com/ghc/ghc/commit/abb86adf7f749b3d44887d28bc96b43c5a1e0631

On Wed, Apr 9, 2014 at 8:03 PM, Jens Petersen
peter...@fedoraproject.org wrote:
 On 9 April 2014 17:53, Karel Gardas karel.gar...@centrum.cz wrote:

 Ben Gamari (cced) documented it well here:
 http://bgamari.github.io/posts/2014-03-06-compiling-ghc-7.8-on-arm.html

 Looks like the issue is caused by binutils' linker while fixed in gold.


 Thanks a lot, Karel!  I will try Ben's hack later.

 I am still surprised that RC2 builds fine on ARM (I re-verified that
 yesterday [1]) but not final 7.8.1.
 Were there some late ARM or linking changes that cause this now?

 On 04/ 9/14 10:21 AM, Jens Petersen wrote:

 dll-split: internal error: evacuate(static): strange closure type 0



 See http://koji.fedoraproject.org/koji/taskinfo?taskID=6719940 for



 I reproduced this two times now. RC2 built okay on ARM so I am not
 sure what changed.


 [1]  http://koji.fedoraproject.org/koji/taskinfo?taskID=6720331

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




-- 
Regards,

Austin Seipp, Haskell Consultant
Well-Typed LLP, http://www.well-typed.com/
___
ghc-devs mailing list
ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs