
Thanks to the efforts of the Simons, we now have a GHC that does not panic on any package that it's able to try compiling. Since the last report, the number of packages on Hackage has increased by 1.8%, from 5564 to 5604, but the number of failing builds has dropped by 4.2%, from 1186 to 1136. This is partly due to a few widely-used packages (e.g. test-framework) being updated to build with HEAD. Here are the top 20 packages that caused a build failure in a package that depended upon them, with the count of the number of failed builds next to each. I have highlighted in *red+bold* package versions that are out of date, typically where the depending-upon package simply has upper bounds on its dependencies that are too strict. For packages that are listed in blue, the versions that are breaking are the latest available. I've CCed the authors of said packages on this email. Folks, please fix your stuff! 60 *network-**2.4.0.*0 63 *primitive-0.4.1* 65 Tensor-1.0.0.1 (Typeable problems) 74 *array-0.3.0.3* 98 *convertible-1.0.11.1* 99 MissingH-1.2.0.2 (broken by a change to unix package) 102 yesod-core-1.2.4.4 (http://lpaste.net/94162) 104 *HTTP-4000.0.7* 121 *mtl-1.1.1.1* 126 process-1.1.0.2 (unsafePerformIO) 138 glib-0.12.4 (Setup.hs broken by recent Cabal changes) 166 MonadCatchIO-mtl-0.3.0.5 (exception problems) 207 MonadCatchIO-transformers-0.3.0.0 (exception problems) 231 *containers-0.4.2.1* 231 OpenGLRaw-1.4.0.0 (a problem with my system, ignore) 242 enumerator-0.4.19 (already pinged jmillikin) 403 *transformers-0.2.2.0* 410 cairo-0.12.4 (Setup.hs broken by recent Cabal changes) 499 *template-haskell-2.8.0.0* 868 *unix-2.3.2.0*

Hello Bryan, On 2013-10-11 at 20:27:08 +0200, Bryan O'Sullivan wrote: [...]
For packages that are listed in blue, the versions that are breaking are the latest available. I've CCed the authors of said packages on this email. Folks, please fix your stuff!
btw, is there somewhere some wiki-page/gist/whatever where howto/cookbook-like information is being collected on how to make packages compatible with the new environment (possibly maximizing the compatibility version range)?
From eir at cis.upenn.edu Tue Oct 1 03:58:34 2013 From: eir at cis.upenn.edu (Richard Eisenberg) Date: Mon, 30 Sep 2013 23:58:34 -0400 Subject: TypeLits Message-ID:
X-List-Received-Date: Sat, 12 Oct 2013 07:43:21 -0000 X-List-Received-Date: Sat, 12 Oct 2013 07:43:21 -0000
Hi Iavor, It was very nice to see you last week -- it's too bad we have to wait another year for another ICFP! :) A question I got asked between sessions at ICFP led me to look at singletons again, and it seems that singletons has gone out of sync with TypeLits. When I looked closely at TypeLits, I saw a number of changes there, and I wonder if we can think a bit about the design before 7.8 rolls out. Forgive me if some of these suggestions are not new -- I just haven't looked closely at TypeLits for some time. Specifically: - I see that you define singleton instances for Bool. This makes sense, if we are to avoid orphan instances of the various singletons classes. But, it would seem helpful to define singleton support for more than just Bool here, if we are going down this road. For example, singletons for [], Maybe, Either, and the tuples are quite useful. - You don't export the constructors for Sing (k :: Bool). I think these need to be publicly visible. - I believe that Edward's reflection package will be incorporated into base. (Edward?) If so, it's possible that incoherentForgetSing can be cleaned up somewhat. - Why use LocalProxy? What's wrong with plain old Proxy? - I see Show and Read instances defined for singletons. Though these are useful, they prevent clients from defining their own instances, and I can imagine a user (possibly me) wanting a singleton to have a distinct Show instance from its base type. Perhaps these should be moved to a different module which can selectively be imported? - The definition for (:~:) is redundant with the new Data.Type.Equality. - The eqSing... functions are now redundant with the EqualityT class in Data.Type.Equality. Instead, TypeLits should probably define instances for EqualityT. - TypeLits defines KindIs, which is redundant with Data.Proxy's KProxy. It might be that KindIs is easier to use than KProxy, but base probably shouldn't have both types floating around. - I'm confused about IsZero. How is it different (in practical usage situations) from eqSingNat? Also, I'd like to note that IsZero uses a unary representation, which might be problematic. - The definitions for Nat1 don't need to be in base. Perhaps we want them there -- I think it will get a lot of use -- but maybe we should just think about it for a moment before going forward. I should admit that the redundancies are new -- after some discussion in the spring, I finally implemented the new bits that are now redundant with TypeLits only a month or two ago. --- Now having posed these questions, here are my proposed answers: - To avoid orphans, TypeLits should define singleton instances for all the types above, with all constructors exported. - Remove redundancy with other parts of base. I personally prefer KProxy over KindIs, because I find the KindIs name confusing. - Remove Show instances for singletons from base. If someone thinks these will have wide use, they can be defined in a library. - Keep Nat1 right where it is. Thoughts, anyone? Thanks, Richard
From simonpj at microsoft.com Tue Oct 1 09:32:17 2013 From: simonpj at microsoft.com (Simon Peyton-Jones) Date: Tue, 1 Oct 2013 09:32:17 +0000 Subject: Symbolic type variables (was Re: [Proposal] Renaming (:=:) to (==)) In-Reply-To:
References: Message-ID: <59543203684B2244980D7E4057D5FBC1485F60E8@DB3EX14MBXC306.europe.corp.microsoft.com> X-List-Received-Date: Sat, 12 Oct 2013 07:43:21 -0000 X-List-Received-Date: Sat, 12 Oct 2013 07:43:21 -0000
| > I'm hoping we don't get more deeply invested in the syntactic change | in GHC | > 7.6 that removed the possibility of symbolic type variables ("~>", | "*", "+", | > etc). I had a new job and wasn't paying attention when SPJ polled the | > community. From my perspective, the loss has much greater scope than | the | > gain for type level naturals. I'd like to keep the door open to the | > possibility of bringing back the old notation with the help of a | language | > pragma. It would take a few of us to draft a proposal addressing | details. | | I also miss these on a regular basis. I seem to remember that during | the proposal, there was a mention of reversing the situation, i.e. | having a prefix for type variable operators instead. Did anything ever | come of that? I'm very open to concrete suggestions about this. I want Haskell to allow you to express the thoughts in your head, as directly as possible. We could add a LANGUAGE pragma. Or, more radically, we could support both at once, like this: data (&&) a b where ...blah blah... f :: Int && Int -> Bool f = ... data T (&&) x = MkT (x && x) -- Shadows (&&) The idea is that (&&) can be declared as a top-level type constructor, but then *shadowed* by an explicit local binding in the 'data T' declaration. This is somewhat analogous to the situation with values: f = True g f = f::Char where we define f globally and then shadow it. The apparent difference is that the top-level (&&) is a type constructor, whereas the local (&&) is a type variable; and in the value world we *never* shadow data constructors. But the counter-argument might be that type variables (unlike term variables) really do behave like type constructors: they are rigid and don't match anything else. So I think the door stands open here, if anyone wants to drive the debate and push it through to a consensus. Simon
From simonpj at microsoft.com Tue Oct 1 09:50:46 2013 From: simonpj at microsoft.com (Simon Peyton-Jones) Date: Tue, 1 Oct 2013 09:50:46 +0000 Subject: TypeLits In-Reply-To:
References: Message-ID: <59543203684B2244980D7E4057D5FBC1485F6213@DB3EX14MBXC306.europe.corp.microsoft.com> X-List-Received-Date: Sat, 12 Oct 2013 07:43:21 -0000 X-List-Received-Date: Sat, 12 Oct 2013 07:43:21 -0000
Great post. It would be very good to clear this up asap, ie before 7.8, which itself is imminent. I'm agnostic about all of this ... from my pov just go ahead! Simon | -----Original Message----- | From: Libraries [mailto:libraries-bounces at haskell.org] On Behalf Of | Richard Eisenberg | Sent: 01 October 2013 04:59 | To: Iavor Diatchki | Cc: libraries Libraries | Subject: TypeLits | | Hi Iavor, | | It was very nice to see you last week -- it's too bad we have to wait | another year for another ICFP! :) | | A question I got asked between sessions at ICFP led me to look at | singletons again, and it seems that singletons has gone out of sync with | TypeLits. When I looked closely at TypeLits, I saw a number of changes | there, and I wonder if we can think a bit about the design before 7.8 | rolls out. Forgive me if some of these suggestions are not new -- I just | haven't looked closely at TypeLits for some time. | | Specifically: | | - I see that you define singleton instances for Bool. This makes sense, | if we are to avoid orphan instances of the various singletons classes. | But, it would seem helpful to define singleton support for more than | just Bool here, if we are going down this road. For example, singletons | for [], Maybe, Either, and the tuples are quite useful. | | - You don't export the constructors for Sing (k :: Bool). I think these | need to be publicly visible. | | - I believe that Edward's reflection package will be incorporated into | base. (Edward?) If so, it's possible that incoherentForgetSing can be | cleaned up somewhat. | | - Why use LocalProxy? What's wrong with plain old Proxy? | | - I see Show and Read instances defined for singletons. Though these are | useful, they prevent clients from defining their own instances, and I | can imagine a user (possibly me) wanting a singleton to have a distinct | Show instance from its base type. Perhaps these should be moved to a | different module which can selectively be imported? | | - The definition for (:~:) is redundant with the new Data.Type.Equality. | | - The eqSing... functions are now redundant with the EqualityT class in | Data.Type.Equality. Instead, TypeLits should probably define instances | for EqualityT. | | - TypeLits defines KindIs, which is redundant with Data.Proxy's KProxy. | It might be that KindIs is easier to use than KProxy, but base probably | shouldn't have both types floating around. | | - I'm confused about IsZero. How is it different (in practical usage | situations) from eqSingNat? Also, I'd like to note that IsZero uses a | unary representation, which might be problematic. | | - The definitions for Nat1 don't need to be in base. Perhaps we want | them there -- I think it will get a lot of use -- but maybe we should | just think about it for a moment before going forward. | | | I should admit that the redundancies are new -- after some discussion in | the spring, I finally implemented the new bits that are now redundant | with TypeLits only a month or two ago. | | --- | | Now having posed these questions, here are my proposed answers: | | - To avoid orphans, TypeLits should define singleton instances for all | the types above, with all constructors exported. | - Remove redundancy with other parts of base. I personally prefer KProxy | over KindIs, because I find the KindIs name confusing. | - Remove Show instances for singletons from base. If someone thinks | these will have wide use, they can be defined in a library. | - Keep Nat1 right where it is. | | Thoughts, anyone? | | Thanks, | Richard | _______________________________________________ | Libraries mailing list | Libraries at haskell.org | http://www.haskell.org/mailman/listinfo/libraries
From ekmett at gmail.com Tue Oct 1 17:49:24 2013 From: ekmett at gmail.com (Edward Kmett) Date: Tue, 1 Oct 2013 13:49:24 -0400 Subject: TypeLits In-Reply-To:
References: Message-ID: X-List-Received-Date: Sat, 12 Oct 2013 07:43:21 -0000 X-List-Received-Date: Sat, 12 Oct 2013 07:43:21 -0000
I've been talking to Austin about GHC.Reflection. He'd expressed some interest in taking a whack at it. If he doesn't get to it before this weekend, then I will. Re Proxy, we now have Proxy# as well. -Edward On Mon, Sep 30, 2013 at 11:58 PM, Richard Eisenberg <eir at cis.upenn.edu>wrote:
Hi Iavor,
It was very nice to see you last week -- it's too bad we have to wait another year for another ICFP! :)
A question I got asked between sessions at ICFP led me to look at singletons again, and it seems that singletons has gone out of sync with TypeLits. When I looked closely at TypeLits, I saw a number of changes there, and I wonder if we can think a bit about the design before 7.8 rolls out. Forgive me if some of these suggestions are not new -- I just haven't looked closely at TypeLits for some time.
Specifically:
- I see that you define singleton instances for Bool. This makes sense, if we are to avoid orphan instances of the various singletons classes. But, it would seem helpful to define singleton support for more than just Bool here, if we are going down this road. For example, singletons for [], Maybe, Either, and the tuples are quite useful.
- You don't export the constructors for Sing (k :: Bool). I think these need to be publicly visible.
- I believe that Edward's reflection package will be incorporated into base. (Edward?) If so, it's possible that incoherentForgetSing can be cleaned up somewhat.
- Why use LocalProxy? What's wrong with plain old Proxy?
- I see Show and Read instances defined for singletons. Though these are useful, they prevent clients from defining their own instances, and I can imagine a user (possibly me) wanting a singleton to have a distinct Show instance from its base type. Perhaps these should be moved to a different module which can selectively be imported?
- The definition for (:~:) is redundant with the new Data.Type.Equality.
- The eqSing... functions are now redundant with the EqualityT class in Data.Type.Equality. Instead, TypeLits should probably define instances for EqualityT.
- TypeLits defines KindIs, which is redundant with Data.Proxy's KProxy. It might be that KindIs is easier to use than KProxy, but base probably shouldn't have both types floating around.
- I'm confused about IsZero. How is it different (in practical usage situations) from eqSingNat? Also, I'd like to note that IsZero uses a unary representation, which might be problematic.
- The definitions for Nat1 don't need to be in base. Perhaps we want them there -- I think it will get a lot of use -- but maybe we should just think about it for a moment before going forward.
I should admit that the redundancies are new -- after some discussion in the spring, I finally implemented the new bits that are now redundant with TypeLits only a month or two ago.
---
Now having posed these questions, here are my proposed answers:
- To avoid orphans, TypeLits should define singleton instances for all the types above, with all constructors exported. - Remove redundancy with other parts of base. I personally prefer KProxy over KindIs, because I find the KindIs name confusing. - Remove Show instances for singletons from base. If someone thinks these will have wide use, they can be defined in a library. - Keep Nat1 right where it is.
Thoughts, anyone?
Thanks, Richard _______________________________________________ Libraries mailing list Libraries at haskell.org http://www.haskell.org/mailman/listinfo/libraries

On 11/10/2013 19:27, Bryan O'Sullivan wrote:
Thanks to the efforts of the Simons, we now have a GHC that does not panic on any package that it's able to try compiling.
Since the last report, the number of packages on Hackage has increased by 1.8%, from 5564 to 5604, but the number of failing builds has dropped by 4.2%, from 1186 to 1136. This is partly due to a few widely-used packages (e.g. test-framework) being updated to build with HEAD.
Here are the top 20 packages that caused a build failure in a package that depended upon them, with the count of the number of failed builds next to each. I have highlighted in *red+bold* package versions that are out of date, typically where the depending-upon package simply has upper bounds on its dependencies that are too strict.
What are the expectations on package owners here? My understanding was that the period inbetween GHC release and HP release is the time to fix this stuff up. However that obviously makes exercises such as this harder. Cheers, Ganesh

On Mon, Oct 14, 2013 at 1:10 PM, Ganesh Sittampalam
What are the expectations on package owners here? My understanding was that the period inbetween GHC release and HP release is the time to fix this stuff up. However that obviously makes exercises such as this harder.
It's always good to fix this kind of thing early, as doing so makes it possible to find even sooner the real problems that will otherwise remain hidden by mickey mouse stuff like bad package dependencies. Finding problems before a release is cut is way cheaper (even for open source volunteers) than discovering them once the code is in the wild.

2013/10/15 Bryan O'Sullivan
It's always good to fix this kind of thing early, as doing so makes it possible to find even sooner the real problems that will otherwise remain hidden by mickey mouse stuff like bad package dependencies. Finding problems before a release is cut is way cheaper (even for open source volunteers) than discovering them once the code is in the wild.
Agreed, but how are package maintainers supposed to find out problems early without much hassle? For my part, I am using Travis CI, but AFAICT it supports only GHC 7.4.1 (https://github.com/travis-ci/travis-ci/issues/882). There might be some cruel hacks like downloading some binary builds from somewhere etc., but this is not a real solution and takes ages. It would be very cool if Travis CI supported multiple GHC versions, including a version close to HEAD.

Carter and I started a conversation with the travis-ci guys about how to
support multiple Haskell versions a year and a half ago, but it fizzled out
and not much came of it.
At last check they were definitely leaning more towards supporting a few
haskell-platforms as they came out rather than something so
maintenance-heavy as tracking HEAD.
-Edward
On Tue, Oct 15, 2013 at 6:51 AM, Sven Panne
It's always good to fix this kind of thing early, as doing so makes it possible to find even sooner the real problems that will otherwise remain hidden by mickey mouse stuff like bad package dependencies. Finding
2013/10/15 Bryan O'Sullivan
: problems before a release is cut is way cheaper (even for open source volunteers) than discovering them once the code is in the wild.
Agreed, but how are package maintainers supposed to find out problems early without much hassle? For my part, I am using Travis CI, but AFAICT it supports only GHC 7.4.1 (https://github.com/travis-ci/travis-ci/issues/882). There might be some cruel hacks like downloading some binary builds from somewhere etc., but this is not a real solution and takes ages.
It would be very cool if Travis CI supported multiple GHC versions, including a version close to HEAD. _______________________________________________ Libraries mailing list Libraries@haskell.org http://www.haskell.org/mailman/listinfo/libraries

On Tue, 2013-10-15 at 10:27 -0400, Edward Kmett wrote:
Carter and I started a conversation with the travis-ci guys about how to support multiple Haskell versions a year and a half ago, but it fizzled out and not much came of it.
At last check they were definitely leaning more towards supporting a few haskell-platforms as they came out rather than something so maintenance-heavy as tracking HEAD.
FWIW: In the OCaml ecosystem Anil Madhavapeddy created a set of Ubuntu PPAs, each containing a different combination of OCaml compiler version & the 'opam' package manager, which makes it trivial to run TravisCI jobs against these different versions. See http://anil.recoil.org/2013/09/30/travis-and-ocaml.html I switched our original setup (which set up a compiler from scratch in the TravisCI env for every job, wasting time & resources) to this system for Arakoon, and it works like a charm, so if similar PPAs would be available for different GHC and HP versions, and one some system which e.g. takes nightly binaries & uploads them to the PPA for 'head' builds, things could work out nicely. Nicolas
-Edward
On Tue, Oct 15, 2013 at 6:51 AM, Sven Panne
wrote: It's always good to fix this kind of thing early, as doing so makes it possible to find even sooner the real problems that will otherwise remain hidden by mickey mouse stuff like bad package dependencies. Finding
2013/10/15 Bryan O'Sullivan
: problems before a release is cut is way cheaper (even for open source volunteers) than discovering them once the code is in the wild.
Agreed, but how are package maintainers supposed to find out problems early without much hassle? For my part, I am using Travis CI, but AFAICT it supports only GHC 7.4.1 (https://github.com/travis-ci/travis-ci/issues/882). There might be some cruel hacks like downloading some binary builds from somewhere etc., but this is not a real solution and takes ages.
It would be very cool if Travis CI supported multiple GHC versions, including a version close to HEAD. _______________________________________________ Libraries mailing list Libraries@haskell.org http://www.haskell.org/mailman/listinfo/libraries
_______________________________________________ Libraries mailing list Libraries@haskell.org http://www.haskell.org/mailman/listinfo/libraries

Hi, On 2013-10-15 at 16:27:43 +0200, Edward Kmett wrote:
Carter and I started a conversation with the travis-ci guys about how to support multiple Haskell versions a year and a half ago, but it fizzled out and not much came of it.
Fyi, as I didn't want to wait any longer for travis-ci to support multiple GHC versions I went ahead, picked up debian packaging, and built some minimal GHC .deb packages (which probably don't follow best practices, but it does the job as a proof of concept) in an Ubuntu PPA: https://launchpad.net/~hvr/+archive/ghc ...and here's an example how to set up .travis.yaml to test with a couple of GHCs: https://github.com/hvr/deepseq-generics/blob/master/.travis.yml The result can be seen here: https://travis-ci.org/hvr/deepseq-generics HTH, hvr

This is great; I can finally test my package that requires GHC 7.6 on
Travis. Thank you!
On Fri, Oct 18, 2013 at 10:02 AM, Herbert Valerio Riedel
Hi,
On 2013-10-15 at 16:27:43 +0200, Edward Kmett wrote:
Carter and I started a conversation with the travis-ci guys about how to support multiple Haskell versions a year and a half ago, but it fizzled out and not much came of it.
Fyi, as I didn't want to wait any longer for travis-ci to support multiple GHC versions I went ahead, picked up debian packaging, and built some minimal GHC .deb packages (which probably don't follow best practices, but it does the job as a proof of concept) in an Ubuntu PPA:
https://launchpad.net/~hvr/+archive/ghc
...and here's an example how to set up .travis.yaml to test with a couple of GHCs:
https://github.com/hvr/deepseq-generics/blob/master/.travis.yml
The result can be seen here:
https://travis-ci.org/hvr/deepseq-generics
HTH, hvr _______________________________________________ Libraries mailing list Libraries@haskell.org http://www.haskell.org/mailman/listinfo/libraries

Hey, this is awesome. For similar reasons I set up https://launchpad.net/~typeful recently. I In an ideal world we would have PPAs for all the GHC versions + the latest version of cabal install for all versions of Ubuntu back to the latest LTS release. Cheers, Simon On Fri, Oct 18, 2013 at 10:02:58AM +0200, Herbert Valerio Riedel wrote:
Hi,
On 2013-10-15 at 16:27:43 +0200, Edward Kmett wrote:
Carter and I started a conversation with the travis-ci guys about how to support multiple Haskell versions a year and a half ago, but it fizzled out and not much came of it.
Fyi, as I didn't want to wait any longer for travis-ci to support multiple GHC versions I went ahead, picked up debian packaging, and built some minimal GHC .deb packages (which probably don't follow best practices, but it does the job as a proof of concept) in an Ubuntu PPA:
https://launchpad.net/~hvr/+archive/ghc
...and here's an example how to set up .travis.yaml to test with a couple of GHCs:
https://github.com/hvr/deepseq-generics/blob/master/.travis.yml
The result can be seen here:
https://travis-ci.org/hvr/deepseq-generics
HTH, hvr _______________________________________________ Libraries mailing list Libraries@haskell.org http://www.haskell.org/mailman/listinfo/libraries
participants (9)
-
bos
-
Bryan O'Sullivan
-
Dag Odenhall
-
Edward Kmett
-
Ganesh Sittampalam
-
Herbert Valerio Riedel
-
Nicolas Trangez
-
Simon Hengel
-
Sven Panne