RE: Tentative high-level plans for 7.10.1

2014-10-06 Thread p.k.f.holzenspies
I don't know whether this has ever been considered as an idea, but what about 
having a notion of Long Term Support version (similar to how a lot of processor 
and operating systems vendors go about this).


The idea behind an LTS-GHC would be to continue bug-fixing on the LTS-version, 
even if newer major versions no longer get bug-fixing support. To some extent, 
there will be redundancies (bugs that have disappeared in newer versions 
because newer code does the same and more, still needing to be fixed on the LTS 
code base), but the upside would be a clear prioritisation between stability 
(LTS) and innovation (latest major release).


The current policy for feature *use* in the GHC code-base is that they're 
supported in (at least) three earlier major release versions. Should we go the 
LTS-route, the logical choice would be to demand the latest LTS-version. The 
danger, of course, is that people aren't very enthusiastic about bug-fixing 
older versions of a compiler, but for language/compiler-uptake, this might 
actually be a Better Way.


Thoughts?


Ph.






From: John Lato jwl...@gmail.com
Sent: 06 October 2014 01:10
To: Johan Tibell
Cc: Simon Marlow; ghc-devs@haskell.org
Subject: Re: Tentative high-level plans for 7.10.1

Speaking as a user, I think Johan's concern is well-founded.  For us, ghc-7.8.3 
was the first of the 7.8 line that was really usable in production, due to 
#8960 and other bugs.  Sure, that can be worked around in user code, but it 
takes some time for developers to locate the issues, track down the bug, and 
implement the workaround.  And even 7.8.3 has some bugs that cause minor 
annoyances (either ugly workarounds or intermittent build failures that I 
haven't had the time to debug); it's definitely not solid.  Similarly, 7.6.3 
was the first 7.6 release that we were able to use in production.  I'm 
particularly concerned about ghc-7.10 as the AMP means there will be 
significant lag in identifying new bugs (since it'll take time to update 
codebases for that major change).

For the curious, within the past few days we've seen all the following, some 
multiple times, all so far intermittent:

 ghc: panic! (the 'impossible' happened)
 (GHC version 7.8.3.0 for x86_64-unknown-linux):
 kindFunResult ghc-prim:GHC.Prim.*{(w) tc 34d}

 ByteCodeLink.lookupCE
 During interactive linking, GHCi couldn't find the following symbol:
 some_mangled_name_closure

 ghc: mmap 0 bytes at (nil): Invalid Argument

 internal error: scavenge_one: strange object 2022017865

Some of these I've mapped to likely ghc issues, and some are fixed in HEAD, but 
so far I haven't had an opportunity to put together reproducible test cases.  
And that's just bugs that we haven't triaged yet, there are several more for 
which workarounds are in place.

John L.

On Sat, Oct 4, 2014 at 2:54 PM, Johan Tibell 
johan.tib...@gmail.commailto:johan.tib...@gmail.com wrote:
On Fri, Oct 3, 2014 at 11:35 PM, Austin Seipp 
aus...@well-typed.commailto:aus...@well-typed.com wrote:
 - Cull and probably remove the 7.8.4 milestone.
   - Simply not enough time to address almost any of the tickets
 in any reasonable timeframe before 7.10.1, while also shipping them.
   - Only one, probably workarouadble, not game-changing
 bug (#9303) marked for 7.8.4.
   - No particular pressure on any outstanding bugs to release immediately.
   - ANY release would be extremely unlikely, but if so, only
 backed by the most critical of bugs.
   - We will move everything in 7.8.4 milestone to 7.10.1 milestone.
 - To accurately catalogue what was fixed.
 - To eliminate confusion.

#8960 looks rather serious and potentially makes all of 7.8 a no-go for some 
users. I'm worried that we're (in general) pushing too many bug fixes towards 
future major versions. Since major versions tend to add new bugs, we risk 
getting into a situation where no major release is really solid.


___
ghc-devs mailing list
ghc-devs@haskell.orgmailto: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: Tentative high-level plans for 7.10.1

2014-10-06 Thread Jan Stolarek
 Here are the major patches on Phabricator still needing review, that I
 think we'd like to see for 7.10.1:

- D72: New rebindable syntax for arrows.
I don't think D72 will make it in. I started to work on this a couple of months 
ago but the work 
has stalled. I just don't understand arrows well enough :-/ Sophie Taylor (aka 
spacekitteh) 
expressed some interest in this and we chatted a bit about it on IRC. But I 
haven't heard 
anything from Sophie in the past 2 weeks so I don't know whether she intends to 
pick up my work 
or not.

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


Re: GitHub pull requests

2014-10-06 Thread Andreas Abel
This is also the thing that worries most about arc:  Squashing commits. 
 Splitting commits into


* things that only do whitespace changes
* things that only add comments
* things that only refactor
* things that actually introduce a semantic change

*is* very valuable also for the efficency of the review process.

On 05.10.2014 19:13, Tuncer Ayaz wrote:

On Sun, Oct 5, 2014 at 4:32 PM, Ben Gamari wrote:

  5.a. I reflected on the mild shock of seeing that `arc` had squashed my
   carefully crafted patch set into a single commit. This still
   bothers me to this day.


I second 5.a, but does it have to be this way, or can arc be
instructed to not squash commits?



--
Andreas AbelDu bist der geliebte Mensch.

Department of Computer Science and Engineering
Chalmers and Gothenburg University, Sweden

andreas.a...@gu.se
http://www2.tcs.ifi.lmu.de/~abel/
___
ghc-devs mailing list
ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs


Re: Tentative high-level plans for 7.10.1

2014-10-06 Thread Herbert Valerio Riedel
On 2014-10-06 at 11:03:19 +0200, p.k.f.holzensp...@utwente.nl wrote:

[...]

 The idea behind an LTS-GHC would be to continue bug-fixing on the
 LTS-version, even if newer major versions no longer get bug-fixing
 support. To some extent, there will be redundancies (bugs that have
 disappeared in newer versions because newer code does the same and
 more, still needing to be fixed on the LTS code base), but the upside
 would be a clear prioritisation between stability (LTS) and innovation
 (latest major release).

As I'm not totally sure what you mean: Assuming we already had decided
years ago to follow LTS-style, given GHC 7.0, 7.2, 7.4, 7.6, 7.8 and the
future 7.10; which of those GHC versions would you have been considered
a LTS version?

[...]

 The danger, of course, is that people aren't very enthusiastic about
 bug-fixing older versions of a compiler, but for
 language/compiler-uptake, this might actually be a Better Way.

Maybe some of the commercial GHC users might be interested in donating
the manpower to maintain older GHC versions. It's mostly a
time-consuming QA  auditing process to maintain old GHCs.
___
ghc-devs mailing list
ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs


Re: Tentative high-level plans for 7.10.1

2014-10-06 Thread Johan Tibell
On Mon, Oct 6, 2014 at 11:28 AM, Herbert Valerio Riedel hvrie...@gmail.com
wrote:

 On 2014-10-06 at 11:03:19 +0200, p.k.f.holzensp...@utwente.nl wrote:
  The danger, of course, is that people aren't very enthusiastic about
  bug-fixing older versions of a compiler, but for
  language/compiler-uptake, this might actually be a Better Way.

 Maybe some of the commercial GHC users might be interested in donating
 the manpower to maintain older GHC versions. It's mostly a
 time-consuming QA  auditing process to maintain old GHCs.


What can we do to make that process cheaper? In particular, which are the
manual steps in making a new GHC release today?

In the long run back porting bugfixes is the route successful OSS projects
take. Once people have written large enough Haskell programs they will stop
jumping onto the newer version all the time and will demand backports of
bug fixes. This is already happening to some extent in cabal (as cabal is
tied to a ghc release which means we need to backport changes sometimes.)
___
ghc-devs mailing list
ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs


Re: Tentative high-level plans for 7.10.1

2014-10-06 Thread Malcolm Wallace

On 6 Oct 2014, at 10:28, Herbert Valerio Riedel wrote:

 As I'm not totally sure what you mean: Assuming we already had decided
 years ago to follow LTS-style, given GHC 7.0, 7.2, 7.4, 7.6, 7.8 and the
 future 7.10; which of those GHC versions would you have been considered
 a LTS version?


We continue to use 7.2, at least partly because all newer versions of ghc have 
had significant bugs that affect us.  In fact, 7.2.2 also has a show-stopping 
bug, but we patched it ourselves to create our very own custom ghc-7.2.3 
distribution.

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


RE: Again: Uniques in GHC

2014-10-06 Thread p.k.f.holzenspies
Very much part of my plan, Johan! I was a fervent +1 on that recommendation.

Ph.
?





From: Johan Tibell johan.tib...@gmail.com
Sent: 06 October 2014 12:06
To: Holzenspies, P.K.F. (EWI)
Cc: ghc-devs@haskell.org
Subject: Re: Again: Uniques in GHC

On Mon, Oct 6, 2014 at 11:58 AM, 
p.k.f.holzensp...@utwente.nlmailto:p.k.f.holzensp...@utwente.nl wrote:

- The export-list of Unique has some comments stating that function X is only 
exported for module Y, yet is used elsewhere. This may be because these 
comments do not show up in haddock etc. leading some people to think they're up 
for general use. In my refactoring, I'm sticking the restriction in the 
function name, so it's no longer mkUniqueGrimily, but rather 
mkUniqueOnlyForUniqSupply (making the name even longer should discourage their 
use more). If at all possible, these should be removed altogether asap.

Since you're touching this code base it would be a terrific time to add some 
Haddocks! (We recently decided, on the ghc-devs@ list, that all new top-level 
entities, i.e. functions, data types, and classes, should have Haddocks.)
___
ghc-devs mailing list
ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs


Re: Again: Uniques in GHC

2014-10-06 Thread Joachim Breitner
Hi,


Am Montag, den 06.10.2014, 09:58 + schrieb
p.k.f.holzensp...@utwente.nl:
 - The implementation is based on FastInts, which, on most machines
 nowadays, is a 64-bit thing. The serialisation in BinIface is
 explicitly based on Word32s. Aside from the obvious potential (albeit
 with a low probability) for errors, this lead me to wonder about
 32/64-bitness. Is there a reason for 64-bit versions of GHC to write
 Word32s, or is this a historic thing? Must the interface-files be
 bit-compatible between different versions (32/64-bits) of the
 compiler? Lastly, is the choice of whether this is a 32 or 64-bit
 version completely determined by WORD_SIZE_IN_BITS (MachDeps.h)?
 
A while ago we had problems with haddock in Debian when the
serialization became bit-dependent.¹ I suggest to keep the specification
of any on-disk format independent of architecture specifics.

Greetings,
Joachim

¹ http://bugs.debian.org/586723#15

-- 
Joachim “nomeata” Breitner
  m...@joachim-breitner.de • http://www.joachim-breitner.de/
  Jabber: nome...@joachim-breitner.de  • GPG-Key: 0xF0FBF51F
  Debian Developer: nome...@debian.org



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


Re: Tentative high-level plans for 7.10.1

2014-10-06 Thread Daniel Trstenjak

Hi Nicolas,

 So, if 1.4.x, 1.5.x, 1.6.x and 1.7.x are 'supported' versions, and some
 bug is found in 1.6.2, but turns out to be introduced in 1.5.1, we fix
 the bug in the 1.5 branch.
 
 Then, if the bugfix is important enough, we merge 1.4 in 1.5 (which can
 be a no-op), 1.5 in 1.6, and 1.6 into 1.7. As such, every version branch
 'contains' all 'older' branches.

I don't like this practise, because you certainly don't want to always
incorprocate all commits of one release branch into an other.

Just think about a hackish bug fix needed to be added in a former
release, and in a newer release the problem has been solved in a
completely different way, and now, if you have bad luck, the former
release branch merges without conflicts into the new one, now getting
the hackish fix into the new release, which might be even harmful.

IMHO using cherry picking in this case is a lot better manageable.


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


Re: Tentative high-level plans for 7.10.1

2014-10-06 Thread Herbert Valerio Riedel
On 2014-10-06 at 11:50:03 +0200, Malcolm Wallace wrote:
 On 6 Oct 2014, at 10:28, Herbert Valerio Riedel wrote:

 As I'm not totally sure what you mean: Assuming we already had decided
 years ago to follow LTS-style, given GHC 7.0, 7.2, 7.4, 7.6, 7.8 and the
 future 7.10; which of those GHC versions would you have been considered
 a LTS version?


 We continue to use 7.2, at least partly because all newer versions of
 ghc have had significant bugs that affect us.  In fact, 7.2.2 also has
 a show-stopping bug, but we patched it ourselves to create our very
 own custom ghc-7.2.3 distribution.

I'd like to point out that's kinda ironic, as of *all* the GHC releases,
you had to stay on the one major release that was considered a
non-proper tech-preview... :-)

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


Re: Tentative high-level plans for 7.10.1

2014-10-06 Thread Nicolas Trangez
Hello Daniel,

On Mon, 2014-10-06 at 12:46 +0200, Daniel Trstenjak wrote:
  So, if 1.4.x, 1.5.x, 1.6.x and 1.7.x are 'supported' versions, and some
  bug is found in 1.6.2, but turns out to be introduced in 1.5.1, we fix
  the bug in the 1.5 branch.
  
  Then, if the bugfix is important enough, we merge 1.4 in 1.5 (which can
  be a no-op), 1.5 in 1.6, and 1.6 into 1.7. As such, every version branch
  'contains' all 'older' branches.
 
 I don't like this practise, because you certainly don't want to always
 incorprocate all commits of one release branch into an other.
 
 Just think about a hackish bug fix needed to be added in a former
 release, and in a newer release the problem has been solved in a
 completely different way, and now, if you have bad luck, the former
 release branch merges without conflicts into the new one, now getting
 the hackish fix into the new release, which might be even harmful.

Agree, although I think this is less of an issue in practice because we
enforce code reviews for all commits, including 'merge' commits, even if
the merge was 100% automatic (hence we have PRs for '1.5-for-1.6'
branches once in a while). These 'workarounds' are spotted easily during
this process.

Next to that, chances are fairly low a 'hack' won't in any way conflict
with a 'proper fix', since they tend to touch (a portion of) the same
code most of the time (except in build systems maybe). Using
'git-imerge' helps here quite a bit as well, since the conflicts aren't
buried between 100s of unrelated changes (like what git-merge does). 

 IMHO using cherry picking in this case is a lot better manageable.

Yet it has a (IMHO) major drawback: it requires a system next to VCS
(issue tracker or alike) to make sure all fixes are propagated to all
applicable versions, which all too often results in (human) error. Hey,
we reported this against 1.6.3, and it was fixed in 1.6.4, but now we
upgraded to 1.7.3 which was released after 1.6.4 and the bug is back is
no good PR.

Anyway, it's not like I intend to push GHC development/maintenance in
any specific direction at all, just wanted to provide some experience
report :-)

Regards,

Nicolas

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


Show instance for SrcSpan

2014-10-06 Thread Alan Kim Zimmerman
Is there any reason I can't put in a diff request to replace the derived
Show instance for SrcSpan with a handcrafted one that does not exhausively
list the constructors, making it more readable?

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


Re: Show instance for SrcSpan

2014-10-06 Thread Mateusz Kowalczyk
On 10/06/2014 01:59 PM, Alan  Kim Zimmerman wrote:
 Is there any reason I can't put in a diff request to replace the derived
 Show instance for SrcSpan with a handcrafted one that does not exhausively
 list the constructors, making it more readable?
 
 Alan
 

Why? If you're looking for pretty output then you should be changing
Outputable.


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


Re: Show instance for SrcSpan

2014-10-06 Thread Johan Tibell
Aside: I really miss derived Show instances in GHC. The Outputable class is
only really useful if you already know how things work. If you e.g. want to
see the AST used to represent some piece of Haskell code, in all its glory,
the Outputable instances aren't useful because they elide too much
information.

On Mon, Oct 6, 2014 at 3:11 PM, Mateusz Kowalczyk fuuze...@fuuzetsu.co.uk
wrote:

 On 10/06/2014 01:59 PM, Alan  Kim Zimmerman wrote:
  Is there any reason I can't put in a diff request to replace the derived
  Show instance for SrcSpan with a handcrafted one that does not
 exhausively
  list the constructors, making it more readable?
 
  Alan
 

 Why? If you're looking for pretty output then you should be changing
 Outputable.


 --
 Mateusz K.
 ___
 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: Show instance for SrcSpan

2014-10-06 Thread Alan Kim Zimmerman
True, but if you are using GHC generated stuff via the GHC API you
sometimes do not want to have to implement Outputable for all your app
types, when you can auto derive Show which mostly does what you need.

On Mon, Oct 6, 2014 at 3:11 PM, Mateusz Kowalczyk fuuze...@fuuzetsu.co.uk
wrote:

 On 10/06/2014 01:59 PM, Alan  Kim Zimmerman wrote:
  Is there any reason I can't put in a diff request to replace the derived
  Show instance for SrcSpan with a handcrafted one that does not
 exhausively
  list the constructors, making it more readable?
 
  Alan
 

 Why? If you're looking for pretty output then you should be changing
 Outputable.


 --
 Mateusz K.
 ___
 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: Show instance for SrcSpan

2014-10-06 Thread Matthias Fischmann
On Mon, Oct 06, 2014 at 02:59:03PM +0200, Alan  Kim Zimmerman wrote:
 Date: Mon, 6 Oct 2014 14:59:03 +0200
 From: Alan  Kim Zimmerman alan.z...@gmail.com
 To: ghc-devs@haskell.org ghc-devs@haskell.org
 Subject: Show instance for SrcSpan

 Is there any reason I can't put in a diff request to replace the derived
 Show instance for SrcSpan with a handcrafted one that does not exhausively
 list the constructors, making it more readable?

 Alan


I like the notion that `Read . Show` should always work.  Dropping
parts of a datatype would break that rule.

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


Re: Show instance for SrcSpan

2014-10-06 Thread Alan Kim Zimmerman
Not at all, just show as e.g.

  SrcSpan (RealSrcSpan (SrcSpanOneLine ./foo.hs 4 1 6))

We just avoid showing the srcSpanFile / srcSpanLine / srcSpanSCol /
srcSpanECol noise


On Mon, Oct 6, 2014 at 3:16 PM, Matthias Fischmann m...@zerobuzz.net wrote:

 On Mon, Oct 06, 2014 at 02:59:03PM +0200, Alan  Kim Zimmerman wrote:
  Date: Mon, 6 Oct 2014 14:59:03 +0200
  From: Alan  Kim Zimmerman alan.z...@gmail.com
  To: ghc-devs@haskell.org ghc-devs@haskell.org
  Subject: Show instance for SrcSpan
 
  Is there any reason I can't put in a diff request to replace the derived
  Show instance for SrcSpan with a handcrafted one that does not
 exhausively
  list the constructors, making it more readable?
 
  Alan


 I like the notion that `Read . Show` should always work.  Dropping
 parts of a datatype would break that rule.

 matthias
 ___
 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: Show instance for SrcSpan

2014-10-06 Thread Matthias Fischmann

Ah, you want to drop constructor field names.  Then I withdraw my
reservations.

thanks for the clarification,
m.



On Mon, Oct 06, 2014 at 03:27:49PM +0200, Alan  Kim Zimmerman wrote:
 Date: Mon, 6 Oct 2014 15:27:49 +0200
 From: Alan  Kim Zimmerman alan.z...@gmail.com
 To: Matthias Fischmann m...@zerobuzz.net
 Cc: ghc-devs@haskell.org ghc-devs@haskell.org
 Subject: Re: Show instance for SrcSpan

 Not at all, just show as e.g.

   SrcSpan (RealSrcSpan (SrcSpanOneLine ./foo.hs 4 1 6))

 We just avoid showing the srcSpanFile / srcSpanLine / srcSpanSCol /
 srcSpanECol noise


 On Mon, Oct 6, 2014 at 3:16 PM, Matthias Fischmann m...@zerobuzz.net wrote:

  On Mon, Oct 06, 2014 at 02:59:03PM +0200, Alan  Kim Zimmerman wrote:
   Date: Mon, 6 Oct 2014 14:59:03 +0200
   From: Alan  Kim Zimmerman alan.z...@gmail.com
   To: ghc-devs@haskell.org ghc-devs@haskell.org
   Subject: Show instance for SrcSpan
  
   Is there any reason I can't put in a diff request to replace the derived
   Show instance for SrcSpan with a handcrafted one that does not
  exhausively
   list the constructors, making it more readable?
  
   Alan
 
 
  I like the notion that `Read . Show` should always work.  Dropping
  parts of a datatype would break that rule.
 
  matthias
  ___
  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: Show instance for SrcSpan

2014-10-06 Thread Alan Kim Zimmerman
To get even more heretical, a quick grep of the compiler source tree does
not show

SrcSpanOneLine / SrcSpanMultiLine / SrcSpanPoint

being used anywhere but in SrcLoc.lhs.

The use in SrcLoc is in the original constructor, the deconstructors
pulling out lines and columns, and combineSrcSpans.

Perhaprs our SrcSpan is more complicated than it needs to be?

On Mon, Oct 6, 2014 at 3:37 PM, Matthias Fischmann m...@zerobuzz.net wrote:


 Ah, you want to drop constructor field names.  Then I withdraw my
 reservations.

 thanks for the clarification,
 m.



 On Mon, Oct 06, 2014 at 03:27:49PM +0200, Alan  Kim Zimmerman wrote:
  Date: Mon, 6 Oct 2014 15:27:49 +0200
  From: Alan  Kim Zimmerman alan.z...@gmail.com
  To: Matthias Fischmann m...@zerobuzz.net
  Cc: ghc-devs@haskell.org ghc-devs@haskell.org
  Subject: Re: Show instance for SrcSpan
 
  Not at all, just show as e.g.
 
SrcSpan (RealSrcSpan (SrcSpanOneLine ./foo.hs 4 1 6))
 
  We just avoid showing the srcSpanFile / srcSpanLine / srcSpanSCol /
  srcSpanECol noise
 
 
  On Mon, Oct 6, 2014 at 3:16 PM, Matthias Fischmann m...@zerobuzz.net
 wrote:
 
   On Mon, Oct 06, 2014 at 02:59:03PM +0200, Alan  Kim Zimmerman wrote:
Date: Mon, 6 Oct 2014 14:59:03 +0200
From: Alan  Kim Zimmerman alan.z...@gmail.com
To: ghc-devs@haskell.org ghc-devs@haskell.org
Subject: Show instance for SrcSpan
   
Is there any reason I can't put in a diff request to replace the
 derived
Show instance for SrcSpan with a handcrafted one that does not
   exhausively
list the constructors, making it more readable?
   
Alan
  
  
   I like the notion that `Read . Show` should always work.  Dropping
   parts of a datatype would break that rule.
  
   matthias
   ___
   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: Show instance for SrcSpan

2014-10-06 Thread p.k.f.holzenspies
The way I read Alan's earlier mail is precisely that; auto-generated Show does 
what he wants (show the entire AST), whereas Outputable hides too much 
information. I very much understand his frustration with having to manually 
figure out what constructors and datatypes go where in a compiled program. 
Alan's point was the *absence* of auto derived Show instances and, in the case 
of SrcSpan, too much verbosity (rather than wanting stuff to be incomplete).


Allowing some bespoke stuff to reduce the noise of something like record field 
names for SrcSpan makes even more sense in this context. Similarly, this is why 
Alan  I want everything to have Data instances, so you can (amongst many other 
nice things) selectively print parts of the AST.


Ph.





From: Alan  Kim Zimmerman alan.z...@gmail.com
Sent: 06 October 2014 15:15
To: Mateusz Kowalczyk
Cc: ghc-devs@haskell.org
Subject: Re: Show instance for SrcSpan

True, but if you are using GHC generated stuff via the GHC API you sometimes do 
not want to have to implement Outputable for all your app types, when you can 
auto derive Show which mostly does what you need.

On Mon, Oct 6, 2014 at 3:11 PM, Mateusz Kowalczyk 
fuuze...@fuuzetsu.co.ukmailto:fuuze...@fuuzetsu.co.uk wrote:
On 10/06/2014 01:59 PM, Alan  Kim Zimmerman wrote:
 Is there any reason I can't put in a diff request to replace the derived
 Show instance for SrcSpan with a handcrafted one that does not exhausively
 list the constructors, making it more readable?

 Alan


Why? If you're looking for pretty output then you should be changing
Outputable.


--
Mateusz K.
___
ghc-devs mailing list
ghc-devs@haskell.orgmailto: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


Stepping through ghc

2014-10-06 Thread Omar Mefire
Hi,

I'm new to ghc codebase and I'm interested in stepping through the code in 
order to gain a better idea of how it all works.

- Is there a way to load ghc into ghci ? and debug through it ?
- What are the ways experienced ghc devs step through the code ?
- Any techniques you guys recommend ?
- What would your advices be for a newbie to the source code ?



Thanks,

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


Re: GitHub pull requests

2014-10-06 Thread Tuncer Ayaz
On Mon, Oct 6, 2014 at 11:27 AM, Andreas Abel wrote:
 This is also the thing that worries most about arc: Squashing
 commits. Splitting commits into

 * things that only do whitespace changes
 * things that only add comments
 * things that only refactor
 * things that actually introduce a semantic change

 *is* very valuable also for the efficency of the review process.

Having separate commits also increases the chances of finding the
faulty diff with git-bisect. Also, reviewing is usually easier with
split commits, and it's simpler to provide descriptive per-commit
explanations within each commit message. That being said,
temp/fixup/backup commits should be squashed prior to submitting a
commit/patch series, and I suppose that's the rationale behind arc's
behavior.

 On 05.10.2014 19:13, Tuncer Ayaz wrote:
 
  On Sun, Oct 5, 2014 at 4:32 PM, Ben Gamari wrote:
  
   5.a. I reflected on the mild shock of seeing that `arc` had
  squashed my carefully crafted patch set into a single
  commit. This still bothers me to this day.
 
 
  I second 5.a, but does it have to be this way, or can arc be
  instructed to not squash commits?
___
ghc-devs mailing list
ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs


Re: GitHub pull requests

2014-10-06 Thread Tuncer Ayaz
On Sun, Oct 5, 2014 at 10:44 PM, Joachim Breitner wrote:
 Hi,


 Am Sonntag, den 05.10.2014, 19:20 +0200 schrieb Tuncer Ayaz:
  There's also the problem that Github's review system is not as
  powerful and most importantly does not preserve history like
  Gerrit or Phabricator do. Once used to it, maintainers probably
  won't be happy to lose productivity due to the simplistic review
  system.

 I don't think this is a reason to forbid them alltogether. We could
 say: We prefer submissions via Phabricator, especially for larger
 patches, but if you like, you can use GitHub as well - your
 contributions is welcome in any case.

 We are talking about small contributions and entry-barriers here,
 and a for a documentation patch or similarly small contributions, we
 don't need the full power of Phabricator. When new contributors
 start to engage more deeply they will not mind learning Phabricator.
 But they will be much more motivated to do so when they have already
 successfully contributed something.

Sure, it should certainly be tried.


By the way, while the Github team has no public ticket system, they
are very responsive when you send them feature requests or, say,
explain where the review system is incomplete/broken. They never
promise anything and do not pre-announce a feature, so it is hard to
track future changes. However, they're responsive and seem to value
majority opinion.

Here's the page: https://github.com/support
___
ghc-devs mailing list
ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs


Re: GitHub pull requests

2014-10-06 Thread Edward Z. Yang
To be completely clear, arc does not FORCE you to squash commits.
You can simply arc diff each commit in question seperately.

Now, it is certainly true that arc does not make this easy to do.
See: https://secure.phabricator.com/T5636

Edward

Excerpts from Andreas Abel's message of 2014-10-06 03:27:10 -0600:
 This is also the thing that worries most about arc:  Squashing commits. 
   Splitting commits into
 
 * things that only do whitespace changes
 * things that only add comments
 * things that only refactor
 * things that actually introduce a semantic change
 
 *is* very valuable also for the efficency of the review process.
 
 On 05.10.2014 19:13, Tuncer Ayaz wrote:
  On Sun, Oct 5, 2014 at 4:32 PM, Ben Gamari wrote:
5.a. I reflected on the mild shock of seeing that `arc` had squashed my
 carefully crafted patch set into a single commit. This still
 bothers me to this day.
 
  I second 5.a, but does it have to be this way, or can arc be
  instructed to not squash commits?
 
___
ghc-devs mailing list
ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs


Re: GitHub pull requests

2014-10-06 Thread Joachim Breitner
Hi,

Am Montag, den 06.10.2014, 17:54 +0200 schrieb Tuncer Ayaz:
 By the way, while the Github team has no public ticket system, they
 are very responsive when you send them feature requests or, say,
 explain where the review system is incomplete/broken. They never
 promise anything and do not pre-announce a feature, so it is hard to
 track future changes. However, they're responsive and seem to value
 majority opinion.
 
 Here's the page: https://github.com/support

good idea, I sent them a message which is basically
http://stackoverflow.com/questions/26204811/prevent-github-from-interpreting--in-commit-messages

Greetings,
Joachim

-- 
Joachim “nomeata” Breitner
  m...@joachim-breitner.de • http://www.joachim-breitner.de/
  Jabber: nome...@joachim-breitner.de  • GPG-Key: 0xF0FBF51F
  Debian Developer: nome...@debian.org



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


Re: GitHub pull requests

2014-10-06 Thread Richard Eisenberg
I think the arc barrier is significant. Personally, while I feel quite 
comfortable hacking on Haskell code, system tools are always a bit of a 
mystery. Those of you who help manage the infrastructure may feel like the 
tools are easy enough to pick up, but I'm sure there are many competent Haskell 
programmers out there who dread learning new tooling. (Perhaps I'm a 
representative sample of this set. I still say `git help merge` before just 
about every merge, just to make sure that I'm remembering the concepts 
correctly.)

I absolutely believe that we should use the best tools available and that 
committed GHC contributors should have to learn these tools as necessary. 
Though I've had my problems with Phab and `arc`, I'm confident that this tool 
was chosen after a deliberative process and am grateful that we have leaders in 
this area in our midst.

All that said, I think that the suggestion just to accept GitHub pull requests 
will lead to confusion, if only for the namespace problem. If we start to 
accept pull requests, then we are de facto going to have to deal with both the 
GH issue tracker and Trac's (and Phab's), and that is a terrible place to be. 
Part of the automated response to pull request submissions could be a post on 
the GH pull request record pointing folks to the Phab review that was created 
in response. The pull request would then be closed.

I agree with the comment that users will be more committed to learn Phab once 
they have contributed. That's why I wanted to point them to Phab in the 
automated response to the GH pull request. I think there's a psychological 
commitment made by a person once they click submit pull request and they will 
be happy enough to follow up on Phab, especially if commenting and such doesn't 
require the installation of a local tool.

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


RE: Show instance for SrcSpan

2014-10-06 Thread Simon Peyton Jones
By all means do so

S

From: ghc-devs [mailto:ghc-devs-boun...@haskell.org] On Behalf Of Alan  Kim 
Zimmerman
Sent: 06 October 2014 13:59
To: ghc-devs@haskell.org
Subject: Show instance for SrcSpan

Is there any reason I can't put in a diff request to replace the derived Show 
instance for SrcSpan with a handcrafted one that does not exhausively list the 
constructors, making it more readable?
Alan
___
ghc-devs mailing list
ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs


Re: GitHub pull requests

2014-10-06 Thread Ben Gamari
Richard Eisenberg e...@cis.upenn.edu writes:

 I absolutely believe that we should use the best tools available and
 that committed GHC contributors should have to learn these tools as
 necessary. Though I've had my problems with Phab and `arc`, I'm
 confident that this tool was chosen after a deliberative process and
 am grateful that we have leaders in this area in our midst.

Agreed. Phab certainly has a learning curve and is not without its
papercuts but on the whole seems to be an excellent tool.

 All that said, I think that the suggestion just to accept GitHub pull
 requests will lead to confusion, if only for the namespace problem. If
 we start to accept pull requests, then we are de facto going to have
 to deal with both the GH issue tracker and Trac's (and Phab's), and
 that is a terrible place to be. Part of the automated response to pull
 request submissions could be a post on the GH pull request record
 pointing folks to the Phab review that was created in response. The
 pull request would then be closed.

This is where I was going with the beginning of a script I posted on
Saturday. To me this seems like an excellent compromise: using the familiarity
of Github to attract contributions and (hopefully) siphon them into
Phabricator. The numbering conflicts may still be problematic but I
suspect that in practice people will learn that the Github numbers are
meaningless fairly quickly.

Cheers,

- Ben


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


Re: Stepping through ghc

2014-10-06 Thread Arash Rouhani

Hi Omar,

You might want to narrow your scope to one part of GHC. For example, I 
mostly focused on the Run Time System to be able to conduct my master's 
thesis. Also, you might want to start off with a tiny goal, like to fix 
bug XYZ.


Oh, and most important of all is the Commentary, which I think of as a 
wiki for GHC developers. http://ghc.haskell.org/trac/ghc/wiki/Commentary


Cheers,
Arash

On 2014-10-06 17:23, Omar Mefire wrote:

Hi,

I'm new to ghc codebase and I'm interested in stepping through the 
code in order to gain a better idea of how it all works.


- Is there a way to load ghc into ghci ? and debug through it ?
- What are the ways experienced ghc devs step through the code ?
- Any techniques you guys recommend ?
- What would your advices be for a newbie to the source code ?

Thanks,
Omar Mefire,


___
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: Again: Uniques in GHC

2014-10-06 Thread p.k.f.holzenspies
Dear Joachim,


Although I can't quite get what you're saying from the posts on that link, I'm 
not immediately sure what you're saying should extend to hi-files. These files 
are very much specific to the compiler version you're using, as in, new GHCs 
add stuff to them all the time and their binary format does not (seem to) 
provision for being able to skip unknown things (i.e. it doesn't say how large 
the next semantic block is in the hi-file).


If we're going to keep the formats the same for any architecture, we're going 
to have to limit 64-bit machines to 32-bit (actually 30-bits, another thing I 
don't quite understand in BinIface) Uniques. There seem to be possibilities to 
alleviate the issues with parallel generation of fresh Uniques in a parallel 
version of GHC. The idea is that, since 64-bits is more than we'll ever assign 
anyway, to use a few for thread-ids, so we would guarantee non-conflicting 
Uniques generated by different threads.


Anyway, maybe someone a tad more knowledgeable about Uniques could maybe tell 
me on what scale Uniques in the hi-files should be unique? Must they only be 
non-conflicting in a Module? In a Package? If I first compile a file with GHC 
and then, in a separate invocation of GHC, compile another, surely their 
hi-files will have some of the same Uniques for their own, different things? 
Where are these conflicts resolved when linking multiple independently compiled 
files? Are they ever?


Regards,

Philip




?


From: Joachim Breitner m...@joachim-breitner.de
Sent: 06 October 2014 12:36
Subject: Re: Again: Uniques in GHC

snip

A while ago we had problems with haddock in Debian when the
serialization became bit-dependent.^1 I suggest to keep the specification
of any on-disk format independent of architecture specifics.

Greetings,
Joachim

^1 http://bugs.debian.org/586723#15


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


Re: Again: Uniques in GHC

2014-10-06 Thread Joachim Breitner
Hi,

Am Montag, den 06.10.2014, 19:55 + schrieb p.k.f.holzensp...@utwente.nl:
 Although I can't quite get what you're saying from the posts on that
 link, I'm not immediately sure what you're saying should extend to
 hi-files. These files are very much specific to the compiler version
 you're using, as in, new GHCs add stuff to them all the time and their
 binary format does not (seem to) provision for being able to skip
 unknown things (i.e. it doesn't say how large the next semantic block
 is in the hi-file).

Some of this may not be true, but to my knowledge (part of) that
interface reading code is (or was?) used by haddock when generating
its .haddock file.

 If we're going to keep the formats the same for any architecture,
 we're going to have to limit 64-bit machines to 32-bit (actually
 30-bits, another thing I don't quite understand in BinIface) Uniques.

Why? You can just serialize Uniques always as 64 bit numbers, even on
32-bit systems. This way, the data format is the same across
architectures, with little cost.

  There seem to be possibilities to alleviate the issues with parallel
 generation of fresh Uniques in a parallel version of GHC. The idea is
 that, since 64-bits is more than we'll ever assign anyway, to use a
 few for thread-ids, so we would guarantee non-conflicting Uniques
 generated by different threads.
 
But that would only work on 64 bit systems, right?

Greetings,
Joachim

-- 
Joachim “nomeata” Breitner
  m...@joachim-breitner.de • http://www.joachim-breitner.de/
  Jabber: nome...@joachim-breitner.de  • GPG-Key: 0xF0FBF51F
  Debian Developer: nome...@debian.org



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


Re: Stepping through ghc

2014-10-06 Thread Carter Schonwald
Yeah , picking a single subsystem to get started is a very good and healthy
idea.
On Oct 6, 2014 2:50 PM, Arash Rouhani rar...@student.chalmers.se wrote:

  Hi Omar,

 You might want to narrow your scope to one part of GHC. For example, I
 mostly focused on the Run Time System to be able to conduct my master's
 thesis. Also, you might want to start off with a tiny goal, like to fix bug
 XYZ.

 Oh, and most important of all is the Commentary, which I think of as a
 wiki for GHC developers. http://ghc.haskell.org/trac/ghc/wiki/Commentary

 Cheers,
 Arash

 On 2014-10-06 17:23, Omar Mefire wrote:

 Hi,

 I'm new to ghc codebase and I'm interested in stepping through the code in
 order to gain a better idea of how it all works.

 - Is there a way to load ghc into ghci ? and debug through it ?
 - What are the ways experienced ghc devs step through the code ?
 - Any techniques you guys recommend ?
 - What would your advices be for a newbie to the source code ?

  Thanks,
  Omar Mefire,


 ___
 ghc-devs mailing 
 listghc-devs@haskell.orghttp://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: Tentative high-level plans for 7.10.1

2014-10-06 Thread John Lato
On Mon, Oct 6, 2014 at 5:38 PM, Johan Tibell johan.tib...@gmail.com wrote:

 On Mon, Oct 6, 2014 at 11:28 AM, Herbert Valerio Riedel 
 hvrie...@gmail.com wrote:

 On 2014-10-06 at 11:03:19 +0200, p.k.f.holzensp...@utwente.nl wrote:
  The danger, of course, is that people aren't very enthusiastic about
  bug-fixing older versions of a compiler, but for
  language/compiler-uptake, this might actually be a Better Way.

 Maybe some of the commercial GHC users might be interested in donating
 the manpower to maintain older GHC versions. It's mostly a
 time-consuming QA  auditing process to maintain old GHCs.


 What can we do to make that process cheaper? In particular, which are the
 manual steps in making a new GHC release today?


I would very much like to know this as well.  For ghc-7.8.3 there were a
number of people volunteering manpower to finish up the release, but to the
best of my knowledge those offers weren't taken up, which makes me think
that the extra overhead for coordinating more people would outweigh any
gains.  From the outside, it appears that the process/workflow could use
some improvement, perhaps in ways that would make it simpler to divide up
the workload.

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


Re: Errors building GHC on iOS with LLVM = 3.4

2014-10-06 Thread Murray Campbell
On Sat, Oct 4, 2014 at 7:32 PM, Ben Gamari bgamari.f...@gmail.com wrote:
 Murray Campbell mur...@sonology.net writes:

[snip]

 before bailing with

 
 /var/folders/02/0mv6cz6505x2xhzlr279k234gp/T/ghc6860_0/ghc6860_6-armv7.s:3916:2:
  error: out of range pc-relative fixup value
 vldrd8, LCPI70_0
 ^

 
 /var/folders/02/0mv6cz6505x2xhzlr279k234gp/T/ghc6860_0/ghc6860_6-armv7s.s:3916:2:
  error: out of range pc-relative fixup value
 vldrd8, LCPI70_0
 ^

 Next I tried to build HEAD (plus phabricator D208) with LLVM 3.4 but
 got the same error.

 I've never seen an error of this form. What symbol definitions does this
 error occur in?

I have attached a gzipped version of the *-armv7.s file.  The one I
attached is from a build with LLVM 3.5.  I had to apply D208  D155 to
get it to compile.  I also had to get the
ghc-ios-scripts/arm-apple-darwin10-clang script to pick up the
homebrew clang rather than the apple one to get around an 'unknown
directive: .maosx_version_min' error.  However, the vldr error is
identical to that with LLVM 3.4 building 7.8.3.

I can get a straight 7.8.3 with LLVM 3.4 version if that would help.

The error in the attached file is at line 5988 just below
'_c3pb_info$def: '.  This is below
'_integerzmsimple_GHCziIntegerziType_doubleFromPositive_info$def:'

The last lines of build instructions before the error are:

inplace/bin/ghc-stage1 -hisuf hi -osuf  o -hcsuf hc -static  -H64m
-O0-this-package-key integ_FpVba29yPwl8vdmOmO0xMS
-hide-all-packages -i -ilibraries/integer-simple/.
-ilibraries/integer-simple/dist-install/build
-ilibraries/integer-simple/dist-install/build/autogen
-Ilibraries/integer-simple/dist-install/build
-Ilibraries/integer-simple/dist-install/build/autogen
-Ilibraries/integer-simple/.-optP-include
-optPlibraries/integer-simple/dist-install/build/autogen/cabal_macros.h
-package-key ghcpr_BE58KUgBe9ELCsPXiJ1Q2r -this-package-key
integer-simple -Wall -XHaskell2010 -XCPP -XMagicHash -XBangPatterns
-XUnboxedTuples -XUnliftedFFITypes -XNoImplicitPrelude -O -fllvm
-no-user-package-db -rtsopts  -odir
libraries/integer-simple/dist-install/build -hidir
libraries/integer-simple/dist-install/build -stubdir
libraries/integer-simple/dist-install/build   -c
libraries/integer-simple/./GHC/Integer/Type.hs -o
libraries/integer-simple/dist-install/build/GHC/Integer/Type.o
You are using a new version of LLVM that hasn't been tested yet!
We will try though...

/var/folders/02/0mv6cz6505x2xhzlr279k234gp/T/ghc80302_0/ghc80302_6-armv7.s:5988:2:
 error: out of range pc-relative fixup value
vldrd8, LCPI102_0
^

/var/folders/02/0mv6cz6505x2xhzlr279k234gp/T/ghc80302_0/ghc80302_6-armv7s.s:5988:2:
 error: out of range pc-relative fixup value
vldrd8, LCPI102_0
^


ghc80302_6-arm7.s.gz
Description: GNU Zip compressed data
___
ghc-devs mailing list
ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs


Re: Tentative high-level plans for 7.10.1

2014-10-06 Thread Austin Seipp
The steps for making a GHC release are here:
https://ghc.haskell.org/trac/ghc/wiki/MakingReleases

So, for the record, making a release is not *that* arduous, but it
does take time. On average it will take me about 1 day or so to go
from absolutely-nothing to release announcement:

 1. Bump version, update configure.ac, tag.
 2. Build source tarball (this requires 1 build, but can be done very quickly).
 3. Make N binary builds for each platform (the most time consuming
part, as this requires heavy optimizations in the builds).
 4. Upload documentation for all libraries.
 5. Update webpage and upload binaries.
 6. Send announcement.
 7. Upload binaries from other systems later.

Herbert has graciously begun taking care of stewarding and uploading
the libraries. So, there are a few steps we could introduce to
alleviate this process technically in a few ways, but ultimately all
of these have to happen, pretty much (regardless of the automation
involved).

But I don't think this is the real problem.

The real problem is that GHC moves forward in terms of implementation
extremely, extremely quickly. It is not clear how to reconcile this
development pace with something like needing dozens of LTS releases
for a stable version. At least, not without a lot of concentrated
effort from almost every single developer. A lot of it can be
alleviated through social process perhaps, but it's not strictly
technical IMO.

What do I mean by that? I mean that:

 - We may introduce a feature in GHC version X.Y
 - That might have a bug, or other problems.
 - We may fix it, and in the process, fix up a few other things and
refactor HEAD, which will be GHC X.Y+2 eventually.
 - Repeat steps 2-3 a few times.
 - Now we want to backport the fixes for that feature in HEAD back to X.Y.
 - But GHC X.Y has *significantly* diverged from HEAD in that
timeframe, because of step 3 being repeated!

In other words: we are often so aggressive at refactoring code that
the *act* of backporting in and of itself can be complicated, and it
gets harder as time goes on - because often the GHC of a year ago is
so much different than the GHC of today.

As a concrete example of this, let's look at the changes between GHC
7.8.2 and GHC 7.8.3:

https://github.com/ghc/ghc/compare/ghc-7.8.2-release...ghc-7.8.3-release

There are about ~110 commits between 7.8.2 and 7.8.3. But as the 7.8
branch lived on, backporting fixes became significantly more complex.
In fact, I estimate close to 30 of those commits were NOT direct 7.8
requirements - but they were brought in because _actual fixes_ were
dependent on them, in non-trivial ways.

Take for example f895f33 by Simon PJ, which fixes #9023. The problem
with f895f33 is that by the time we fixed the bug in HEAD with that
commit, the history had changed significantly from the branch. In
order to get f895f33 to plant easily, I had to backport *at least* 12
to 15 other commits, which it was dependent upon, and commits those
commits were dependent upon, etc etc. I did not see any non-trivial
way to do this otherwise.

I believe at one point Gergo backported some of his fixes to 7.8,
which had since become 'non applicable' (and I thank him for that
greatly), but inevitably we instead brought along the few extra
changes anyway, since they were *still* needed for other fixes. And
some of them had API changes. So the choice was to rewrite 4 patches
for an old codebase completely (the work being done by two separate
people) or backport a few extra patches.

The above is obviously an extreme case. But it stands to reason this
would _only happen again_ with 7.8.4, probably even worse since more
months of development have gone by.

An LTS release would mandate things like no-API-changes-at-all, but
this significantly limits our ability to *actually* backport patches
sometimes, like the above, due to dependent changes. The alternative,
obviously, is to do what Gergo did and manually re-write such a fix
for the older branch. But that means we would have had to do that for
*every patch* in the same boat, including 2 or 3 other fixes we
needed!

Furthermore, while I am a release manager and do think I know a bit
about GHC, it is hopeless to expect me to know it all. I will
absolutely require coordinated effort to help develop 'retropatches'
that don't break API compatibility, from active developers who are
involved in their respective features. And they are almost all
volunteers! Simon and I are the only ones who wouldn't qualify on
that.

So - at what point does it stop becoming 'backporting fixes to older
versions' and instead become literally working on the older version
of the compiler AND the new one in tandem? Given our rate of churn
and change internally, this seems like it would be a significant
burden in general to ask of developers. If we had an LTS release of
GHC that lasted 3 years for example, that would mean developers are
expected to work on the current code of their own, *and their old code
for the next three