
We'd like to solicit comments from the community on our plans for future GHC releases. The current situation is this: - 6.6.1 is nearly ready to go (perhaps this week, please test the RC!) - 6.6.2 has ~35 outstanding tickets - 6.8 has ~150 outstanding tickets the default option would be to work on 6.6.2 and release it in a couple of months, while continuing to work on 6.8 for a release in ~6 months or so. However, there's another option: we could skip 6.6.2 and head straight for 6.8, the idea being to stabilise 6.8 with the existing feature set (plus a few important developments in progress), so that we can get these features out in a release sooner rather than later. The 6.6.2 tickets would be moved to 6.8, and most of the outstanding 6.8 tickets would be pushed to 6.8.1 or later, retaining only the features/bug-fixes that are essential for the 6.8 release. Here's a quick summary of the major developments that we already have in the 6.8 codebase: - Associated data types, and the new FC intermediate language - GHCi debugger (although there's an overhaul of the breakpoint support almost ready to go in) - Coverage (HPC) - GADTs + typeclasses - more packages moved from core to extralibs - GHC API changes, compile to object code inside GHCi - performance improvements: simplifier rewrite, and SpecConstr improvements - standalone deriving declarations - left-to-right impredicative instantiation: runST $ foo Here are the features in progress that we'd like to get into 6.8: - pointer-tagging (15% perf improvement for compiled code) - get external core working again - base package breakup (see discussion on libraries list) - list fusion We think the above feature set makes for a pretty strong 6.8 release. What do you think of this plan? Are there features/bug-fixes that you really want to see in 6.8? Cheers, Simon & the GHC Team

| What about the implementation of associated/indexed type _synonyms_? working on it now. I v much hope it'll make the 6.8 release, but I don't want to hold it up for that. Almost certainly *some* variant of indexed type synonyms will be in though. Simon

Alfonso Acosta wrote:
On 4/16/07, Simon Marlow
wrote: Are there features/bug-fixes that you really want to see in 6.8?
How about dynamic libraries? (there are a few 6.8 tickets for that I think)
I'm not sure if this will be ready for 6.8, but of course if it is then it'll go in. MacOS X will have shared library support as usual. Cheers, Simon

On Mon, Apr 16, 2007 at 03:54:56PM +0100, Simon Marlow wrote:
We'd like to solicit comments from the community on our plans for future GHC releases. The current situation is this:
- 6.6.1 is nearly ready to go (perhaps this week, please test the RC!) - 6.6.2 has ~35 outstanding tickets - 6.8 has ~150 outstanding tickets
the default option would be to work on 6.6.2 and release it in a couple of months, while continuing to work on 6.8 for a release in ~6 months or so. ... Here's a quick summary of the major developments that we already have in the 6.8 codebase:
Could you summarize the major tickets for 6.6.2? I'd tentatively vote for an accelerated 6.8. I'm quite excited about the associated types and the GADT-typeclass interactions. -- David Roundy Department of Physics Oregon State University

On Mon, Apr 16, 2007 at 10:00:32AM -0700, David Roundy wrote:
Could you summarize the major tickets for 6.6.2?
The list milestoned or 6.6.2 is here: http://hackage.haskell.org/trac/ghc/query?status=new&status=assigned&status=reopened&milestone=6.6.2&order=priority Not all of them would necessarily be fixed for 6.6.2, of course. Thanks Ian

Go here: http://hackage.haskell.org/trac/ghc/roadmap and click on the active tickets for 6.6.2 Simon | -----Original Message----- | From: glasgow-haskell-users-bounces@haskell.org [mailto:glasgow-haskell-users-bounces@haskell.org] On | Behalf Of David Roundy | Sent: 16 April 2007 18:01 | To: glasgow-haskell-users@haskell.org | Subject: Re: Release plans | | On Mon, Apr 16, 2007 at 03:54:56PM +0100, Simon Marlow wrote: | > We'd like to solicit comments from the community on our plans for future | > GHC releases. The current situation is this: | > | > - 6.6.1 is nearly ready to go (perhaps this week, please test the RC!) | > - 6.6.2 has ~35 outstanding tickets | > - 6.8 has ~150 outstanding tickets | > | > the default option would be to work on 6.6.2 and release it in a couple of | > months, while continuing to work on 6.8 for a release in ~6 months or so. | ... | > Here's a quick summary of the major developments that we already have in | > the 6.8 codebase: | | Could you summarize the major tickets for 6.6.2? I'd tentatively vote for | an accelerated 6.8. I'm quite excited about the associated types and the | GADT-typeclass interactions. | -- | David Roundy | Department of Physics | Oregon State University | _______________________________________________ | Glasgow-haskell-users mailing list | Glasgow-haskell-users@haskell.org | http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

simonmarhaskell:
We'd like to solicit comments from the community on our plans for future GHC releases. The current situation is this:
- 6.6.1 is nearly ready to go (perhaps this week, please test the RC!) - 6.6.2 has ~35 outstanding tickets - 6.8 has ~150 outstanding tickets
the default option would be to work on 6.6.2 and release it in a couple of months, while continuing to work on 6.8 for a release in ~6 months or so.
However, there's another option: we could skip 6.6.2 and head straight for 6.8, the idea being to stabilise 6.8 with the existing feature set (plus a few important developments in progress), so that we can get these features out in a release sooner rather than later. The 6.6.2 tickets would be moved to 6.8, and most of the outstanding 6.8 tickets would be pushed to 6.8.1 or later, retaining only the features/bug-fixes that are essential for the 6.8 release.
Here's a quick summary of the major developments that we already have in the 6.8 codebase:
- Associated data types, and the new FC intermediate language - GHCi debugger (although there's an overhaul of the breakpoint support almost ready to go in) - Coverage (HPC) - GADTs + typeclasses - more packages moved from core to extralibs - GHC API changes, compile to object code inside GHCi - performance improvements: simplifier rewrite, and SpecConstr improvements - standalone deriving declarations - left-to-right impredicative instantiation: runST $ foo
Here are the features in progress that we'd like to get into 6.8:
- pointer-tagging (15% perf improvement for compiled code) - get external core working again - base package breakup (see discussion on libraries list)
Yes. Along with the new release of bytestring, on top of stream fusion.
- list fusion
Ok. Still needs some work on GHC's optimiser, but the fusion system itself is done. So this is definitely doable.
We think the above feature set makes for a pretty strong 6.8 release.
What do you think of this plan? Are there features/bug-fixes that you really want to see in 6.8?
Sounds like a good plan. 6.8 here we come! -- Don

On Mon, Apr 16, 2007 at 03:54:56PM +0100, Simon Marlow wrote:
- left-to-right impredicative instantiation: runST $ foo
This concerns me. With each ad-hoc extension of the type system, I worry that soon the GHC type system will become so byzantine and ill-specified that the type checker can only be cloned, not substantially improved on. I personally have a type checker idea I am working on, but I doubt I will ever be able to implement features such as this, because the type checking abstraction is now leaking badly. Once the Hindley-Damas-Milner algorithm is exposed, I fear programmers will rely on it and progress in Haskell typechecker implementation will be effectively halted. (Yes, I know I'm a bit late in complaining...)
- list fusion
Nitpick - you did mean stream fusion, right?
We think the above feature set makes for a pretty strong 6.8 release.
What do you think of this plan? Are there features/bug-fixes that you really want to see in 6.8?
Good code generation for loops. I understand they are rare in practice, but it's kinda disheartening to write memset() and see in the asm loop 11 memory references, 9 to the stack (numbers from unreliable memory). I don't mind the plan, either. Stefan

Stefan O'Rear wrote:
What do you think of this plan? Are there features/bug-fixes that you really want to see in 6.8?
Good code generation for loops. I understand they are rare in practice, but it's kinda disheartening to write memset() and see in the asm loop 11 memory references, 9 to the stack (numbers from unreliable memory).
Right. It's a major undertaking to do it properly: the current plan is to convert to SSA in the native code generator and do standard loop optimisations, together with replacing the register allocator with a better one. It's possible we could construct some interrim hack that might help some of the common cases, but I'm mildly dubious. So if we have something ready in time then it'll go into 6.8, otherwise 6.10. Cheers, Simon

| > - left-to-right impredicative instantiation: runST $ foo | | This concerns me. With each ad-hoc extension of the type system, I | worry that soon the GHC type system will become so byzantine and | ill-specified that the type checker can only be cloned, not | substantially improved on On this one I am inclined to agree with you and Lennart. I am dissatisfied with the story for impredicative instantiation, and I regard GHC's implementation as having a poor power-to-weight ratio. I have not got as far as simply taking it out, yet, but sooner or later it has to change. Dimitrios is working on variants which may help. This is, incidentally, in contrast with most other of GHC's (admittedly complicated) extensions, most of which have a much better power-to-weight ratio. (The other one I'm not happy about is the design for lexically scoped type variables.) Simon (PS: why the left-to-right thing? The runST $ foo thing had become the number-one complaint, so I gave in!)

Just to show what kind of problems we are currently facing. The following type checks in our EHC compiler and in Hugs, but not in the GHC: module Test where data T s = forall x. T (s -> (x -> s) -> (x, s, Int)) run :: (forall s . T s) -> Int run ts = case ts of T g -> let (x,_, b) = g x id in b Doaitse Swierstra On Apr 17, 2007, at 12:41 AM, Stefan O'Rear wrote:
On Mon, Apr 16, 2007 at 03:54:56PM +0100, Simon Marlow wrote:
- left-to-right impredicative instantiation: runST $ foo
This concerns me. With each ad-hoc extension of the type system, I worry that soon the GHC type system will become so byzantine and ill-specified that the type checker can only be cloned, not substantially improved on. I personally have a type checker idea I am working on, but I doubt I will ever be able to implement features such as this, because the type checking abstraction is now leaking badly. Once the Hindley-Damas-Milner algorithm is exposed, I fear programmers will rely on it and progress in Haskell typechecker implementation will be effectively halted. (Yes, I know I'm a bit late in complaining...)
- list fusion
Nitpick - you did mean stream fusion, right?
We think the above feature set makes for a pretty strong 6.8 release.
What do you think of this plan? Are there features/bug-fixes that you really want to see in 6.8?
Good code generation for loops. I understand they are rare in practice, but it's kinda disheartening to write memset() and see in the asm loop 11 memory references, 9 to the stack (numbers from unreliable memory).
I don't mind the plan, either.
Stefan _______________________________________________ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

| Just to show what kind of problems we are currently facing. The | following type checks in our EHC compiler and in Hugs, but not in the | GHC: | | module Test where | | data T s = forall x. T (s -> (x -> s) -> (x, s, Int)) | | run :: (forall s . T s) -> Int | run ts = case ts of | T g -> let (x,_, b) = g x id | in b And indeed it should be rejected! If you think it should be rejected, can you give me the translation into System F + data types? I don't think there is one, and that's why GHC rejects it. Simon

On Apr 17, 2007, at 2:57 PM, Simon Peyton-Jones wrote:
| Just to show what kind of problems we are currently facing. The | following type checks in our EHC compiler and in Hugs, but not in the | GHC: | | module Test where | | data T s = forall x. T (s -> (x -> s) -> (x, s, Int)) | | run :: (forall s . T s) -> Int | run ts = case ts of | T g -> let (x,_, b) = g x id | in b
And indeed it should be rejected!
If you think it should be rejected, can you give me the translation into System F + data types? I don't think there is one, and that's why GHC rejects it.
Yes, but where is it written that what cannot be expressed in system- F is type incorrect? We think it is still type safe, and it is an extrcat of a larger program that is quite useful (if we managed to compile it), Doaitse
Simon

| Yes, but where is it written that what cannot be expressed in system- | F is type incorrect? We think it is still type safe, and it is an | extrcat of a larger program that is quite useful (if we managed to | compile it), Indeed! Well-typed programs don't go wrong, but not every program that never goes wrong is well-typed. It's easy to exhibit programs that don't go wrong but are ill-typed in System F, or indeed any other decidable type system. Many such programs are useful, which is why dynamically-typed languages like Erlang and Lisp are justly popular. However, I think EHC is still in the statically-typed camp. In which case, if EHC accepts the program you sent then presumably EHC implements a type system in which the program is well-typed. What is that type system? I hazard that it is even more exotic than GHC's! And probably very interesting as well; I'd love to see it. I'm quite puzzled about why Hugs accepts it though. I don't think Hugs has ambitions to be more expressive than System F. (Incidentally, GHC is indeed going beyond System F -- we've recently changed GHC to use FC as its intermediate language -- paper on my home page. But even FC can't express your program.) Simon

Doaitse Swierstra wrote:
Just to show what kind of problems we are currently facing. The following type checks in our EHC compiler and in Hugs, but not in the GHC:
module Test where
data T s = forall x. T (s -> (x -> s) -> (x, s, Int))
run :: (forall s . T s) -> Int run ts = case ts of T g -> let (x,_, b) = g x id in b
Doaitse Swierstra
f :: Double -> (Char -> Double) -> (Char, Double, Int) f double charToDouble = (undefined, double, 0) t :: T Double t = T f -- And what will happen here: run t = ... The "id" in "T g = g _ id" tries to require that f :: Double -> (Double -> Double) -> (Double, Double, Int) but that is not correct.

Hi
Release plans: - get external core working again
Can't this happen entirely separate from any GHC releases? From what I've heard people were thinking of wrapping this up in the next few months. I personally need this to make my PhD work on more than just Yhc :-) Thanks Neil

On Tue, Apr 17, 2007 at 06:15:49PM +0100, Neil Mitchell wrote:
Release plans: - get external core working again
Can't this happen entirely separate from any GHC releases?
It will work in the HEAD as soon as it's done, but it won't be in a released compiler until the release after that. (Did I misunderstand your question?) Thanks Ian

Hi
Release plans: - get external core working again
Can't this happen entirely separate from any GHC releases?
It will work in the HEAD as soon as it's done, but it won't be in a released compiler until the release after that.
AFAIWA the library in the past was entirely stand alone, and as soon as it works, it will work with the Core that GHC 6.6 produces as well? * AFAIWA = As far as I was aware :-) Thanks Neil

Well, the work I'm doing on it right now includes modifying it to work with System FC, which means it won't work with 6.6. Aaron On Apr 17, 2007, at 10:54 AM, Neil Mitchell wrote:
Hi
Release plans: - get external core working again
Can't this happen entirely separate from any GHC releases?
It will work in the HEAD as soon as it's done, but it won't be in a released compiler until the release after that.
AFAIWA the library in the past was entirely stand alone, and as soon as it works, it will work with the Core that GHC 6.6 produces as well?
* AFAIWA = As far as I was aware :-)
Thanks
Neil _______________________________________________ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

It is still coming along! :) I'm frustrated with how slowly I've been progressing with it (even though I do have good reasons), but I'm not stopping, and I believe it will be ready for 6.8. Knowing that you're waiting for it definitely gives me some motivation to push harder on it. I'm glad someone cares. :) Aaron On Apr 17, 2007, at 10:15 AM, Neil Mitchell wrote:
Hi
Release plans: - get external core working again
Can't this happen entirely separate from any GHC releases? From what I've heard people were thinking of wrapping this up in the next few months. I personally need this to make my PhD work on more than just Yhc :-)
Thanks
Neil _______________________________________________ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

Ext-core is not a library; spitting it out and sucking it in is an integral part of GHC. That said, I think there may be a library for processing the ext-core code itself (parsing, typechecking etc). I don't think Aaron is working on that. Also, what you need for your PhD is the spitting-out part, right? You want GHC to generate ext-core for your verifier to read in? That's the relatively easier part, and Aaron might have that working sooner, especially if you ask him to prioritise it. Simon | -----Original Message----- | From: glasgow-haskell-users-bounces@haskell.org [mailto:glasgow-haskell-users-bounces@haskell.org] On | Behalf Of Neil Mitchell | Sent: 17 April 2007 18:16 | To: Simon Marlow | Cc: GHC Users Mailing List | Subject: Re: Release plans | | Hi | | > Release plans: | > - get external core working again | | Can't this happen entirely separate from any GHC releases? From what | I've heard people were thinking of wrapping this up in the next few | months. I personally need this to make my PhD work on more than just | Yhc :-) | | Thanks | | Neil | _______________________________________________ | Glasgow-haskell-users mailing list | Glasgow-haskell-users@haskell.org | http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

Actually, GHC HEAD should spit out External Core already. Ian just applied my earlier patch that fixed the parser and pretty-printer. The bit I'm still working on is fitting the output of the parser into the typechecker. I don't plan on changing the concrete syntax unless I find that it's broken in some way. Aaron On Apr 17, 2007, at 11:51 PM, Simon Peyton-Jones wrote:
Ext-core is not a library; spitting it out and sucking it in is an integral part of GHC.
That said, I think there may be a library for processing the ext- core code itself (parsing, typechecking etc). I don't think Aaron is working on that.
Also, what you need for your PhD is the spitting-out part, right? You want GHC to generate ext-core for your verifier to read in? That's the relatively easier part, and Aaron might have that working sooner, especially if you ask him to prioritise it.
Simon
| -----Original Message----- | From: glasgow-haskell-users-bounces@haskell.org [mailto:glasgow- haskell-users-bounces@haskell.org] On | Behalf Of Neil Mitchell | Sent: 17 April 2007 18:16 | To: Simon Marlow | Cc: GHC Users Mailing List | Subject: Re: Release plans | | Hi | | > Release plans: | > - get external core working again | | Can't this happen entirely separate from any GHC releases? From what | I've heard people were thinking of wrapping this up in the next few | months. I personally need this to make my PhD work on more than just | Yhc :-) | | Thanks | | Neil | _______________________________________________ | 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

What are the plans for the esc branch? Are the changing going to be merged? Rene.

| What are the plans for the esc branch? | | Are the changing going to be merged? (For others, Rene is referring to "extended static checking" for Haskell; see http://www.cl.cam.ac.uk/~nx200/) Dana is working hard on it right now. Yes, I very much hope that it'll be merged back into the HEAD in due course; but the priority is (a) get it working right, (b) write her thesis; and only then (c) merge the branch back into the HEAD. Simon
participants (14)
-
Aaron Tomb
-
Alfonso Acosta
-
Chris Kuklewicz
-
David Roundy
-
Doaitse Swierstra
-
dons@cse.unsw.edu.au
-
Ian Lynagh
-
Jean-Philippe Bernardy
-
Lennart Augustsson
-
Neil Mitchell
-
Rene de Visser
-
Simon Marlow
-
Simon Peyton-Jones
-
Stefan O'Rear