[Git][ghc/ghc][wip/hadrian-sys-cabal] 662 commits: Implement a sanity check for CCS fields in profiling builds

Matthew Pickering gitlab at gitlab.haskell.org
Sat May 18 22:38:18 UTC 2019



Matthew Pickering pushed to branch wip/hadrian-sys-cabal at Glasgow Haskell Compiler / GHC


Commits:
82d1a88d by Ömer Sinan Ağacan at 2019-01-10T09:42:04Z
Implement a sanity check for CCS fields in profiling builds

This helped me debug one of the bugs in #15508. I'm not sure if this is
a good idea, but it worked for me, so wanted to submit this as a MR.

- - - - -
c2455e64 by Matthew Pickering at 2019-01-11T08:45:33Z
Run typed splices in the zonker

Summary:
This fixes #15471

In the typechecker we check that the splice has the right type but we
crucially don't zonk the generated expression. This is because we might
end up unifying type variables from outer scopes later on.

Reviewers: simonpj, goldfire, bgamari

Subscribers: rwbarton, carter

GHC Trac Issues: #15471

Differential Revision: https://phabricator.haskell.org/D5286

- - - - -
92b684de by Richard Eisenberg at 2019-01-11T21:46:31Z
More minor comment improvements

[skip ci]

- - - - -
cb2349a4 by Ömer Sinan Ağacan at 2019-01-12T06:02:30Z
Documentation and refactoring in CCS related code

- Remove REGISTER_CC and REGISTER_CCS macros, add functions registerCC
  and registerCCS to Profiling.c.

- Reduce scope of symbols: CC_LIST, CCS_LIST, CC_ID, CCS_ID

- Document CC_LIST and CCS_LIST

- - - - -
74cd4ec5 by Ömer Sinan Ağacan at 2019-01-12T07:11:19Z
Fix raiseAsync() UNDERFLOW_FRAME handling in profiling runtime

UNDERFLOW_FRAMEs don't have profiling headers so we have to use the
AP_STACK's function's CCS as the new frame's CCS.

Fixes one of the many bugs caught by concprog001 (#15508).

- - - - -
19670bc3 by Ömer Sinan Ağacan at 2019-01-12T11:52:38Z
Fix negative mutator time in GC stats in prof builds

Because garbage collector calls `retainerProfile()` and `heapCensus()`,
GC times normally include some of PROF times too. To fix this we have
these lines:

    // heapCensus() is called by the GC, so RP and HC time are
    // included in the GC stats.  We therefore subtract them to
    // obtain the actual GC cpu time.
    stats.gc_cpu_ns      -=  prof_cpu;
    stats.gc_elapsed_ns  -=  prof_elapsed;

These variables are later used for calculating GC time excluding the
final GC (which should be attributed to EXIT).

    exit_gc_elapsed      = stats.gc_elapsed_ns - start_exit_gc_elapsed;

The problem is if we subtract PROF times from `gc_elapsed_ns` and then
subtract `start_exit_gc_elapsed` from the result, we end up subtracting
PROF times twice, because `start_exit_gc_elapsed` also includes PROF
times.

We now subtract PROF times from GC after the calculations for EXIT and
MUT times. The existing assertion that checks

    INIT + MUT + GC + EXIT = TOTAL

now holds. When we subtract PROF numbers from GC, and a new assertion

    INIT + MUT + GC + PROF + EXIT = TOTAL

also holds.

Fixes #15897. New assertions added in this commit also revealed #16102,
which is also fixed by this commit.

- - - - -
076f5862 by Ryan Scott at 2019-01-13T00:05:46Z
Don't invoke dataConSrcToImplBang on newtypes

- - - - -
448f0e7d by Ömer Sinan Ağacan at 2019-01-13T05:16:50Z
Fix checkPtrInArena

(See comments)

- - - - -
a34ee615 by Ömer Sinan Ağacan at 2019-01-13T05:17:20Z
Refactor GHCi UI to fix #11606, #12091, #15721, #16096

Instead of parsing and executing a statement or declaration directly we
now parse them first and then execute in a separate step. This gives us
the flexibility to inspect the parsed declaration before execution.
Using this we now inspect parsed declarations, and if it's a single
declaration of form `x = y` we execute it as `let x = y` instead, fixing
a ton of problems caused by poor declaration support in GHCi.

To avoid any users of the modules I left `execStmt` and `runDecls`
unchanged and added `execStmt'` and `runDecls'` which work on parsed
statements/declarations.

- - - - -
4ad9ffd3 by Peter Trommler at 2019-01-13T21:36:07Z
PPC NCG: Reduce memory consumption emitting string literals

- - - - -
7b12b3f0 by Ben Gamari at 2019-01-14T14:30:40Z
itimer: Don't free condvar until we know ticker is stopped

When we are shutting down the pthread ticker we signal the start_cond condition
variable to ensure that the ticker thread wakes up and exits in a reasonable
amount of time. Previously, when the ticker thread would shut down it was
responsible for freeing the start_cond condition variable. However, this would
lead to a race wherein the ticker would free start_cond, then the main thread
would try to signal it in an effort to wake the ticker (#16150).

Avoid this by moving the mutex destruction to the main thread.

- - - - -
ce11f6f2 by Ben Gamari at 2019-01-14T14:30:40Z
rts: Use always-available locking operations in pthread Itimer implementation

Previously we ACQUIRE_LOCK and RELEASE_LOCK but these compile to a noop in the
non-threaded RTS, as noted in #16150. Use OS_ACQUIRE_LOCK and OS_RELEASE_LOCK
instead.

- - - - -
cb31b23d by Herbert Valerio Riedel at 2019-01-14T14:30:40Z
Update `Cabal` submodule

This also requires adapting `ghc-pkg` to use the new Cabal parsing API
as the old ReadP-based one has finally been evicted for good.

Hadrian bit finished by: Ben Gamari <ben at smart-cactus.org>

- - - - -
0f3c04e4 by Ben Gamari at 2019-01-14T14:30:40Z
testsuite: Show both test name and way in JUnit output

- - - - -
ec752c4c by Andrey Mokhov at 2019-01-14T14:30:40Z
Hadrian: Update README.md

* Update or remove a few outdated paragraphs
* Use consistent naming (e.g. "Stage1" instead of occasionally "stage1")
* Rewrite acknowledgements
* Some more minor revisions

- - - - -
ef8fedc1 by Andrey Mokhov at 2019-01-14T14:30:40Z
Clarify when to follow the instructions in doc/windows.md.

See https://gitlab.haskell.org/ghc/ghc/merge_requests/100#note_2349.

- - - - -
2f07a97c by Andrey Mokhov at 2019-01-14T14:30:40Z
Document the Shake Lint feature.

- - - - -
69947d58 by Ben Gamari at 2019-01-14T14:30:40Z
gitlab-ci: Cleanup Windows builds

See Note [Cleanup on Windows].

- - - - -
83a22066 by Ryan Scott at 2019-01-15T13:08:43Z
Fix #16114 by adding a validity check to rnClsInstDecl

- - - - -
e63518f5 by Ryan Scott at 2019-01-15T21:02:07Z
Fix #16116 by removing badAssocRhs

- - - - -
9dc56b61 by Ryan Scott at 2019-01-15T21:09:27Z
Control validity-checking of type synonym applications more carefully

Trac #16059 shows that when validity checking applications of type
synonyms, GHC sometimes wasn't checking the expanded type enough.
We must be careful, however, since checking both the expanded type as
well as the arguments to the type synonym can lead to exponential
blowup (see https://ghc.haskell.org/trac/ghc/ticket/16059#comment:4).
Nor can we omit checking either the expanded type or the argument for
correctness reasons.

The solution here is to introduce a new `ExpandMode` data type that
is plumbed through all of the type-validity-checking functions in
`TcValidity`. `ExpandMode` dictates whether we only check the
expanded type (`Expand`), only check the arguments (`NoExpand), or
both (`Both`). Importantly, if we check `Both` in the function for
validity checking type synonym applications, then we switch to
`NoExpand` when checking the arguments so as to avoid exponential
blowup. See `Note [Correctness and performance of type synonym validity
checking]` for the full story.

- - - - -
3429ec8d by Ryan Scott at 2019-01-15T21:09:27Z
Bump Cabal submodule

- - - - -
36e3e747 by Ryan Scott at 2019-01-15T21:09:27Z
@simonpj's suggested refactor

- - - - -
ce2f77d5 by Tom Sydney Kerckhove at 2019-01-16T17:05:35Z
hWaitForInput-accurate-socket test

- - - - -
9fb744bd by Roland Senn at 2019-01-16T19:10:49Z
GHCi ignores cmd line flags XMonomorphismRestr.. XNoExtendedDef..#10857

- - - - -
f78048f6 by Roland Senn at 2019-01-16T19:10:49Z
Change comments as requested by code review. #10857

- - - - -
da2d9cf8 by Alec Theriault at 2019-01-16T19:13:03Z
Hadrian: configure packages with right 'htmldir'

This means that we can query the package DB for haddock interfaces.
Haddock uses this in its testsuite. 'cabal {v1-,v2,}-haddock' also
uses this.

Also thread through to Haddock package-specific overrides of GHC
warnings.

- - - - -
3f46cffc by Peter Trommler at 2019-01-16T19:13:14Z
PPC NCG: Refactor stack allocation code

There is only one place where UPDATE_SP was used. Instead of the
UPDATE_SP pseudo instruction build the list of instructions directly.

- - - - -
ea79978b by Peter Trommler at 2019-01-16T19:13:14Z
Fix reference to stack code in comment

- - - - -
c155ac9c by Peter Trommler at 2019-01-16T19:13:14Z
Fix filename in comment again

- - - - -
6a7a6b86 by Zejun Wu at 2019-01-16T19:13:26Z
Introduce ghci command wrapper

Introduce ghci command wrapper, which can be used to cutomize ghci:
* process additionals actions before/after the command
* handle particular exceptions in given ways
* logging stats

We also split the timing and printing part of `timeIt` into different
functions.

- - - - -
2f65025e by Alec Theriault at 2019-01-16T19:16:51Z
Hadrian: support extra libraries + OSX rpath

Summary:
This fixes some of the issues that surfaced when trying to build
dynamic GHC on OSX. Unfortunately, due some other `libffi`
issues, this doesn't completely fix dynamic builds on OSX.

  - Use 'extra-libraries' from .cabal files instead of hardcoding
    which packages need which extra libs. Also add support for
    'extra-lib-dirs'.

  - Make sure Hadrian looks in the right places to support both
    plain '<pkg>.buildinfo' and '<pkg>.buildinfo.in' files.

  - Make the '-rpath' support more robust across OS's (it previously
    didn't work on OSX and possibly windows either).

Reviewers: angerman, alpmestan, adamse, DavidEichmann, bgamari, Phyx

Subscribers: rwbarton, carter

GHC Trac Issues: #15990

Differential Revision: https://phabricator.haskell.org/D5409

- - - - -
9fb2702d by Alec Theriault at 2019-01-16T19:17:07Z
Create folder if missing for .hie files

Summary:
This matches the existing behaviour for .hi files: if the user requests
the interface file be written in some location, we should create the
parent folder if it doesn't already exist.

Reviewers: bgamari, sjakobi

Reviewed By: sjakobi

Subscribers: sjakobi, rwbarton, carter

Differential Revision: https://phabricator.haskell.org/D5463

- - - - -
582a96f4 by Alec Theriault at 2019-01-16T19:17:11Z
Support printing `integer-simple` Integers in GHCi

This means that `:p` no longer leaks the implementation details of
`Integer` with `integer-simple`. The `print037` test case should
exercise all possible code paths for GHCi's code around printing
`Integer`s (both in `integer-simple` and `integer-gmp`).

`ghc` the package now also has a Cabal `integer-simple` flag (like the
`integer-gmp` one).

- - - - -
6e320c27 by Alec Theriault at 2019-01-16T19:17:11Z
Match `integer-simple`'s API with `integer-gmp`

In `integer-simple`:

  * Added an efficient `popCountInteger` and `bitInteger`
  * Added an efficient `gcdInteger` and `lcmInteger`
  * Made `testBitInteger` more efficient

- - - - -
f7def747 by Alec Theriault at 2019-01-16T19:17:11Z
Remove from `base` obsolete CPP for `integer-gmp`

  * `GHC.Natural` now exports the same functions (regardless of integer backend)
  * remove unnecessary CPP around instances
  * remove the 'OPTIMISE_INTEGER_GCD_LCM' flag - almost all of those optimizations
    now work regardless of which integer backend is used

Note that some CPP still remains for situations where there are backend-specific
optimization hacks (like a more efficient GMP-only `gcd` for `Int#` and `Word#`).

- - - - -
d2eb344a by Alec Theriault at 2019-01-16T19:17:11Z
Fix tests for `integer-simple`

A bunch of tests for `integer-simple` were now broken for a foolish reason:
unlike the `integer-gmp` case, there is no CorePrep optimization for turning
small integers directly into applications of `S#`.

Rather than port this optimization to `integer-simple` (which would involve
moving a bunch of `integer-simple` names into `PrelNames`), I switched
as many tests as possible to use `Int`.

The printing of `Integer` is already tested in `print037`.

- - - - -
a303695b by Alec Theriault at 2019-01-16T19:17:11Z
try to fix CI

- - - - -
236abdb8 by Ben Price at 2019-01-16T19:17:20Z
rts: Allow heap prof by closure type in prof way

Complete b7b6617a90824303daf555c817f538cd9c792671 (see ticket #15086) to
actually enable profiling by closure type in the profiling rts. I.e.
+RTS -p -hT is now accepted.

- - - - -
61f178b6 by Ben Price at 2019-01-16T19:17:20Z
doc: reorder heap profiling information in +RTS -?

- - - - -
6acb36d8 by Ben Price at 2019-01-16T19:17:20Z
doc: behaviour of +RTS -h depends on profiling

The rts option `-h` behaves as `-hT` when compiled without profiling,
and `-hc` when compiled with profiling. Add a note to the user's guide
highlighting this inconsistency.

- - - - -
ad5075d9 by Alp Mestanogullari at 2019-01-16T19:17:28Z
crosslink hadrian/README.md and hadrian/doc/make.md

- - - - -
78ae2d5d by Alp Mestanogullari at 2019-01-16T19:17:28Z
typo

- - - - -
7218270d by Andrey Mokhov at 2019-01-16T19:17:34Z
Switch to the untracked version of getDirectoryFiles when scanning for GMP objects

See https://ghc.haskell.org/trac/ghc/ticket/15971.

This is work in progress: this commit does the right thing, but does not
yet fix the ticket.

- - - - -
bfb3e307 by Andrey Mokhov at 2019-01-16T19:17:34Z
Disable Shake Lint by default.

- - - - -
8d594bef by Andrey Mokhov at 2019-01-16T19:17:38Z
Hadrian: Use the Cabal build script on Windows by default

The Stack build script `build.stack.bat` currently fails on Windows
when invoked with the `--configure` flag, see:

https://ghc.haskell.org/trac/ghc/ticket/15982

The Cabal build script `build.cabal.bat` works reliably on my Windows
machine, so I am proposing to switch to it by default, that is, to run
it from the default `build.bat` script.

The Stack build script can still be run directly if need be.

- - - - -
4204ed58 by Steve Hart at 2019-01-16T19:17:42Z
Fix typo in maybeToList documentation
- - - - -
fe1f97cc by Steve Hart at 2019-01-16T19:17:42Z
Revert "Fix typo in maybeToList documentation"

This reverts commit af210f40ce7ad7b3351abc988b0351446e8b639e
- - - - -
46d46ede by Steve Hart at 2019-01-16T19:17:42Z
Improve clarity of documentation for maybeToList
- - - - -
2e059120 by Alec Theriault at 2019-01-16T19:17:47Z
Hadrian: handle Haddock's resource directory

Fixes #16105

  * Require Haddock's resource as runtime dependencies of the Haddock
    builder. This means we no longer have to `need` particular resources
    in every other documentation rule.

  * Do a _tracked_ copy of both the 'html' and 'latex' folder resource
    folders.

  * Move resources into `stage1/lib` (NB: the `haddock` binary goes in
    `stage1/bin`). Besides now actually matching the Haddock script
    wrapper generated by BinaryDist, this also prepares for Haddock
    in relocatable build folder detecting its own resources.

- - - - -
8765c1e6 by Alec Theriault at 2019-01-16T19:17:47Z
Make sure 'haddock' package also copies resources

...and does so in the lib folder of the right stage

- - - - -
6aaa0655 by Ömer Sinan Ağacan at 2019-01-16T19:19:44Z
Documentation for StgRetFun

- - - - -
a1e9cd6a by Ömer Sinan Ağacan at 2019-01-17T13:57:20Z
Add test for #16197

- - - - -
b684675a by Peter Trommler at 2019-01-17T18:39:40Z
RTS: Use ELF v1 convention on all powerpc64 systems

- - - - -
64020fea by Peter Trommler at 2019-01-17T18:39:40Z
PPC NCG: Make calling convention more general

All operating systems except AIX and Darwin follow the ELF
specification.

- - - - -
539a8f0e by Peter Trommler at 2019-01-17T18:39:40Z
PPC NCG: Make `stackHeaderSize` more general

- - - - -
9477bf59 by Peter Trommler at 2019-01-17T18:39:40Z
PPC NCG: GOT declaration for all 64-bit ELF systems

- - - - -
341aa591 by Peter Trommler at 2019-01-17T18:39:40Z
PPC NCG: Register definitions for all 64-bit systems

- - - - -
2d75174b by Peter Trommler at 2019-01-17T18:39:40Z
Fix tab and improve whitespace

- - - - -
d512b330 by Peter Trommler at 2019-01-17T18:39:40Z
PPC NCG: Rename constructors

Rename constructors in calling convention data type to reflect the
fact that they represent an ELF ABI not only a Linux ABI.

- - - - -
469fe613 by Alec Theriault at 2019-01-17T18:39:40Z
'DynFlag'-free version of 'mkParserFlags'

Summary:
This is a fixed version of the reverted d2fbc33c4ff3074126ab71654af8bbf8a46e4e11
and  5aa29231ab7603537284eff5e4caff3a73dba6d2.

Obtaining a `DynFlags` is difficult, making using the lexer/parser
for pure parsing/lexing unreasonably difficult, even with `mkPStatePure`.
This is despite the fact that we only really need

    * language extension flags
    * warning flags
    * a handful of boolean options

The new `mkParserFlags'` function makes is easier to directly construct a
`ParserFlags`. Furthermore, since `pExtsBitmap` is just a footgun, I've gone
ahead and made `ParserFlags` an abstract type.

Also, we now export `ExtBits` and `getBit` instead of defining/exporting a
bunch of boilerplate functions that test for a particular 'ExtBits'.
In the process, I also

  * cleaned up an unneeded special case for `ITstatic`
  * made `UsePosPrags` another variant of `ExtBits`
  * made the logic in `reservedSymsFM` match that of `reservedWordsFM`

Test Plan: make test

Reviewers: bgamari, alanz, tdammers

Subscribers: sjakobi, tdammers, rwbarton, mpickering, carter

GHC Trac Issues: #11301

Differential Revision: https://phabricator.haskell.org/D5405

- - - - -
96e31b50 by Simon Peyton Jones at 2019-01-17T18:39:40Z
Comments about data constructor wrappers

- - - - -
7b7b338b by Simon Peyton Jones at 2019-01-17T18:39:40Z
Remove export of checkValidFamPats, never used

- - - - -
56c26f5e by Simon Peyton Jones at 2019-01-17T18:39:40Z
Small refactor

...to use the same error message rather than duplicating it

- - - - -
8c3133a6 by Ömer Sinan Ağacan at 2019-01-18T08:51:59Z
Comments in stranal test declarations

- - - - -
b14f5404 by Matthew Pickering at 2019-01-18T13:35:08Z
Fix typo in DsExpr
- - - - -
c9756dbf by Herbert Valerio Riedel at 2019-01-18T22:01:56Z
Prepare source-tree for base-4.13 MFP bump

- - - - -
b137ab75 by Moritz Angermann at 2019-01-20T10:24:21Z
[T16199] Adds a verify-packages script

- - - - -
800d77e8 by Chaitanya Koparkar at 2019-01-20T10:24:59Z
Mention DerivingStrategies in the warning when DAC and GND are both enabled

Summary:

When DeriveAnyClass and GeneralizedNewtypeDeriving are both enabled,
GHC prints out a warning that specifies the strategy it used to
derive a class. This patch updates the warning to mention that users
may pick a particular strategy by using DerivingStrategies.

Test plan: make test TEST=T16179

- - - - -
6e7aa5e9 by Matthew Pickering at 2019-01-20T14:19:42Z
Remove TODO in HsExpr

It is correct to be `GhcTc` as the data type is for expressions which are inside splices 
so they can be delayed until desugaring. 
- - - - -
f035504b by Sylvain Henry at 2019-01-21T02:35:20Z
Add support for ASM foreign files (.s) in TH (#16180)

- - - - -
38d837a4 by Matthew Pickering at 2019-01-21T17:17:20Z
Fix typo in TcRnTypes.hs [skip ci]
- - - - -
5ebcfc04 by Ben Gamari at 2019-01-21T23:05:52Z
gitlab: Add merge request template

This begins to define our expectations of contributions.

[skip-ci]

- - - - -
7262a815 by Ben Gamari at 2019-01-21T23:06:30Z
Add CODEOWNERS

GitLab uses this file to suggest reviewers based upon the files that a Merge
Request touches.

[skip-ci]

- - - - -
64ce6afa by Samuel Holland at 2019-01-21T23:28:38Z
Extend linker-script workaround to work with musl libc

GHC has code to handle unsuffixed .so files that are linker scripts
pointing to the real shared library. The detection is done by parsing
the result of `dlerror()` after calling `dlopen()` and looking for
certain error strings. On musl libc, the error message is "Exec format
error", which happens to be `strerror(ENOEXEC)`:

```
$ cat tmp.c
#include <dlfcn.h>
#include <stdio.h>

int main(void) {
        dlopen("libz.so", RTLD_NOW | RTLD_GLOBAL);
        puts(dlerror());
        return 0;
}
$ gcc -o tmp tmp.c
$ ./tmp
Error loading shared library libz.so: Exec format error
$
```

This change fixes the workaround to also work on musl libc.

Link: https://phabricator.haskell.org/D5474

- - - - -
a5373c1f by Simon Peyton Jones at 2019-01-22T08:02:20Z
Fix bogus worker for newtypes

The "worker" for a newtype is actually a function
with a small (compulsory) unfolding, namely a cast.

But the construction of this function was plain wrong
for newtype /instances/; it cast the arguemnt to the
family type rather than the representation type.

This never actually bit us because, in the case of a
family instance, we immediately cast the result to
the family type.  So we get
   \x. (x |> co1) |> co2

where the compositio of co1 and co2 is ill-kinded.
However the optimiser (even the simple optimiser)
just collapsed those casts, ignoring the mis-match
in the middle, so we never saw the problem.

Trac #16191 is indeed a dup of #16141; but the resaon
these tickets produce Lint errors is not the unnecessary
forcing; it's because of the ill-typed casts.

This patch fixes the ill-typed casts, properly.  I can't
see a way to trigger an actual failure prior to this
patch, but it's still wrong wrong wrong to have ill-typed
casts, so better to get rid of them.

- - - - -
c9fe14cc by Herbert Valerio Riedel at 2019-01-22T17:11:32Z
Update transformers module

- - - - -
54a50a6e by Ben Gamari at 2019-01-23T19:07:28Z
gitlab-ci: Reenable Hadrian build on Windows

- - - - -
5fcee8aa by Ben Price at 2019-01-23T19:07:28Z
users guide: consistent spelling of inlinable

- - - - -
395c8eaa by Ben Price at 2019-01-23T19:07:28Z
users guide: fix typesetting of pragmas

- - - - -
cfe64019 by Matthew Pickering at 2019-01-23T19:07:28Z
Fix hadrian prof flavour so that it builds a profiled version of GHC

In Alp's refactoring of `getProgramContexts` he removed a call to
`getProgramContext` which was where the logic for this used to be
implemented.

Fixes #16214

- - - - -
33aba191 by Joachim Breitner at 2019-01-23T19:07:28Z
Minor typo in docs for KProxy

really minor, but it annoyed me when reading it :-)

- - - - -
b19ee0e9 by Joachim Breitner at 2019-01-23T19:07:28Z
Add myself to CODEOWNERS for a few files

- - - - -
512a5f36 by Ben Gamari at 2019-01-23T19:07:28Z
testsuite: Ensure that config.{msys,cygwin} are initialized

Reviewers: monoidal

Reviewed By: monoidal

Subscribers: monoidal, rwbarton, carter

Differential Revision: https://phabricator.haskell.org/D5056

- - - - -
d26869ac by Alec Theriault at 2019-01-23T19:07:28Z
Hadrian: install patches 'haddock-{html,interface}'

Since the `$(docdir)` can be picked independently from the `$(libdir)`,
we need to make sure that that the `haddock-html` and `haddock-interface`
fields in the package DB (which is in the `$(libdir)`) get updated to
point to the appropriate places in the `$(docdir)`.

NB: in the make system, `ghc-cabal` would cover this sort of thing by
re-running `configure` on installation, but here we get away with a
couple lines of `sed` and a call to `ghc-pkg recache`.

Fixes #16202.

- - - - -
0b705fad by Ben Gamari at 2019-01-23T19:07:28Z
testsuite: Mark ghci063 as broken on Darwin

This is the last failing test on Darwin preventing us from disallowing CI
failures. See #16201.

- - - - -
57142eb9 by Ben Gamari at 2019-01-23T19:07:28Z
testsuite: Mark T16180 as broken on Darwin

See #16218.

- - - - -
daff24bc by Ben Gamari at 2019-01-23T19:07:28Z
gitlab-ci: Disallow failure

- - - - -
efc95841 by Alec Theriault at 2019-01-23T19:07:28Z
Hadrian: support in-tree GMP

Summary:
This adds top-level configure flags '--with-intree-gmp' and
'--with-framework-preferred', both of which are especially relevant
on MacOS.

Besides gaining two new flags, Hadrian also had to be taught what to
do with the 'framework' in .cabal files.

Test Plan:
./boot && ./configure --with-intree-gmp && ./hadrian/build.sh
./boot && ./configure --with-gmp-framework-preferred && ./hadrian/build.sh # on macos

Reviewers: carter, snowleopard, alpmestan, hvr, goldfire, bgamari

Subscribers: rwbarton, erikd

GHC Trac Issues: #16001

Differential Revision: https://phabricator.haskell.org/D5417

- - - - -
cd45f8c4 by Alec Theriault at 2019-01-23T19:07:28Z
Update Darwin CI to use new toplevel --with-intree-gmp configure flag

- - - - -
a90a2aea by Ben Gamari at 2019-01-23T19:07:28Z
gitlab: Collect artifacts on Windows

- - - - -
5341edf3 by Alec Theriault at 2019-01-23T19:07:28Z
Error out of invalid Int/Word bit shifts

Although the Haddock's for `shiftL` and `shiftR` do require the number
of bits to be non-negative, we should still check this before calling
out to primitives (which also have undefined behaviour for negative bit
shifts).

If a user _really_ wants to bypass checks that the number of bits is
sensible, they already have the aptly-named `unsafeShiftL`/`unsafeShiftR`
at their disposal.

See #16111.

- - - - -
c9a02dfc by Ben Gamari at 2019-01-23T19:07:28Z
gitlab-ci: Drop CircleCI jobs

It's pretty unlikely we will be going back to circleci at this point

[skip-ci]

- - - - -
bb2acfe0 by Gabor Greif at 2019-01-23T19:07:28Z
A few typofixes

- - - - -
b397e979 by Gabor Greif at 2019-01-23T19:07:28Z
Minor refactor [ci skip]

- - - - -
35c58c33 by Ben Gamari at 2019-01-23T19:07:28Z
testsuite: Skip ghcilink002 when unregisterised

See #16085.

- - - - -
886ddb27 by Ben Gamari at 2019-01-23T19:07:28Z
gitlab-ci: Explicitly clear dependencies of all jobs

Apparently GitLab CI defaults to declaring all jobs of the previous
stage as dependencies of a job. This meant that we would end up
downloading all of our binary distributions during the `cleanup` stage,
eating up a truly remarkable amount of S3 tranfers.

- - - - -
571e45d6 by Richard Eisenberg at 2019-01-25T03:34:08Z
Add Simon and Richard as more CODEOWNERS

[skip ci]

- - - - -
3cbee255 by Sebastian Graf at 2019-01-26T17:44:23Z
Add @sgraf to CODEOWNERS

[skip ci]
- - - - -
1dd251b8 by Ben Gamari at 2019-01-27T13:32:12Z
testsuite: Add predicate for CPU feature availability

Previously testing code-generation for ISA extensions was nearly impossible
since we had no ability to determine whether the host supports the needed
extension. Here we fix this by introducing a simple /proc/cpuinfo-based
testsuite predicate. We really ought to

- - - - -
372b5d1b by Ben Gamari at 2019-01-27T13:32:12Z
testsuite: Add test for #16104

- - - - -
0d9f105b by Ben Gamari at 2019-01-27T13:32:12Z
GhcPlugins: Fix lookup of TH names

Previously `thNameToGhcName` was calling `lookupOrigNameCache` directly, which
failed to handle the case that the name wasn't already in the name cache. This
happens, for instance, when the name was in scope in a plugin being used during
compilation but not in scope in the module being compiled. In this case we the
interface file containing the name won't be loaded and `lookupOrigNameCache`
fails. This was the cause of #16104.

The solution is simple: use the nicely packaged `lookupOrigIO` instead.

- - - - -
fc44e0b2 by Ben Gamari at 2019-01-27T13:32:12Z
testsuite: Normalise style

- - - - -
236beaca by Ben Gamari at 2019-01-27T13:32:12Z
testsuite: Remove directories that already exist when seeding extra_files

Otherwise the testsuite driver crashes when run multiple times with CLEANUP=NO
on a test containing such extra_files.

- - - - -
55bbe9cc by Ben Gamari at 2019-01-27T13:32:12Z
testsuite: Mark hWaitForInput-accurate-socket as requiring unix

It imports System.Posix.IO.

- - - - -
f75c86ab by Herbert Valerio Riedel at 2019-01-27T13:32:12Z
Update binary submodule to latest master branch tip

- - - - -
d0b8a16e by Herbert Valerio Riedel at 2019-01-27T13:32:12Z
Update Cabal submodule to latest master branch tip

- - - - -
5cb071af by Adam Sandberg Eriksson at 2019-01-27T13:32:12Z
hadrian: use new-exec to make sure alex & happy are in PATH (#16120)

- - - - -
3cf12e60 by Alan Zimmerman at 2019-01-27T13:32:12Z
check-api-annotations checks for annotation preceding its span

For an API annotation to be useful, it must not occur before the span
it is enclosed in.

So, for check-api-annotation output, a line such as

((Test16212.hs:3:22-36,AnnOpenP), [Test16212.hs:3:21]),

should be flagged as an error, as the AnnOpenP location of 3:21
precedes its enclosing span of 3:22-26.

This patch does this.

Closes #16217

- - - - -
022a7176 by Ben Gamari at 2019-01-27T13:32:12Z
testsuite: Skip T1288_ghci in unregisterised

As pointed out in #16085, these ghci tests are fragile in the unregisterised
way.

- - - - -
dc6fd390 by Ben Gamari at 2019-01-27T13:32:12Z
testsuite: Skip foreignInterruptible in unregisterised way

See #15467.

- - - - -
def84a10 by Ben Gamari at 2019-01-27T13:32:12Z
testsuite: Add tests from #11982

- - - - -
18bd2724 by Ömer Sinan Ağacan at 2019-01-27T13:32:31Z
Add myself to a few more places

- - - - -
019127b8 by Moritz Angermann at 2019-01-27T13:32:31Z
Update CODEOWNERS

- - - - -
e7164384 by Simon Marlow at 2019-01-27T13:32:55Z
Add @simonmar to various things in CODEOWNERS

- - - - -
10faf44d by Matthew Pickering at 2019-01-27T13:32:55Z
Don't overwrite the set log_action when using --interactive

-ddump-json didn't work with --interactive as --interactive overwrote
the log_action in terms of defaultLogAction.

Reviewers: bgamari

Subscribers: rwbarton, thomie, carter

GHC Trac Issues: #14078

Differential Revision: https://phabricator.haskell.org/D4533

- - - - -
b89b6e71 by Alec Theriault at 2019-01-28T04:26:56Z
Fix incorrectly named configure options

Although we should use 'AC_ARG_ENABLE' for boolean flags, it also
means options get named '--enable-*', not '--with-*'. This should
unbreak the --with-intree-gmp option.

- - - - -
7223b44d by klebinger.andreas at gmx.at at 2019-01-28T04:27:55Z
Fix regDotColor for amd64.

Add missing color mappings to regDotColor for amd64.
Also set fakeRegs to red instead of xmm regs.

- - - - -
f8605fa2 by Tamar Christina at 2019-01-28T04:28:10Z
Update CODEOWNERS files with utils

- - - - -
6da9f4c8 by Ben Gamari at 2019-01-28T04:30:00Z
gitlab-ci: Fix Windows cleanup command line

Why is it so hard to delete a directory's contents without deleting the
directory itself in Windows? This will forever remain a mystery.

- - - - -
79a5afb6 by Andrew Martin at 2019-01-28T04:30:47Z
Test that hsc2hs works with promoted data constructors

- - - - -
77974922 by Richard Eisenberg at 2019-01-28T04:33:40Z
Some refactoring in tcInferApps

Should be no change in behavior, but this makes the control
flow a little more apparent.

- - - - -
b1e569a5 by Ryan Scott at 2019-01-28T17:23:16Z
Use sigPrec in more places in Convert and HsUtils

Trac #16183 was caused by TH conversion (in `Convert`) not properly
inserting parentheses around occurrences of explicit signatures where
appropriate, such as in applications, function types, and type family
equations. Solution: use `parenthesizeHsType sigPrec` in these
places. While I was in town, I also updated `nlHsFunTy` to do the
same thing.

- - - - -
7cdcd3e1 by Roland Senn at 2019-01-28T21:53:59Z
Fix #12509: ghci -XSafe fails in an inscrutable way

- - - - -
76c8fd67 by Ben Gamari at 2019-01-30T06:06:12Z
Batch merge

- - - - -
172a5933 by Ben Gamari at 2019-01-30T15:05:19Z
Revert "Batch merge"

This reverts commit 76c8fd674435a652c75a96c85abbf26f1f221876.

- - - - -
bdb559a6 by Ben Gamari at 2019-01-30T15:06:31Z
testsuite: Introduce makefile_test

- - - - -
513a449c by Ben Gamari at 2019-01-30T15:06:31Z
testsuite: Use makefile_test

This eliminates most uses of run_command in the testsuite in favor of the more
structured makefile_test.

- - - - -
cc2261d4 by David Eichmann at 2019-01-30T15:06:31Z
Performance tests: recover a baseline from ancestor commits and CI results.

gitlab-ci: push performance metrics as git notes to the "GHC Performance Notes" repository.

- - - - -
c1d9416f by Dmitry Ivanov at 2019-01-30T15:06:31Z
Compile count{Leading,Trailing}Zeros to corresponding x86_64 instructions under -mbmi2

This works similarly to existing implementation for popCount.
Trac ticket: #16086.

- - - - -
cfbd39bd by Ben Gamari at 2019-01-30T15:06:31Z
gitlab-ci: Use build cleanup logic on Darwin as well

We use the shell executor on Darwin as well as Windows.
See https://gitlab.com/gitlab-org/gitlab-runner/issues/3856.

- - - - -
924a4607 by Neil Mitchell at 2019-01-30T15:06:31Z
Avoid compiling Hadrian dependencies with profiling on Cabal/Windows
- - - - -
c85d708c by Neil Mitchell at 2019-01-30T15:06:31Z
Avoid compiling Hadrian dependencies with profiling on Cabal/Linux
- - - - -
f00b35f4 by Moritz Angermann at 2019-01-30T15:06:31Z
make ghc-pkg shut up

- - - - -
6fa38663 by Alec Theriault at 2019-01-30T15:06:32Z
Use `NameEnv Id` instead of `Map Name Id`

This is more consistent with the rest of the GHC codebase.

- - - - -
5ed48d25 by Alec Theriault at 2019-01-30T15:06:32Z
Include type info for only some exprs in HIE files

This commit relinquishes some some type information in `.hie` files in
exchange for better performance. See #16233 for more on this.

Using `.hie` files to generate hyperlinked sources is a crucial milestone
towards Hi Haddock (the initiative to move Haddock to work over `.hi`
files and embed docstrings in those). Unfortunately, even after much
optimization on the Haddock side, the `.hie` based solution is still
considerably slower and more memory hungry than the existing implementation
- and the @.hie@ code is to blame.

This changes `.hie` file generation to track type information for only
a limited subset of expressions (specifically, those that might eventually
turn into hyperlinks in the Haddock's hyperlinker backend).

- - - - -
e7e5f4ae by Matthew Pickering at 2019-01-30T15:06:32Z
Only build vanilla way in devel2 flavour

Fixes #16210

- - - - -
4bf35da4 by Alan Zimmerman at 2019-01-30T15:06:32Z
API Annotations: Parens not attached correctly for ClassDecl

The parens around the kinded tyvars should be attached to the class
declaration as a whole, they are attached to the tyvar instead,
outside the span.

An annotation must always be within or after the span it is contained
in.

Closes #16212

- - - - -
e29b1ee7 by Zejun Wu at 2019-01-30T15:06:32Z
Add a RTS option -xp to load PIC object anywhere in address space

Summary:
This re-applies {D5195} with fixes for i386:
* Fix unused label warnings, see {D5230} or {D5273}
* Fix a silly bug introduced by moving `#if`

{P190}

Add a RTS option -xp to load PIC object anywhere in address space. We do
this by relaxing the requirement of <0x80000000 result of
`mmapForLinker` and implying USE_CONTIGUOUS_MMAP.

We also need to change calls to `ocInit` and `ocGetNames` to avoid
dangling pointers when the address of `oc->image` is changed by
`ocAllocateSymbolExtra`.

Test Plan:
See {D5195}, also test under i386:

```
$ uname -a
Linux watashi-arch32 4.18.5-arch1-1.0-ARCH #1 SMP PREEMPT Tue Aug 28
20:45:30 CEST 2018 i686 GNU/Linux
$ cd testsuite/tests/th/ && make test
...
```

will run `./validate` on stacked diff.

Reviewers: simonmar, bgamari, alpmestan, trommler, hvr, erikd

Reviewed By: simonmar

Subscribers: rwbarton, carter

Differential Revision: https://phabricator.haskell.org/D5289

- - - - -
740534d4 by Zejun Wu at 2019-01-30T15:06:32Z
Allocate bss section within proper range of other sections

Summary:
This re-applies {D5195} and {D5235}, they were reverted as part of diff
stack to unbreak i386. The proper fix is done in {D5289}.

Allocate bss section within proper range of other sections:

* when `+RTS -xp` is passed, allocate it contiguously as we did for
  jump islands
* when we mmap the code to lower 2Gb, we should allocate bss section
  there too

Test Plan:
1. `./validate`

2.

with

```
DYNAMIC_GHC_PROGRAMS = NO
DYNAMIC_BY_DEFAULT = NO
```

`TEST="T15729" make test` passed in both linux (both i386 and x86_64) and macos.

3.

Also test in a use case where we used to encouter error like:

```
ghc-iserv-prof: R_X86_64_PC32 relocation out of range: (noname) =
b90282ba
```

and now, everything works fine.

Reviewers: simonmar, bgamari, angerman, erikd

Reviewed By: simonmar

Subscribers: rwbarton, carter

GHC Trac Issues: #15729

Differential Revision: https://phabricator.haskell.org/D5290

- - - - -
6e96aa2d by Zejun Wu at 2019-01-30T15:06:32Z
Don't use X86_64_ELF_NONPIC_HACK for +RTS -xp

Summary:
When `+RTS -xp` is passed, when don't need the X86_64_ELF_NONPIC_HACK,
becasue the relocation offset should only be out of range if

* the object file was not compiled with `-fPIC -fexternal-dynamic-refs`;
* ghc generates non-pic code while it should (e.g. #15723)

In either case, we should print an error message rather that silently
attempt to use a hacky workaround that may not work.

This could have made debugging #15723 and #15729 much easier.

Test Plan:
Run this in a case where ghci used to crash becasue of T15723. Now we
see helpful message like:

```
ghc-iserv-prof: R_X86_64_PC32 relocation out of range:
stmzm2zi4zi4zi1zmJQn4hNPyYjP5m9AcbI88Ve_ControlziConcurrentziSTMziTMVar_readTMVar_C61n_cc
= 9b95ffac
```

Reviewers: simonmar, bgamari, erikd

Reviewed By: simonmar, bgamari

Subscribers: rwbarton, carter

Differential Revision: https://phabricator.haskell.org/D5233

- - - - -
deab6d64 by Matthew Pickering at 2019-01-31T11:02:25Z
Fix syntax in CODEOWNERS file

[skip ci]

- - - - -
4fa32293 by Sylvain Henry at 2019-01-31T17:46:51Z
Use ByteString to represent Cmm string literals (#16198)

Also used ByteString in some other relevant places

- - - - -
d887f374 by Sylvain Henry at 2019-01-31T17:46:51Z
Optimize pprASCII

* Use `ByteString.foldr` instead of `(List.foldr . BS.unpack)`
* Avoid calling `chr` and its test that checks for invalid Unicode
codepoints: we stay in the ASCII range so we know we're ok
* Avoid calling `isPrint` (unsafe FFI call): we can check the ASCII
printable range directly
* Use bit operations (`unsafeShiftR`, `.&.`) instead of `div` and `mod`

- - - - -
98ff3010 by Ben Gamari at 2019-01-31T17:46:51Z
hWaitForInput-accurate-stdin test

- - - - -
0593e938 by Zejun Wu at 2019-01-31T17:46:51Z
Add -fdefer-diagnostics to defer and group diagnostic messages in make-mode

When loading many modules in parallel there can a lot of warnings and
errors get mixed up with regular output. When the compilation fails,
the relevant error message can be thousands of lines backward and is
hard to find. When the compilation successes, warning message is likely
to be ignored as it is not seen. We can address this by deferring the
warning and error message after the compilation. We also put errors
after warnings so it is more visible.

This idea was originally proposed by Bartosz Nitka in
https://phabricator.haskell.org/D4219.

- - - - -
92c7e70f by klebinger.andreas at gmx.at at 2019-01-31T17:46:51Z
Use O2 on stage1 for faster overall build times with make.

Build times when using the quick flavour:

stage1 opt | time (wall) | time (user)
     -O1   |        13m  |        53m
     -O2   |        13m  |        51m
So even when we compile stage2 with -O0 (quick)
using -O2 on stage1 is already faster.

The difference is even bigger when freezing
stage1 and doing multiple builds or compiling
stage2 with optimizations.

- - - - -
1be81c50 by klebinger.andreas at gmx.at at 2019-01-31T17:46:51Z
Add O2 to hsCompiler on stage0 for most hadrian flavours.

- - - - -
e08974e8 by Zejun Wu at 2019-01-31T17:46:51Z
Introduce GhciMonad and generalize types of functions in GHCi.UI

Summary:
Introduce `GhciMonad`, which is bascially `GhcMonad` + `HasGhciState`.
Generalize the commands and help functions defined in `GHCi.UI` so they
can be used as both `GHCi a` and `InputT GHCi a`.

The long term plan is to move reusable bits to ghci library and make it
easier to build a customized interactive ui which carries customized state
and provides customized commands.

Most changes are trivial in this diff by relaxing the type constraint or
add/remove lift as necessary. The non-trivial changes are:

* Change `HasGhciState` to `GhciMonad` and expose it.
* Implementation of `reifyGHCi`.

Test Plan:
  ./validate

Reviewers: simonmar, hvr, bgamari

Reviewed By: simonmar

Subscribers: rwbarton, carter

Differential Revision: https://phabricator.haskell.org/D5433

- - - - -
5b970d8e by Ben Gamari at 2019-01-31T17:46:51Z
testsuite: Add test for #14828

- - - - -
ff2d6018 by klebinger.andreas at gmx.at at 2019-01-31T17:46:51Z
Replace BlockSequence with OrdList in BlockLayout.hs

OrdList does the same thing and more so there is no reason
to have both.

- - - - -
438c11cc by klebinger.andreas at gmx.at at 2019-01-31T17:46:51Z
Small optimizations to BlockLayout.

* Remove `takeL/R 1` occurences by lastOL/headOL.

* Make BlockChain a OrdList newtype by removing the set of blocks.

Initially BlockChain contained both, a set for membership test
and a ordered list of blocks. The set is not used for any
performance sensitive lookups so we get rid of it.

- - - - -
4376d881 by Peter Trommler at 2019-01-31T17:46:51Z
PPC NCG: Promote integers to word size in C calls

Fixes #16222

- - - - -
9bcef368 by Herbert Valerio Riedel at 2019-01-31T17:46:51Z
Update hsc2hs submodule

- - - - -
038de6ab by Herbert Valerio Riedel at 2019-01-31T17:46:51Z
Update text submodule

- - - - -
03030bcf by Herbert Valerio Riedel at 2019-01-31T17:46:51Z
Update unix submodule

- - - - -
edca7837 by Herbert Valerio Riedel at 2019-01-31T17:46:51Z
Update deepseq submodule

- - - - -
229f097d by Herbert Valerio Riedel at 2019-01-31T17:46:51Z
Update haskeline submodule

- - - - -
ffd2035c by Herbert Valerio Riedel at 2019-01-31T17:46:51Z
Update parsec submodule

- - - - -
4a9e14be by Herbert Valerio Riedel at 2019-01-31T17:46:51Z
Update process submodule

- - - - -
713271db by Herbert Valerio Riedel at 2019-01-31T17:46:51Z
Update stm submodule

- - - - -
86734329 by Herbert Valerio Riedel at 2019-01-31T17:46:51Z
Update terminfo submodule

- - - - -
780bcdaf by Andrey Mokhov at 2019-01-31T17:46:51Z
Hadrian: Update instructions for building on Windows

The `hadrian/doc/windows.md` file has falled out of date. In particular
it still points to the old GitHub repository, and uses incorrect path
to GHC. This patch fixes it.

- - - - -
21462a3a by Andrey Mokhov at 2019-01-31T17:46:51Z
Hadrian: Fix outdated link.

- - - - -
ebe2d344 by Ben Gamari at 2019-02-01T00:47:53Z
Revert "Performance tests: recover a baseline from ancestor commits and CI results."

Unfortunately this has broken all future commits due to spurious(?)
performance changes which I have been unable to work around.

This reverts commit cc2261d42f6a954d88e355aaad41f001f65c95da.

- - - - -
d6d735c1 by Edward Z. Yang at 2019-02-01T01:02:12Z
Fix #16219: TemplateHaskell causes indefinite package build error

It should work to write an indefinite package using TemplateHaskell,
so long as all of the actual TH code lives outside of the package.
However, cleverness we had to build TH code even when building
with -fno-code meant that we attempted to build object code for
modules in an indefinite package, even when the signatures were
not instantiated.  This patch disables said logic in the event
that an indefinite package is being typechecked.

Signed-off-by: Edward Z. Yang <ezyang at fb.com>

Test Plan: validate

Reviewers: simonpj, bgamari

Reviewed By: bgamari

Subscribers: rwbarton, carter

GHC Trac Issues: #16219

Differential Revision: https://phabricator.haskell.org/D5475

- - - - -
ef6b2833 by Sebastian Graf at 2019-02-01T11:46:32Z
Remove ExnStr and ThrowsExn business

- - - - -
f0cd728f by Ryan Scott at 2019-02-02T00:10:55Z
Reject oversaturated VKAs in type family equations

- - - - -
6dae133f by Sebastian Graf at 2019-02-02T19:02:35Z
Update user-settings.md with a pointer to `Packages`

[skip ci]
- - - - -
97231c35 by Sebastian Graf at 2019-02-02T19:03:21Z
Polished Note [Exceptions and strictness]

[ci skip]

- - - - -
2d79cd15 by Matthew Pickering at 2019-02-03T03:05:36Z
Turn on -Werror when validating

- - - - -
558550a6 by Sebastian Graf at 2019-02-03T03:05:36Z
Remove unused imports

- - - - -
45bd04d6 by Sebastian Graf at 2019-02-03T03:05:36Z
Bump hsc2hs for removed unused match

- - - - -
71dae4eb by Matthew Pickering at 2019-02-03T03:05:36Z
Turn on -Wno-unused-imports in make build system

This mirrors Hadrian and it good enough to get us unstuck.

- - - - -
59d622d7 by Zejun Wu at 2019-02-03T08:14:03Z
docs: change meta-variable of -interactive-print from expr to name

`-interactive-print` doesn't accept **expr** as `-e` or `:def` does. It must
be a qualified or unqualified **name** in scope.

- - - - -
59516e4b by Vladislav Zavialov at 2019-02-03T13:39:15Z
Fix missing space in ppr_cmd for HsCmdArrForm

- - - - -
8dcd00ce by Matthew Pickering at 2019-02-03T19:20:27Z
Add werror function to Flavour.hs

This function makes it easy to turn on `-Werror` in the correct manner
to mimic how CI turns on -Werror.

- - - - -
eeabeb92 by Vladislav Zavialov at 2019-02-04T03:10:29Z
Report multiple errors

- - - - -
461c447d by Ben Gamari at 2019-02-04T06:52:02Z
testsuite: Skip T15897 in unregisterised way

As noted in #16227 this test routinely times out when run in the
unregisterised way.

See also #15467.

- - - - -
e0c0bde4 by Ben Gamari at 2019-02-04T06:52:02Z
testsuite: Use makefile_test for T16212

- - - - -
626b63b2 by Ben Gamari at 2019-02-04T11:30:47Z
testsuite: Mark print037 as broken when GHC is built with LLVM

As noted in #16205 this configuration reliably segfaults.

- - - - -
ef25b59a by Ben Gamari at 2019-02-04T11:30:47Z
gitlab-ci: Don't allow x86_64-linux-deb9-llvm to fail

- - - - -
406e43af by Zejun Wu at 2019-02-04T16:04:22Z
Add `-fplugin-trustworthy` to avoid marking modules as unsafe

By default, when a module is compiled with plugins, it will be marked as
unsafe. With this flag passed, all plugins are treated as trustworthy
and the safety inference will no longer be affected.

This fixes Trac #16260.

- - - - -
ab493423 by Vladislav Zavialov at 2019-02-05T12:23:04Z
Refactor splice_exp in Parser.y

- - - - -
e88e083d by Ryan Scott at 2019-02-06T00:57:29Z
Fix #14579 by defining tyConAppNeedsKindSig, and using it

- - - - -
9292a183 by Vladislav Zavialov at 2019-02-06T06:15:27Z
Add int-index as parser/* codeowner
- - - - -
c07e7ecb by Ryan Scott at 2019-02-06T10:32:34Z
Fix #16287 by checking for more unsaturated synonym arguments

Trac #16287 shows that we were checking for unsaturated type synonym
arguments (in `:kind`) when the argument was to a type synonym, but
_not_ when the argument was to some other form of type constructor,
such as a data type. The solution is to use the machinery that
rejects unsaturated type synonym arguments (previously confined to
`check_syn_tc_app`) to `check_arg_type`, which checks these other
forms of arguments. While I was in town, I cleaned up
`check_syn_tc_app` a bit to only invoke `check_arg_type` so as to
minimize the number of different code paths that that function could
go down.

- - - - -
c32de5f4 by Ben Gamari at 2019-02-07T06:55:42Z
gitlab-ci: Add a devel2 build

- - - - -
0620e59a by Ben Gamari at 2019-02-07T06:55:42Z
gitlab-ci: More aggressive artifact expiration

- - - - -
701cfb3e by Matthew Pickering at 2019-02-07T06:55:42Z
Revert "gitlab-ci: More aggressive artifact expiration"

This reverts commit d87b38a2519212aaf8bad927c65abecc509a7212.

- - - - -
606db8c2 by Ben Gamari at 2019-02-07T06:55:42Z
testsuite: Mark T11334b as broken in debugged compiler

As noted in #16112.

- - - - -
7e495b40 by Ben Gamari at 2019-02-07T06:55:42Z
testsuite: Mark recomp007 as broken in debugged compiler

As noted in #14759, this triggers a warning in ListSetOps.

- - - - -
71d5ab07 by Ben Gamari at 2019-02-07T06:55:42Z
testsuite: Mark T14740 and tcfail159 as broken in debugged compiler

As noted in #16113, these trigger an assertion in isUnliftedRuntimeRep.

- - - - -
aad05fb3 by Ben Gamari at 2019-02-07T06:55:43Z
testsuite: Mark T5515 as broken with debugged compiler

As noted in #16251.

- - - - -
2b90356d by Richard Eisenberg at 2019-02-08T15:59:28Z
Fix #14729 by making the normaliser homogeneous

This ports the fix to #12919 to the normaliser. (#12919 was about
the flattener.) Because the fix is involved, this is done by
moving the critical piece of code to Coercion, and then calling
this from both the flattener and the normaliser.

The key bit is: simplifying type families in a type is always
a *homogeneous* operation. See #12919 for a discussion of why
this is the Right Way to simplify type families.

Also fixes #15549.

test case: dependent/should_compile/T14729{,kind}
           typecheck/should_compile/T15549[ab]

- - - - -
03b7abc1 by klebinger.andreas at gmx.at at 2019-02-08T16:00:15Z
Allow resizing the stack for the graph allocator.

The graph allocator now dynamically resizes the number of stack
slots when running into the limit.

This fixes #8657.

Also loop membership of basic blocks is now available
in the register allocator for cost heuristics.

- - - - -
14eb23c1 by Herbert Valerio Riedel at 2019-02-08T16:00:16Z
Update hpc submodule

- - - - -
bac64c32 by Tamar Christina at 2019-02-08T16:00:17Z
Hadrian: compile libgmp static on Windows

- - - - -
d97f0db8 by Sylvain Henry at 2019-02-08T16:00:18Z
Fix test for T16180 on Darwin (fix #16128)

- - - - -
ee522983 by Langston Barrett at 2019-02-08T16:00:19Z
TestEquality instance for Compose

- - - - -
a9bef62b by Langston Barrett at 2019-02-08T16:00:19Z
Add a changelog for base 4.14.0.0

- - - - -
41df8e39 by Herbert Valerio Riedel at 2019-02-08T16:00:20Z
Update filepath submodule

- - - - -
be8a803f by Herbert Valerio Riedel at 2019-02-08T16:00:21Z
Update directory submodule

- - - - -
f17a5765 by Neil Mitchell at 2019-02-08T16:00:22Z
ImplicitParams does not imply FlexibleContexts or FlexibleInstances, fixes #16248
- - - - -
be15f745 by Alan Zimmerman at 2019-02-08T16:00:22Z
API Annotations: more explicit foralls fixup

The AnnForall annotations introduced via Phab:D4894 are not always
attached to the correct SourceSpan.

Closes #16230

- - - - -
cbfc9fca by Alan Zimmerman at 2019-02-08T16:00:22Z
API Annotations: AnnAt disconnected for TYPEAPP

For the code

    type family F1 (a :: k) (f :: k -> Type) :: Type where
      F1 @Peano a f = T @Peano f a

the API annotation for the first @ is not attached to a SourceSpan in
the ParsedSource

Closes #16236

- - - - -
5e9888bd by Alan Zimmerman at 2019-02-08T16:00:22Z
API Annotations: parens anns discarded for `(*)` operator

The patch from https://phabricator.haskell.org/D4865 introduces

    go _ (HsParTy _ (dL->L l (HsStarTy _ isUni))) acc ann fix
      = do { warnStarBndr l
           ; let name = mkOccName tcClsName (if isUni then "★" else "*")
           ; return (cL l (Unqual name), acc, fix, ann) }

which discards the parens annotations belonging to the HsParTy.

Updates haddock submodule

Closes #16265

- - - - -
c1cf2693 by Alan Zimmerman at 2019-02-08T16:00:22Z
Lexer: Alternate Layout Rule injects actual not virtual braces

When the alternate layout rule is activated via a pragma, it injects
tokens for { and } to make sure that the source is parsed properly.

But it injects ITocurly and ITccurly, rather than their virtual
counterparts ITvocurly and ITvccurly.

This causes problems for ghc-exactprint, which tries to print these.

Likewise, any injected ITsemi should have a zero-width SrcSpan.

Test case (the existing T13087.hs)

    {-# LANGUAGE AlternativeLayoutRule #-}
    {-# LANGUAGE LambdaCase            #-}

    isOne :: Int -> Bool
    isOne = \case 1 -> True
                  _ -> False

    main = return ()

Closes #16279

- - - - -
7ff127f9 by Ben Gamari at 2019-02-08T16:00:22Z
rts/ProfilerReportJson: Fix format string

This was warning on i386.

- - - - -
ced729f6 by Sylvain Henry at 2019-02-08T16:00:24Z
Cleanup in parser/Ctype.hs

* GHC now performs constant folding on bit operations like (.|.) so we
use them and we remove the misleading comment

* we use Word8 instead of Int and we remove the useless conversion to
Int32. Hopefully future releases of GHC could transform the big case in
`charType` into a value table indexing instead of a jump table. Word8
would make the table smaller.

* we use INLINABLE pragma instead of INLINE on `is_ctype`: in my test,
the latter *prevents* `is_ctype` to be inlined because `charType` is
inlined into `is_ctype` (to call charType`s worker on the unboxed Char
directly).

- - - - -
071bef18 by Vladislav Zavialov at 2019-02-08T16:00:24Z
Fix optSemi type in Parser.y

The definition of 'optSemi' claimed it had type

([Located a],Bool)

Note that its production actually returns ([Located Token],Bool):

  : ';' { ([$1],True) }   -- $1 :: Located Token

Due to an infelicity in the implementation of 'happy -c', it effectively
resulted in 'unsafeCoerce :: Token -> a'.
See https://github.com/simonmar/happy/pull/134

If any consumer of 'optSemi' tried to instantiate 'a' to something not
representationally equal to 'Token', they would experience a segfault.

In addition to that, this definition made it impossible to compile Parser.y
without the -c flag (as it's reliant on this bug to cast 'Token' to 'forall
a. a').

- - - - -
0a4bbb52 by Ömer Sinan Ağacan at 2019-02-08T16:00:26Z
Remove a few undefined prel names

- breakpointAuto
- breakpointJump
- breakpointCondJump
- breakpointAutoJump

These Ids are never defined, but there were definitions about those in
PrelNames. Those are now removed.

- - - - -
616b2ef5 by Simon Peyton Jones at 2019-02-08T16:00:26Z
Comments only

- - - - -
cefb780e by Simon Peyton Jones at 2019-02-08T16:00:26Z
Comments only about the binder-swap in OccurAnal

- - - - -
9bb23d5f by Simon Peyton Jones at 2019-02-08T16:00:26Z
Minor refactor of CUSK handling

Previously, in getFamDeclInitialKind, we were figuring
out whether the enclosing class decl had a CUSK very
indirectly, via tcTyConIsPoly.  This patch just makes
the computation much more direct and easy to grok.

No change in behaviour.

- - - - -
fb031b9b by Tamar Christina at 2019-02-09T10:50:23Z
Stack: fix name mangling.

- - - - -
9170daa8 by klebinger.andreas at gmx.at at 2019-02-09T17:22:13Z
Replace a few uses of snocView with last/lastMaybe.

These never used the first part of the result from snocView.
Hence replacing them with last[Maybe] is both clearer and
gives better performance.

- - - - -
f4d8e907 by klebinger.andreas at gmx.at at 2019-02-09T17:22:13Z
Improve snocView implementation.

The new implementation isn't tailrecursive and instead
builds up the initial part of the list as it goes.

This improves allocation numbers as we don't build up an intermediate
list just to reverse it later.

This is slightly slower for lists of size <= 3. But in benchmarks
significantly faster for any list above 5 elements, assuming the
majority of the resulting list will be evaluated.

- - - - -
9adb7f64 by Neil Mitchell at 2019-02-09T17:22:30Z
Simplify the build.stack.bat script to use 'stack run'

- - - - -
249b0bab by Neil Mitchell at 2019-02-09T17:22:30Z
Upgrade to the latest stack resolver

- - - - -
3fcf79a4 by Alec Theriault at 2019-02-10T07:39:06Z
Fix inverted position pragma flag in parser API

The behviour of `lexTokenStream` around position pragma was
accidentally inverted in 469fe6133646df5568c9486de2202124cb734242.
This fixes that bug.

This also unbreaks #16239.

- - - - -
e67384f4 by Alec Theriault at 2019-02-10T07:39:06Z
Fix invalid doc comment

The invalid doc comments were exposed by 24b39ce53eedad4cefc30f6786542d2072d1f9b0.
The fix is to properly escaped the `{-` and `-}` in the doc comments.
Some other miscallaneous markup issues are also fixed.

- - - - -
53a870f4 by Alec Theriault at 2019-02-10T07:39:06Z
Make CI via Hadrian build docs

- - - - -
027017fb by Sylvain Henry at 2019-02-10T07:39:23Z
Remove ghctags (#16274)

- - - - -
a48753bd by Matthew Pickering at 2019-02-10T13:35:46Z
Capture and simplify constraints arising from running typed splices

This fixes a regression caused by #15471 where splicing in a trivial
program such as `[|| return () ||]` would fail as the dictionary for
`return` would never get bound in the module containing the splice.

Arguably this is symptomatic of a major problem affecting TTH where we
serialise renamed asts and then retype check them. The reference to the
dictionary should be fully determined at the quote site so that splicing
doesn't have to solve any implicits at all. It's a coincidence this
works due to coherence but see #15863 and #15865 for examples where
things do go very wrong.

Fixes #16195

- - - - -
224fec69 by Ben Gamari at 2019-02-10T13:37:59Z
testsuite: Report stdout and stderr in JUnit output

This patch makes the JUnit output more useful as now we also report the
stdout/stderr in the message which can be used to quickly identify why a
test is failing without downloading the log.

This also introduces TestResult,
previously we were simply passing around tuples, making things the
implementation rather difficult to follow and harder to extend.

- - - - -
f53ef1a7 by Ben Gamari at 2019-02-10T13:40:03Z
testsuite: Always skip T15897

See #16193.

- - - - -
07f5cbc8 by Peter Trommler at 2019-02-10T13:42:09Z
Fix Int overflow on 32 bit platform

- - - - -
b1662e81 by Alec Theriault at 2019-02-10T14:02:24Z
Hadrian: add LLVM flavours

This adds a handful of LLVM flavours and the accompanying
documentation. These flavours are mostly uninteresting, but
exist in the Make system.

- - - - -
180c9762 by Matthew Pickering at 2019-02-11T13:25:37Z
testsuite: Report unexpected passes in junit output

- - - - -
093fa2ff by Herbert Valerio Riedel at 2019-02-12T07:37:52Z
Update array submodule

- - - - -
6399965d by Matthew Pickering at 2019-02-12T07:43:57Z
Add explicit dependencies to cleanup-darwin
- - - - -
012257c1 by Ryan Scott at 2019-02-12T07:50:03Z
Fix #16293 by cleaning up Proxy# infelicities

This bug fixes three problems related to `Proxy#`/`proxy#`:

1. Reifying it with TH claims that the `Proxy#` type constructor has
   two arguments, but that ought to be one for consistency with
   TH's treatment for other primitive type constructors like `(->)`.
   This was fixed by just returning the number of
   `tyConVisibleTyVars` instead of using `tyConArity` (which includes
   invisible arguments).
2. The role of `Proxy#`'s visible argument was hard-coded as nominal.
   Easily fixed by changing it to phantom.
3. The visibility of `proxy#`'s kind argument was specified, which
   is different from the `Proxy` constructor (which treats it as
   inferred). Some minor refactoring in `proxyHashId` fixed ths up.

   Along the way, I had to introduce a `mkSpecForAllTy` function, so
   I did some related Haddock cleanup in `Type`, where that function
   lives.

- - - - -
4a4ae70f by Richard Eisenberg at 2019-02-12T07:56:09Z
Fix #16188

There was an awful lot of zipping going on in
canDecomposableTyConAppOK, and one of the lists being zipped
was too short, causing the result to be too short. Easily
fixed.

Also fixes #16204 and #16225

test case: typecheck/should_compile/T16188
           typecheck/should_compile/T16204[ab]
           typecheck/should_fail/T16204c
           typecheck/should_compile/T16225

- - - - -
8b476d82 by Ryan Scott at 2019-02-12T08:02:14Z
Fix #16299 by deleting incorrect code from IfaceSyn

GHCi's `:info` command was pretty-printing Haskell98-style data types
with explicit return kinds if the return kind wasn't `Type`. This
leads to bizarre output like this:

```
λ> :i (##)
data (##) :: TYPE ('GHC.Types.TupleRep '[]) = (##)
        -- Defined in ‘GHC.Prim’
```

Or, with unlifted newtypes:

```
λ> newtype T = MkT Int#
λ> :i T
newtype T :: TYPE 'IntRep = MkT Int#
        -- Defined at <interactive>:5:1
```

The solution is simple: just delete one part from `IfaceSyn` where
GHC mistakenly pretty-prints the return kinds for non-GADTs.

- - - - -
a08f463b by nineonine at 2019-02-13T00:48:38Z
Fix #15849 by checking whether there's a do block

- - - - -
28683137 by Ben Gamari at 2019-02-13T00:54:43Z
configure: Document CLANG, LLC, and OPT variables

- - - - -
6b890d76 by Ömer Sinan Ağacan at 2019-02-13T13:21:18Z
Fix checkStackChunk() call in Interepter.c, enable an assertion

Fixes #16303

- - - - -
4af0a2d6 by Herbert Valerio Riedel at 2019-02-13T13:27:27Z
Update parallel submodule

- - - - -
e40f00dc by Alexandre Esteves at 2019-02-14T01:07:28Z
Fix typos [skip ci]

- - - - -
7f26b74e by Alec Theriault at 2019-02-14T01:13:34Z
Add `liftedTyped` to `Lift` class

Implements GHC proposal 43, adding a `liftTyped` method to the `Lift` typeclass.
This also adds some documentation to `TExp`, describing typed splices and their
advantages over their untyped counterparts.

Resolves #14671.

- - - - -
0f1eb88c by Sylvain Henry at 2019-02-14T07:29:54Z
Add perf test for #16190

- - - - -
1d9a1d9f by Sylvain Henry at 2019-02-14T07:29:54Z
NCG: fast compilation of very large strings (#16190)

This patch adds an optimization into the NCG: for large strings
(threshold configurable via -fbinary-blob-threshold=NNN flag), instead
of printing `.asciz "..."` in the generated ASM source, we print
`.incbin "tmpXXX.dat"` and we dump the contents of the string into a
temporary "tmpXXX.dat" file.

See the note for more details.

- - - - -
19626218 by Matthew Pickering at 2019-02-14T07:36:02Z
Implement -Wredundant-record-wildcards and -Wunused-record-wildcards

-Wredundant-record-wildcards warns when a .. pattern binds no variables.

-Wunused-record-wildcards warns when none of the variables bound by a ..
pattern are used.

These flags are enabled by `-Wall`.

- - - - -
68278382 by Simon Peyton Jones at 2019-02-14T08:40:03Z
Make a smart mkAppTyM

This patch finally delivers on Trac #15952.  Specifically

* Completely remove Note [The tcType invariant], along with
  its complicated consequences (IT1-IT6).

* Replace Note [The well-kinded type invariant] with:

      Note [The Purely Kinded Type Invariant (PKTI)]

* Instead, establish the (PKTI) in TcHsType.tcInferApps,
  by using a new function mkAppTyM when building a type
  application.  See Note [mkAppTyM].

* As a result we can remove the delicate mkNakedXX functions
  entirely.  Specifically, mkNakedCastTy retained lots of
  extremly delicate Refl coercions which just cluttered
  everything up, and(worse) were very vulnerable to being
  silently eliminated by (say) substTy. This led to a
  succession of bug reports.

The result is noticeably simpler to explain, simpler
to code, and Richard and I are much more confident that
it is correct.

It does not actually fix any bugs, but it brings us closer.
E.g. I hoped it'd fix #15918 and #15799, but it doesn't quite
do so.  However, it makes it much easier to fix.

I also did a raft of other minor refactorings:

* Use tcTypeKind consistently in the type checker

* Rename tcInstTyBinders to tcInvisibleTyBinders,
  and refactor it a bit

* Refactor tcEqType, pickyEqType, tcEqTypeVis
  Simpler, probably more efficient.

* Make zonkTcType zonk TcTyCons, at least if they have
  any free unification variables -- see zonk_tc_tycon
  in TcMType.zonkTcTypeMapper.

  Not zonking these TcTyCons was actually a bug before.

* Simplify try_to_reduce_no_cache in TcFlatten (a lot)

* Combine checkExpectedKind and checkExpectedKindX.
  And then combine the invisible-binder instantation code
  Much simpler now.

* Fix a little bug in TcMType.skolemiseQuantifiedTyVar.
  I'm not sure how I came across this originally.

* Fix a little bug in TyCoRep.isUnliftedRuntimeRep
  (the ASSERT was over-zealous).  Again I'm not certain
  how I encountered this.

* Add a missing solveLocalEqualities in
  TcHsType.tcHsPartialSigType.
  I came across this when trying to get level numbers
  right.

- - - - -
5c1f268e by Simon Peyton Jones at 2019-02-14T08:40:03Z
Fail fast in solveLocalEqualities

This patch makes us fail fast in TcSimplify.solveLocalEqualities,
and in TcHsType.tc_hs_sig_type, if there are insoluble constraints.

Previously we ploughed on even if there were insoluble constraints,
leading to a cascade of hard-to-understand type errors. Failing
eagerly is much better; hence a lot of testsuite error message
changes.  Eg if we have
          f :: [Maybe] -> blah
          f xs = e
then trying typecheck 'f x = e' with an utterly bogus type
is just asking for trouble.

I can't quite remember what provoked me to make this change,
but I think the error messages are notably improved, by
removing confusing clutter and focusing on the real error.

- - - - -
b31df5ca by Vladislav Zavialov at 2019-02-15T12:23:00Z
Hadrian: enable -Wcompat=error in the testsuite

- - - - -
887454d8 by Vladislav Zavialov at 2019-02-15T12:29:05Z
'forall' always a keyword, plus the dot type operator

- - - - -
173d0cee by Alec Theriault at 2019-02-15T23:35:28Z
Properly escape character literals in Haddocks

Character literals in Haddock should not be written as plain `'\n'` since
single quotes are for linking identifiers. Besides, since we want the
character literal to be monospaced, we really should use `@\'\\n\'@`.

[skip ci]

- - - - -
bcaba30a by klebinger.andreas at gmx.at at 2019-02-15T23:41:36Z
Don't wrap the entry map for LiveInfo in Maybe.

It never really encoded a invariant.

* The linear register allocator just did partial pattern matches
* The graph allocator just set it to (Just mapEmpty) for Nothing

So I changed LiveInfo to directly contain the map.

Further natCmmTopToLive which filled in Nothing is no longer exported.
Instead we know call cmmTopLiveness which changes the type AND fills
in the map.

- - - - -
0b92bdc7 by David Eichmann at 2019-02-16T06:07:53Z
Fix and Reapply "Performance tests: recover a baseline from ancestor commits and CI results."

- - - - -
9b39597b by Matthew Pickering at 2019-02-16T06:14:00Z
Fix tests which were made to pass by "Make a smart mkAppTyM"

For some reason gitlab is not reporting these as failures in CI. It's
not clear to me why as the junit output looks fine.

Fixes #16112 and #16113

They were fixed by 682783828275cca5fd8bf5be5b52054c75e0e22c

- - - - -
5544f608 by Matthew Pickering at 2019-02-16T06:14:00Z
Remove Simon's special number from typecheck/should_fail/all.t

- - - - -
7752fa54 by Ömer Sinan Ağacan at 2019-02-16T14:10:23Z
Minor documentation fix in GHC.ForeignPtr

- - - - -
3cb063c8 by Alec Theriault at 2019-02-16T14:16:32Z
Remove `parallel` as a submodule

`parallel` is used in exactly one place in the GHC tree: the T2317 test.
It seems almost by accident that it is a submodule; libraries needed
only for tests should net be included as submodules (see `QuickCheck`,
`async`, `haskell98`, `regex-compat`, `utf8-string`, `vector` and more
for examples).

T2317 will now get run only when `parallel` is installed instead of
`parallel` being required for the testsuite to run.

- - - - -
69ebf5cb by Matthew Pickering at 2019-02-16T14:22:38Z
HIE: Save module name and module exports

- - - - -
af7b0fdb by Peter Trommler at 2019-02-17T03:49:09Z
Cmm: Promote stack arguments to word size

Smaller than word size integers must be promoted to word size
when passed on the stack. While on little endian systems we can
get away with writing a small integer to a word size stack slot
and read it as a word ignoring the upper bits, on big endian
systems a small integer write ends up in the most significant
bits and a word size read that ignores the upper bits delivers
a random value.

On little endian systems a smaller than word size write to
the stack might be more efficient but that decision is
system specific and should be done as an optimization in the
respective backends.

Fixes #16258

- - - - -
4a09d30b by Alec Theriault at 2019-02-17T03:55:16Z
Run some of Haddock's tests in the testsuite

The 4 main testsuites in Haddock don't have many dependencies, but are
regularly broken in small ways by changes to the GHC AST or the GHC API.
The main gotcha is that we'll have to make sure that `haddock-test` and
the test suite don't add modules without modifying this test. Then again,
if that happens, the test will fail and someone will noticed.

- - - - -
0fff3ae6 by Tamar Christina at 2019-02-18T00:52:24Z
Testsuite: implement use_specs.

- - - - -
1f1b9e35 by Simon Peyton Jones at 2019-02-18T00:58:29Z
Get rid of tcm_smart from TyCoMapper

Following a succession of refactorings of the type checker,
culminating in the patch
       Make a smart mkAppTyM
we have got rid of mkNakedAppTy etc.  And that in turn
meant that the tcm_smart field of the generic TyCoMapper
(in Type.hs) was entirely unused.  It was always set to True.

So this patch just gets rid of it completely.  Less code,
less complexity, and more efficient because fewer higher-order
function calls.  Everyone wins.

No change in behaviour; this does not cure any bugs!

- - - - -
1ffee940 by Vladislav Zavialov at 2019-02-18T01:04:33Z
Fix warnings and fatal parsing errors

- - - - -
2a431640 by Alec Theriault at 2019-02-18T15:31:18Z
Uphold AvailTC Invariant for associated data fams

The AvailTC was not be upheld for explicit export module
export lists when the module contains associated data families.

    module A (module A) where
    class    C a  where { data T a }
    instance C () where { data T () = D }

Used to (incorrectly) report avails as `[C{C, T;}, T{D;}]`. Note that
although `T` is exported, the avail where it is the parent does _not_
list it as its first element. This avail is now correctly listed as
`[C{C, T;}, T{T, D;}]`.

This was induces a [crash in Haddock][0].

See #16077.

[0]: https://github.com/haskell/haddock/issues/979

- - - - -
129a800d by Alexandre Baldé at 2019-02-19T00:17:33Z
Fix Haddock comment for Integer datatype

Move implementation notes for Integer to Haddock named section

Revert documentation named chunk change [skip ci]

Haddock's named chunk feature was not used correctly in this case,
as it cannot export only parts of a Haddock top level comment.

As such, it was removed and replaced by a message informing the end-
user to browse the source code for detailed information.

- - - - -
9049bfb1 by Krzysztof Gogolewski at 2019-02-19T11:14:04Z
Disable binder swap in OccurAnal (Trac #16288)

- - - - -
b78cc64e by Arnaud Spiwack at 2019-02-19T11:14:04Z
Make constructor wrappers inline only during the final phase

For case-of-known constructor to continue triggering early,
exprIsConApp_maybe is now capable of looking through lets and cases.

See #15840

- - - - -
7833cf40 by Krzysztof Gogolewski at 2019-02-19T11:14:04Z
Look through newtype wrappers (Trac #16254)

exprIsConApp_maybe could detect that I# 10 is a constructor application,
but not that Size (I# 10) is, because it was an application with a
nontrivial argument.

- - - - -
76ac103f by Niklas Hambüchen at 2019-02-19T11:20:13Z
base: Document errno behaviour in haddocks.

Also add an implementation comment for details.
- - - - -
9f5b11fa by Ömer Sinan Ağacan at 2019-02-19T11:26:17Z
Remove arc scripts

- - - - -
908b4b86 by Ömer Sinan Ağacan at 2019-02-20T14:53:07Z
Fix two bugs in stg_ap_0_fast in profiling runtime

This includes two bug fixes in profiling version of stg_ap_0_fast:

- PAPs allocated by stg_ap_0_fast are now correctly tagged. This
  invariant is checked in Sanity.c:checkPAP.

  (This was originally implemented in 2693eb11f5, later reverted with
  ab55b4ddb7 because it revealed the bug below, but it wasn't clear at
  the time whether the bug was the one below or something in the commit)

- The local variable `untaggedfun` is now marked as a pointer so it
  survives GC.

With this we finally fix all known bugs caught in #15508. `concprog001`
now works reliably with prof+threaded and prof runtimes (with and
without -debug).

- - - - -
1dad4fc2 by Andrey Mokhov at 2019-02-20T14:59:16Z
Hadrian: Fix untracked dependencies

This is a preparation for #16295: https://ghc.haskell.org/trac/ghc/ticket/16295

This commit mostly focuses on getting rid of untracked dependencies,
which prevent Shake's new `--shared` feature from appropriately caching
build rules.

There are three different solutions to untracked dependencies:

* Track them! This is the obvious and the best approach, but in some
  situations we cannot use it, for example, because a build rule creates
  files whose names are not known statically and hence cannot be
  specified as the rule's outputs.

* Use Shake's `produces` to record outputs dynamically, within the rule.

* Use Shake's `historyDisable` to disable caching for a particular build
  rule. We currently use this approach only for `ghc-pkg` which mutates
  the package database and the file `package.cache`.

These two tickets are fixed as the result:

Ticket #16271: ​https://ghc.haskell.org/trac/ghc/ticket/16271

Ticket #16272: ​https://ghc.haskell.org/trac/ghc/ticket/16272 (this one
is fixed only partially: we correctly record the dependency, but we
still copy files into the RTS build tree).

- - - - -
eda456f6 by Matthew Pickering at 2019-02-20T14:59:16Z
CI: Run `cabal update` before trying to build Hadrian

- - - - -
aa79f65c by Ryan Scott at 2019-02-20T15:05:21Z
Bump ghc version to 8.9

Along the way, I discovered that `template-haskell.cabal` was
hard-coding the GHC version (in the form of its `ghc-boot-th` version
bounds), so I decided to make life a little simpler in the future by
generating `template-haskell.cabal` with autoconf.

- - - - -
2e96ce1f by Dmitry Ivanov at 2019-02-20T15:11:28Z
Test bit-manipulating primops under respective arch flags like -msse4.2

- - - - -
2209ea86 by Simon Peyton Jones at 2019-02-20T15:17:34Z
Add comments about how zip fusion

Alexandre Balde (rockbmb) points out that the fusion technology
for foldr2, zip, zipWith, etc is undocumented.  This patch adds
comments to explain.

- - - - -
e86606f2 by Simon Peyton Jones at 2019-02-20T15:17:34Z
Tiny refactor in isUnliftedRuntimeRep

No change in behaviour, slightly more efficient

- - - - -
5eeefe4c by Simon Peyton Jones at 2019-02-20T15:17:34Z
Improve the very simple optimiser slightly

There was a missing case in the very simple optimiser,
CoreOpt.simpleOptExpr, which led to Trac #13208 comment:2.

In particular, in simple_app, if we find a Let, we should
just float it outwards. Otherwise we leave behind some
easy-to-reduce beta-redexes.

- - - - -
3f73f081 by Simon Peyton Jones at 2019-02-20T15:17:34Z
Comments only, in GhcPrelude

- - - - -
2a0be146 by Vaibhav Sagar at 2019-02-21T09:14:01Z
Text.ParserCombinators.ReadP: use NonEmpty in Final

The `Final` constructor needed to maintain the invariant that the list
it is provided is always non-empty. Since NonEmpty is in `base` now, I
think it would be better to use it for this purpose.

- - - - -
32f44ed8 by David Eichmann at 2019-02-21T09:20:09Z
Fix test runner crash when not in a git repo

Respect `inside_git_repo()` when checking performance stats.

- - - - -
2f4af71e by Vladislav Zavialov at 2019-02-21T09:26:15Z
Dot/bang operators in export lists (Trac #16339)

The dot type operator was handled in the 'tyvarop' parser production, and the
bang type operator in 'tyapp'. However, export lists and role annotations use
'oqtycon', so these type operators could not be exported or assigned roles.

The fix is to handle them in a lower level production, 'tyconsym'.

- - - - -
e204431e by Vladislav Zavialov at 2019-02-21T09:26:15Z
Handle the (~) type operator in 'tyconsym'

By parsing '~' in 'tyconsym' instead of 'oqtycon', we
get one less shift/reduce conflict.

- - - - -
48aafc24 by Tamar Christina at 2019-02-22T01:52:42Z
Testsuite: opt-in to symlinks on Windows

- - - - -
9db92cf0 by Tamar Christina at 2019-02-22T01:52:42Z
Set builder env

- - - - -
0e2d300a by Niklas Hambüchen at 2019-02-22T01:58:47Z
compiler: Write .o files atomically. See #14533

This issue was reproduced with, and the fix confirmed with,
the `hatrace` tool for syscall-based fault injection:

    https://github.com/nh2/hatrace

The concrete test case for GHC is at

    https://github.com/nh2/hatrace/blob/e23d35a2d2c79e8bf49e9e2266b3ff7094267f29/test/HatraceSpec.hs#L185

A previous, nondeterministic reproducer for the issue was provided by
Alexey Kuleshevich in

    https://github.com/lehins/exec-kill-loop

Signed-off-by: Niklas Hambüchen <niklas at fpcomplete.com>
Reviewed-by: Alexey Kuleshevich <alexey at fpcomplete.com>

- - - - -
e8a08f40 by Niklas Hambüchen at 2019-02-22T01:58:47Z
compiler: Refactor: extract `withAtomicRename`

- - - - -
473632d7 by klebinger.andreas at gmx.at at 2019-02-22T02:04:55Z
Bump nofib submodule.

- - - - -
a07f46ea by Simon Peyton Jones at 2019-02-22T06:56:08Z
Remove tcTyConUserTyVars

The tcTyConUserTyVars field of TcTyCon was entirely unused.

This patch kills it off entirely.

- - - - -
0eb7cf03 by Simon Peyton Jones at 2019-02-22T06:56:08Z
Don't do binder-swap for GlobalIds

This patch disables the binder-swap transformation in the
(relatively rare) case when the scrutinee is a GlobalId.
Reason: we are getting Lint errors so that GHC doesn't
even validate.  Trac #16346.

This is NOT the final solution -- it's just a stop-gap
to get us running again.

The final solution is in Trac #16296

- - - - -
c25b135f by Simon Peyton Jones at 2019-02-22T06:56:08Z
Fix exprIsConApp_maybe

In this commit
   commit 7833cf407d1f608bebb1d38bb99d3035d8d735e6
   Date:   Thu Jan 24 17:58:50 2019 +0100
      Look through newtype wrappers (Trac #16254)

we made exprIsConApp_maybe quite a bit cleverer.  But I had not paid
enough attention to keeping exactly the correct substitution and
in-scope set, which led to Trac #16348.

There were several buglets (like applying the substitution twice in
exprIsConApp_maybe, but the proximate source of the bug was that we were
calling addNewInScopeIds, which deleted things from the substitution as
well as adding them to the in-scope set.  That's usually right, but not
here!

This was quite tricky to track down.  But it is nicer now.

- - - - -
44ad7215 by Matthew Pickering at 2019-02-22T06:56:08Z
Use validate flavour rather than devel2 for DEBUG CI job

This also builds stage2 with optimisations and -dcore-lint

- - - - -
806cc234 by David Eichmann at 2019-02-23T04:35:18Z
Build and copy libffi shared libraries correctly and enable dynamically linking ghc.

Test Plan:
Ensure build environment does NOT have a system libffi installed (you may want to use a nix environment).
Then `hadrian/build.sh -c --flavour=default`

Reviewers: bgamari

Subscribers: rwbarton, carter

GHC Trac Issues: #15837

- - - - -
4b752d52 by Oleg Grenrus at 2019-02-23T04:41:25Z
Update CI images to GHC-8.4.4 & cabal-install-2.4.1.0

Use official bindists, except for Debian 9/Stretch
http://downloads.haskell.org/debian/ is used. (There are no recent
GHC/cabal-install for Debian 8/Jessie there)

Use v2-update/v2-install to install Haskell tools.

Try to unify structure of the different Dockerfiles, incl installing GHC
in one step (this will prevent sublayers from existing, making final
image slightly smaller)

- - - - -
e87ae473 by Artem Pyanykh at 2019-02-23T04:47:32Z
Drop support for i386 and PowerPC in MachO linker

Some code is broken, there are no CI targets (so not obvious how to
test), and no one seems to have built GHC for any of the above
platforms in years.

- - - - -
04b7f4c1 by Ben Gamari at 2019-02-23T04:53:36Z
ghc-in-ghci: Fix capitalization of hieFile

- - - - -
2e9426df by Tom Sydney Kerckhove at 2019-02-24T02:25:41Z
hWaitForInput-accurate-socket test

- - - - -
ac34e784 by Simon Peyton Jones at 2019-02-24T02:31:47Z
Remove bogus assertion

Remove a bogus assertion in FamInst.newFamInst
(There is a comment to explain.)

This fixes Trac #16112.

- - - - -
6cce36f8 by Simon Peyton Jones at 2019-02-24T02:31:47Z
Add AnonArgFlag to FunTy

The big payload of this patch is:

  Add an AnonArgFlag to the FunTy constructor
  of Type, so that
    (FunTy VisArg   t1 t2) means (t1 -> t2)
    (FunTy InvisArg t1 t2) means (t1 => t2)

The big payoff is that we have a simple, local test to make
when decomposing a type, leading to many fewer calls to
isPredTy. To me the code seems a lot tidier, and probably
more efficient (isPredTy has to take the kind of the type).

See Note [Function types] in TyCoRep.

There are lots of consequences

* I made FunTy into a record, so that it'll be easier
  when we add a linearity field, something that is coming
  down the road.

* Lots of code gets touched in a routine way, simply because it
  pattern matches on FunTy.

* I wanted to make a pattern synonym for (FunTy2 arg res), which
  picks out just the argument and result type from the record. But
  alas the pattern-match overlap checker has a heart attack, and
  either reports false positives, or takes too long.  In the end
  I gave up on pattern synonyms.

  There's some commented-out code in TyCoRep that shows what I
  wanted to do.

* Much more clarity about predicate types, constraint types
  and (in particular) equality constraints in kinds.  See TyCoRep
  Note [Types for coercions, predicates, and evidence]
  and Note [Constraints in kinds].

  This made me realise that we need an AnonArgFlag on
  AnonTCB in a TyConBinder, something that was really plain
  wrong before. See TyCon Note [AnonTCB InivsArg]

* When building function types we must know whether we
  need VisArg (mkVisFunTy) or InvisArg (mkInvisFunTy).
  This turned out to be pretty easy in practice.

* Pretty-printing of types, esp in IfaceType, gets
  tidier, because we were already recording the (->)
  vs (=>) distinction in an ad-hoc way.  Death to
  IfaceFunTy.

* mkLamType needs to keep track of whether it is building
  (t1 -> t2) or (t1 => t2).  See Type
  Note [mkLamType: dictionary arguments]

Other minor stuff

* Some tidy-up in validity checking involving constraints;
  Trac #16263

- - - - -
e61f6e35 by Vladislav Zavialov at 2019-02-24T02:37:52Z
Expression/command ambiguity resolution

This patch removes 'HsArrApp' and 'HsArrForm' from 'HsExpr' by
introducing a new ambiguity resolution system in the parser.

Problem: there are places in the grammar where we do not know whether we
are parsing an expression or a command:

	proc x -> do { (stuff) -< x }   -- 'stuff' is an expression
	proc x -> do { (stuff) }        -- 'stuff' is a command

Until we encounter arrow syntax (-<) we don't know whether to parse
'stuff' as an expression or a command.

The old solution was to parse as HsExpr always, and rejig later:

	checkCommand :: LHsExpr GhcPs -> P (LHsCmd GhcPs)

This meant polluting 'HsExpr' with command-related constructors. In
other words, limitations of the parser were affecting the AST, and
all other code (the renamer, the typechecker) had to deal with these
extra constructors by panicking.

We fix this abstraction leak by parsing into an intermediate
representation, 'ExpCmd':

	data ExpCmdG b where
	  ExpG :: ExpCmdG HsExpr
	  CmdG :: ExpCmdG HsCmd

	type ExpCmd = forall b. ExpCmdG b -> PV (Located (b GhcPs))

	checkExp :: ExpCmd -> PV (LHsExpr GhcPs)
	checkCmd :: ExpCmd -> PV (LHsCmd GhcPs)
	checkExp f = f ExpG  -- interpret as an expression
	checkCmd f = f CmdG  -- interpret as a command

See Note [Ambiguous syntactic categories] for details.

Now the intricacies of parsing have no effect on the hsSyn AST when it
comes to the expression/command ambiguity.

Future work: apply the same principles to the expression/pattern
ambiguity.

- - - - -
ee284b85 by Herbert Valerio Riedel at 2019-02-24T02:43:58Z
Fix regression incorrectly advertising TH support

`--supported-languages` must only advertise language extensions
which are supported by the compiler in order for tooling such
as Cabal relying on this signalling not to behave incorrectly.

Fixes #16331

- - - - -
a990312e by Matthew Pickering at 2019-02-24T02:50:02Z
Exit with exit code 1 when tests unexpectedly pass

This was causing gitlab to not report from builds as failing. It also
highlighted a problem with the LLVM tests where some of the external
interpreter tests are failing.

- - - - -
1059e234 by Ben Gamari at 2019-02-24T02:56:06Z
gitlab-ci: Only build x86_64-deb8 and fedora27 for releases

These are largely redundant as they are covered by x86_64-deb9.

- - - - -
b85068f6 by Sebastian Graf at 2019-02-24T03:02:10Z
Include closure header size in StgLamLift's estimations

While playing around with late lambda lifting, I realised that
StgLamLift.Analysis doesn't consider the removed closure header in its
allocation estimations.

That's because contrary to what I thought, the total word count returned
by `mkVirtHeapOffsets` doesn't include the size of the closure header.

We just add the header size manually now.

- - - - -
88970187 by Vladislav Zavialov at 2019-02-24T03:08:15Z
User's Guide: update info on kind inference

We no longer put class variables in front,
see "Taming the Kind Inference Monster"

(also fix some markup issues)

- - - - -
ae7d1ff6 by Vladislav Zavialov at 2019-02-24T03:14:19Z
User's Guide: forall is a keyword nowadays

- - - - -
6ba3421e by Ben Gamari at 2019-02-24T03:20:25Z
testsuite: Fix whitespace in hp2ps error message

- - - - -
9059343e by Alexandre at 2019-02-24T21:17:06Z
base: Allow fusion for zip7 and related

Fixes #14037.

Metric Decrease:
    T9872b
    T9872d

Reviewers: bgamari, simonpj, hvr

Reviewed By: simonpj

Subscribers: AndreasK, simonpj, osa1, dfeuer, rwbarton, carter

GHC Trac Issues: #14037

Differential Revision: https://phabricator.haskell.org/D5249

- - - - -
14586f5d by Vladislav Zavialov at 2019-02-24T21:23:11Z
Disable fragile test cases: T14697 T5559 T3424

See Trac #15072, Trac #16349, Trac #16350

- - - - -
f320f3b2 by Vladislav Zavialov at 2019-02-25T16:19:24Z
Fix the ghci063 test on Darwin (Trac #16201)

We use "touch -r" to set modification timestamps, which leads to precision loss
on Darwin. For example,

   before: 2019-02-25 01:11:23.807627350 +0300
   after:  2019-02-25 01:11:23.807627000 +0300
                                     ^^^
This means we can't trick GHCi into thinking the file hasn't been changed by
restoring its old timestamp, as we cannot faithfully restore all digits.

The solution is to nullify the insignificant digits before the first :load

- - - - -
4dbacba5 by Vladislav Zavialov at 2019-02-26T17:36:42Z
Skip T3424 when fast()

14586f5d removed this by accident.

- - - - -
5bc195b1 by Vladislav Zavialov at 2019-02-27T14:53:52Z
Treat kind/type variables identically, demolish FKTV

Implements GHC Proposal #24: .../ghc-proposals/blob/master/proposals/0024-no-kind-vars.rst
Fixes Trac #16334, Trac #16315

With this patch, scoping rules for type and kind variables have been
unified: kind variables no longer receieve special treatment. This
simplifies both the language and the implementation.

User-facing changes
-------------------

* Kind variables are no longer implicitly quantified when an explicit
  forall is used:

    p ::             Proxy (a :: k)    -- still accepted
    p :: forall k a. Proxy (a :: k)    -- still accepted
    p :: forall   a. Proxy (a :: k)    -- no longer accepted

  In other words, now we adhere to the "forall-or-nothing" rule more
  strictly.

  Related function: RnTypes.rnImplicitBndrs

* The -Wimplicit-kind-vars warning has been deprecated.

* Kind variables are no longer implicitly quantified in constructor
  declarations:

    data T a        = T1 (S (a :: k) | forall (b::k). T2 (S b)  -- no longer accepted
    data T (a :: k) = T1 (S (a :: k) | forall (b::k). T2 (S b)  -- still accepted

  Related function: RnTypes.extractRdrKindSigVars

* Implicitly quantified kind variables are no longer put in front of
  other variables:

    f :: Proxy (a :: k) -> Proxy (b :: j)

    f :: forall k j (a :: k) (b :: j). Proxy a -> Proxy b   -- old order
    f :: forall k (a :: k) j (b :: j). Proxy a -> Proxy b   -- new order

  This is a breaking change for users of TypeApplications. Note that
  we still respect the dpendency order: 'k' before 'a', 'j' before 'b'.
  See "Ordering of specified variables" in the User's Guide.

  Related function: RnTypes.rnImplicitBndrs

* In type synonyms and type family equations, free variables on the RHS
  are no longer implicitly quantified unless used in an outermost kind
  annotation:

    type T = Just (Nothing :: Maybe a)         -- no longer accepted
    type T = Just Nothing :: Maybe (Maybe a)   -- still accepted

  The latter form is a workaround due to temporary lack of an explicit
  quantification method. Ideally, we would write something along these
  lines:

    type T @a = Just (Nothing :: Maybe a)

  Related function: RnTypes.extractHsTyRdrTyVarsKindVars

* Named wildcards in kinds are fixed (Trac #16334):

    x :: (Int :: _t)    -- this compiles, infers (_t ~ Type)

  Related function: RnTypes.partition_nwcs

Implementation notes
--------------------

* One of the key changes is the removal of FKTV in RnTypes:

  - data FreeKiTyVars = FKTV { fktv_kis    :: [Located RdrName]
  -                          , fktv_tys    :: [Located RdrName] }
  + type FreeKiTyVars = [Located RdrName]

  We used to keep track of type and kind variables separately, but
  now that they are on equal footing when it comes to scoping, we
  can put them in the same list.

* extract_lty and family are no longer parametrized by TypeOrKind,
  as we now do not distinguish kind variables from type variables.

* PatSynExPE and the related Note [Pattern synonym existentials do not scope]
  have been removed (Trac #16315). With no implicit kind quantification,
  we can no longer trigger the error.

* reportFloatingKvs and the related Note [Free-floating kind vars]
  have been removed. With no implicit kind quantification,
  we can no longer trigger the error.

- - - - -
5c084e04 by Peter Trommler at 2019-02-27T14:59:59Z
RTS: Add missing memory barrier

In the work stealing queue a load-load-barrier is required to ensure
that a read of queue data cannot be reordered before a read of the
bottom pointer into the queue.

The added load-load-barrier ensures that the ordering of writes enforced
at the end of `pushWSDeque` is also respected in the order of reads in
`stealWSDeque_`. In other words, when reading `q->bottom` we want to make
sure that we see the updates to `q->elements`.

Fixes #13633

- - - - -
2e8f6649 by Vladislav Zavialov at 2019-02-27T15:06:05Z
Fix intermittent hie002 failure

hie002 is a performance test that used to fail unpredictably:

	max_bytes_used Decrease from x86_64-linux-deb9-debug baseline @ HEAD~2:
	    Expected    hie002 (normal) max_bytes_used: 1190923992.0 +/-20%
	    Lower bound hie002 (normal) max_bytes_used:    952739193
	    Upper bound hie002 (normal) max_bytes_used:   1429108791
	    Actual      hie002 (normal) max_bytes_used:    726270784
	    Deviation   hie002 (normal) max_bytes_used:        -39.0 %
	peak_megabytes_allocated Decrease from x86_64-linux-deb9-debug baseline @ HEAD~2:
	    Expected    hie002 (normal) peak_megabytes_allocated: 2538.0 +/-20%
	    Lower bound hie002 (normal) peak_megabytes_allocated:   2030
	    Upper bound hie002 (normal) peak_megabytes_allocated:   3046
	    Actual      hie002 (normal) peak_megabytes_allocated:   1587
	    Deviation   hie002 (normal) peak_megabytes_allocated:  -37.5 %
	*** unexpected stat test failure for hie002(normal)

'max_bytes_used' and 'peak_megabytes_allocated' are too unstable without careful
control of the runtime configuration. We fix this by using a more predictable
metric, 'bytes allocated'.

- - - - -
f838809f by Moritz Angermann at 2019-02-28T07:20:05Z
Cleanup iserv/iserv-proxy

This adds trace messages that include the processes name and as such
make debugging and following the communication easier.

It also adds a note regarding the fwd*Call proxy-communication logic
between the proxy and the slave.

The proxy will now also poll for 60s to wait for the remote iserv
to come up. (Alternatively you can start the remote process
beforehand; and just have iserv-proxy connect to it)

- - - - -
c26d299d by Ryan Scott at 2019-03-01T21:26:02Z
Visible dependent quantification

This implements GHC proposal 35
(https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0035-forall-arrow.rst)
by adding the ability to write kinds with
visible dependent quantification (VDQ).

Most of the work for supporting VDQ was actually done _before_ this
patch. That is, GHC has been able to reason about kinds with VDQ for
some time, but it lacked the ability to let programmers directly
write these kinds in the source syntax. This patch is primarly about
exposing this ability, by:

* Changing `HsForAllTy` to add an additional field of type
  `ForallVisFlag` to distinguish between invisible `forall`s (i.e,
  with dots) and visible `forall`s (i.e., with arrows)
* Changing `Parser.y` accordingly

The rest of the patch mostly concerns adding validity checking to
ensure that VDQ is never used in the type of a term (as permitting
this would require full-spectrum dependent types). This is
accomplished by:

* Adding a `vdqAllowed` predicate to `TcValidity`.
* Introducing `splitLHsSigmaTyInvis`, a variant of `splitLHsSigmaTy`
  that only splits invisible `forall`s. This function is used in
  certain places (e.g., in instance declarations) to ensure that GHC
  doesn't try to split visible `forall`s (e.g., if it tried splitting
  `instance forall a -> Show (Blah a)`, then GHC would mistakenly
  allow that declaration!)

This also updates Template Haskell by introducing a new `ForallVisT`
constructor to `Type`.

Fixes #16326. Also fixes #15658 by documenting this feature in the
users' guide.

- - - - -
f37efb11 by Alec Theriault at 2019-03-01T21:32:09Z
Lexer: turn some fatal errors into non-fatal ones

The following previously fatal lexer errors are now non-fatal:

  * errors about enabling `LambdaCase`
  * errors about enabling `NumericUnderscores`
  * errors about having valid characters in primitive strings

See #16270

- - - - -
8442103a by Alp Mestanogullari at 2019-03-01T21:38:15Z
Hadrian: introduce ways to skip some documentation targets

The initial motivation for this is to have a chance to run the binary
distribution rules in our Windows CI without having to install
sphinx-build and xelatex there, while retaining the ability to
generate haddocks. I just ended up extending this idea a little bit so
as to have control over whether we build haddocks, (sphinx) HTML manuals,
(sphinx) PDF manuals and (sphinx) manpages.

- - - - -
9aa27273 by Alp Mestanogullari at 2019-03-01T21:38:15Z
use --docs=no-sphinx in both Hadrian CI jobs

- - - - -
b1c7ffaf by David Eichmann at 2019-03-01T21:44:22Z
Fix parsing of expected performance changes for tests with non-alpha characters.

Python's split() function is used to split on all white space.

- - - - -
b90695cd by Ben Gamari at 2019-03-01T22:06:49Z
gitlab-ci: Pull docker images from ghc/ci-images registry

- - - - -
161f102b by Ben Gamari at 2019-03-01T22:07:28Z
Drop Docker images

These have been moved to the ghc/ci-images project.

- - - - -
d298cb9c by Ben Gamari at 2019-03-01T22:07:28Z
gitlab-ci: Produce DWARF-enabled binary distribution

- - - - -
aeefc90c by Ben Gamari at 2019-03-01T22:07:28Z
testsuite: Suppress ticks when comparing -ddump-simpl output

Otherwise these tests break spuriously when core libraries are compiled
with source notes.

- - - - -
1bceb643 by Ben Gamari at 2019-03-01T22:07:28Z
gitlab-ci: Give deb9-unreg job a distinct cache key

- - - - -
1285d6b9 by Ben Gamari at 2019-03-02T23:32:22Z
gitlab-ci: A bit of reorganization

- - - - -
f77229e3 by Alp Mestanogullari at 2019-03-04T00:35:18Z
detect 'autoreconf' path during configure, and use it in hadrian

- - - - -
e2ae52c3 by Alec Theriault at 2019-03-04T15:18:41Z
Don't leave .hi files after running Haddock tests

RyanGlScott observed in https://github.com/haskell/haddock/issues/1030
that running Haddock tests in GHC's testsuite left some `.hi` files
around in `utils/haddock`. This should fix that problem.

- - - - -
22c2713b by Alp Mestanogullari at 2019-03-04T15:18:41Z
Hadrian: track mingw, ship it in bindists, more robust install script

- - - - -
e7080bef by Ben Gamari at 2019-03-04T15:18:41Z
Revert "compiler: Refactor: extract `withAtomicRename`"

This reverts commit e8a08f400744a860d1366c6680c8419d30f7cc2a.

- - - - -
e6ce1743 by Ben Gamari at 2019-03-04T15:18:41Z
Revert "compiler: Write .o files atomically. See #14533"

This reverts commit 0e2d300a59b1b5c167d2e7d99a448c8663ba6d7d.

- - - - -
80dfcee6 by Simon Peyton Jones at 2019-03-05T08:09:41Z
Be more careful when naming TyCon binders

This patch fixes two rather gnarly test cases:
  * Trac #16342 (mutual recursion)
    See Note [Tricky scoping in generaliseTcTyCon]

  * Trac #16221 (shadowing)
    See Note [Unification variables need fresh Names]

The main changes are:

* Substantial reworking of TcTyClsDecls.generaliseTcTyCon
  This is the big change, and involves the rather tricky
  function TcHsSyn.zonkRecTyVarBndrs.

  See Note [Inferring kinds for type declarations] and
  Note [Tricky scoping in generaliseTcTyCon] for the details.

* bindExplicitTKBndrs_Tv and bindImplicitTKBndrs_Tv both now
  allocate /freshly-named/ unification variables. Indeed, more
  generally, unification variables are always fresh; see
  Note [Unification variables need fresh Names] in TcMType

* Clarify the role of tcTyConScopedTyVars.
  See Note [Scoped tyvars in a TcTyCon] in TyCon

As usual, this dragged in some more refactoring:

* Renamed TcMType.zonkTyCoVarBndr to zonkAndSkolemise

* I renamed checkValidTelescope to checkTyConTelescope;
  it's only used on TyCons, and indeed takes a TyCon as argument.

* I folded the slightly-mysterious reportFloatingKvs into
  checkTyConTelescope. (Previously all its calls immediately
  followed a call to checkTyConTelescope.)  It makes much more
  sense there.

* I inlined some called-once functions to simplify
  checkValidTyFamEqn. It's less spaghetti-like now.

* This patch also fixes Trac #16251.  I'm not quite sure why #16251
  went wrong in the first place, nor how this patch fixes it, but
  hey, it's good, and life is short.

- - - - -
6c4e45b0 by David Eichmann at 2019-03-05T08:15:47Z
Test Runner: don't show missing baseline warning for performance tests with expected changes on the current commit.

Trac #16359

- - - - -
646b6dfb by Krzysztof Gogolewski at 2019-03-05T08:21:53Z
Fix map/coerce rule for newtypes with wrappers

This addresses Trac #16208 by marking newtype wrapper
unfoldings as compulsory.

Furthermore, we can remove the special case for newtypes
in exprIsConApp_maybe (introduced in 7833cf407d1f).

- - - - -
37f257af by Ben Gamari at 2019-03-06T03:22:40Z
Rip out object splitting

The splitter is an evil Perl script that processes assembler code.
Its job can be done better by the linker's --gc-sections flag. GHC
passes this flag to the linker whenever -split-sections is passed on
the command line.

This is based on @DemiMarie's D2768.

Fixes Trac #11315
Fixes Trac #9832
Fixes Trac #8964
Fixes Trac #8685
Fixes Trac #8629

- - - - -
23342e1f by Ömer Sinan Ağacan at 2019-03-06T03:28:45Z
rts/Printer: Introduce a few more printing utilities

These include printLargeAndPinnedObjects, printWeakLists, and
printStaticObjects. These are generally useful things to have.

- - - - -
c19a401d by Ömer Sinan Ağacan at 2019-03-06T03:28:45Z
rts/Printer: Print forwarding pointers

- - - - -
db039a4a by Ryan Scott at 2019-03-06T03:40:54Z
Add regression test for #15918

The test case in #15918 no longer triggers an `ASSERT` failure on
GHC HEAD, likely due to commit
682783828275cca5fd8bf5be5b52054c75e0e22c (`Make a smart mkAppTyM`).
This patch adds a regression test for #15918 to finally put it to
rest.

- - - - -
2ff77b98 by P.C. Shyamshankar at 2019-03-06T14:17:22Z
Handle absolute paths to build roots in Hadrian.

Fixes #16187.

This patch fixes various path concatenation issues to allow functioning
builds with hadrian when the build root location is specified with an
absolute path.

Remarks:

- The path concatenation operator (-/-) now handles absolute second operands
  appropriately. Its behavior should match that of POSIX (</>) in this
  regard.

- The `getDirectoryFiles*` family of functions only searches for matches
  under the directory tree rooted by its first argument; all of the
  results are also relative to this root. If the first argument is the
  empty string, the current working directory is used.

  This patch passes the appropriate directory (almost always either `top`
  or `root`), and subsequently attaches that directory prefix so that
  the paths refer to the appropriate files.

- Windows `tar` does not like colons (':') in paths to archive files, it
  tries to resolve them as remote paths. The `--force-local` option
  remedies this, and is applied on windows builds.

- - - - -
5aab1d9c by Ömer Sinan Ağacan at 2019-03-06T20:53:32Z
rts: Unglobalize dead_weak_ptr_list and resurrected_threads

In the concurrent nonmoving collector we will need the ability to call
`traverseWeakPtrList` concurrently with minor generation collections.
This global state stands in the way of this. However, refactoring it
away is straightforward since this list only persists the length of a
single GC.

- - - - -
a4944d8d by Ben Gamari at 2019-03-06T20:53:32Z
Fix it

- - - - -
78dd04f9 by Ryan Scott at 2019-03-06T21:05:45Z
Fix #16385 by appending _maybe to a use of lookupGlobalOcc

`instance forall c. c` claimed that `c` was out of scope because the
renamer was invoking `lookupGlobalOcc` on `c` (in
`RnNames.getLocalNonValBinders`) without binding `c` first. To avoid
this, this patch changes GHC to invoke `lookupGlobalOcc_maybe` on `c`
instead, and if that returns `Nothing`, then bail out, resulting
in a better error message.

- - - - -
3caeb443 by Zejun Wu at 2019-03-06T21:11:52Z
Move reifyGHCi function into GhciMonad type class

This was the suggested change in !176 but missed the batch merge (!263).

- - - - -
4ca271d1 by Ben Gamari at 2019-03-07T02:48:10Z
testsuite: Introduce fragile modifier

Now since we have been a bit more stringent in testsuite cleanliness we
have been marking a lot of tests as fragile using the `skip` modifier.
However, this unfortunately means that we lose the association with the
ticket number documenting the fragility.

Here we introduce `fragile` and `fragile_for` to retain this
information.

- - - - -
910185a3 by Ben Gamari at 2019-03-07T02:48:10Z
testsuite: Mark heapprof001 as fragile on i386

- - - - -
a65bcbe7 by Ben Gamari at 2019-03-07T02:48:10Z
testsuite: Use fragile modifier for more tests

- - - - -
f624dc15 by Ben Gamari at 2019-03-07T02:48:10Z
gitlab-ci: Don't allow i386-deb9 to fail

Also account for testsuite metric drift.

Metric Increase:
    haddock.Cabal
    haddock.base
    T14683

- - - - -
07f378ce by Simon Peyton Jones at 2019-03-07T02:54:17Z
Add tests for Trac #16221 and #16342

- - - - -
25c3dd39 by Simon Peyton Jones at 2019-03-07T02:54:17Z
Test Trac #16263

- - - - -
7a68254a by Phuong Trinh at 2019-03-07T19:01:42Z
Fix #16392: revertCAFs in external interpreter when necessary

We revert CAFs when loading/adding modules in ghci (presumably to refresh
execution states and to allow for object code to be unloaded from the runtime).
However, with `-fexternal-interpreter` enabled, we are only doing it in the
ghci process instead of the external interpreter process where the cafs are
allocated and computed. This makes sure that revertCAFs is done in the
appropriate process no matter if that flag is present or not.

- - - - -
068b7e98 by Ryan Scott at 2019-03-07T19:07:49Z
Fix #16391 by using occCheckExpand in TcValidity

The type-variables-escaping-their-scope-via-kinds check in
`TcValidity` was failing to properly expand type synonyms, which led
to #16391. This is easily fixed by using `occCheckExpand` before
performing the validity check.

Along the way, I refactored this check out into its own function,
and sprinkled references to Notes to better explain all of the moving
parts. Many thanks to @simonpj for the suggestions.

Bumps the haddock submodule.

- - - - -
1675d40a by Sebastian Graf at 2019-03-08T01:44:08Z
Always do the worker/wrapper split for NOINLINEs

Trac #10069 revealed that small NOINLINE functions didn't get split
into worker and wrapper. This was due to `certainlyWillInline`
saying that any unfoldings with a guidance of `UnfWhen` inline
unconditionally. That isn't the case for NOINLINE functions, so we
catch this case earlier now.

Nofib results:

--------------------------------------------------------------------------------
        Program         Allocs    Instrs
--------------------------------------------------------------------------------
 fannkuch-redux          -0.3%      0.0%
             gg          +0.0%     +0.1%
       maillist          -0.2%     -0.2%
        minimax           0.0%     -0.8%
--------------------------------------------------------------------------------
            Min          -0.3%     -0.8%
            Max          +0.0%     +0.1%
 Geometric Mean          -0.0%     -0.0%

Fixes #10069.

-------------------------
Metric Increase:
    T9233
-------------------------

- - - - -
48927a9a by Alp Mestanogullari at 2019-03-08T10:50:26Z
Hadrian: various improvements around the 'test' rule

- introduce a -k/--keep-test-files flag to prevent cleanup
- add -dstg-lint to the options that are always passed to tests
- infer library ways from the compiler to be tested instead of getting them
  from the flavour (like make)
- likewise for figuring out whether the compiler to be tested is "debugged"
- specify config.exeext
- correctly specify config.in_tree_compiler, instead of always passing True
- fix formatting of how we pass a few test options
- add (potential) extensions to check-* program names
- build check-* programs with the compiler to be tested
- set TEST_HC_OPTS_INTERACTIVE and PYTHON env vars when running tests

- - - - -
5d744143 by Andrey Mokhov at 2019-03-08T10:56:32Z
Hadrian: Drop remaining symlink traversal code from build scripts

This partly resolves #16325 (https://ghc.haskell.org/trac/ghc/ticket/16325).

As previously discussed in https://github.com/snowleopard/hadrian/issues/667,
we do not need the symlink traversal code in build scripts. However, it
appears we forgot to delete this code from our Stack-based build scripts,
which led to placing all build artefacts in an unexpected location when
using Hadrian in combination with symlink trees. This commit fixes this.

- - - - -
82628254 by Vladislav Zavialov at 2019-03-08T11:02:37Z
Testsuite: use 'fragile' instead of 'skip' for T3424, T14697

Also, replace some tabs with spaces to avoid a "mixed indent" warning that vim
gives me.

- - - - -
5be7ad78 by Simon Peyton Jones at 2019-03-08T11:08:41Z
Use captureTopConstraints in TcRnDriver calls

Trac #16376 showed the danger of failing to report an error
that exists only in the unsolved constraints, if an exception
is raised (via failM).

Well, the commit 5c1f268e (Fail fast in solveLocalEqualities)
did just that -- i.e. it found errors in the constraints, and
called failM to avoid a misleading cascade.

So we need to be sure to call captureTopConstraints to report
those insolubles.  This was wrong in TcRnDriver.tcRnExpr and
in TcRnDriver.tcRnType.

As a result the error messages from test T13466 improved slightly,
a happy outcome.

- - - - -
224a6b86 by Sylvain Henry at 2019-03-08T19:05:10Z
TH: support raw bytes literals (#14741)

GHC represents String literals as ByteString internally for efficiency
reasons. However, until now it wasn't possible to efficiently create
large string literals with TH (e.g. to embed a file in a binary, cf #14741):
TH code had to unpack the bytes into a [Word8] that GHC then had to re-pack
into a ByteString.

This patch adds the possibility to efficiently create a "string" literal
from raw bytes. We get the following compile times for different sizes
of TH created literals:

|| Size || Before || After  || Gain ||
|| 30K  || 2.307s || 2.299  || 0%   ||
|| 3M   || 3.073s || 2.400s || 21%  ||
|| 30M  || 8.517s || 3.390s || 60%  ||

Ticket #14741 can be fixed if the original code uses this new TH feature.

- - - - -
2762f94d by Roland Senn at 2019-03-08T19:11:19Z
Fix #13839: GHCi warnings do not respect the default module header

- - - - -
1f5cc9dc by Simon Peyton Jones at 2019-03-09T07:07:53Z
Stop inferring over-polymorphic kinds

Before this patch GHC was trying to be too clever
(Trac #16344); it succeeded in kind-checking this
polymorphic-recursive declaration

    data T ka (a::ka) b
      = MkT (T Type           Int   Bool)
            (T (Type -> Type) Maybe Bool)

As Note [No polymorphic recursion] discusses, the "solution" was
horribly fragile.  So this patch deletes the key lines in
TcHsType, and a wodge of supporting stuff in the renamer.

There were two regressions, both the same: a closed type family
decl like this (T12785b) does not have a CUSK:
  type family Payload (n :: Peano) (s :: HTree n x) where
    Payload Z (Point a) = a
    Payload (S n) (a `Branch` stru) = a

To kind-check the equations we need a dependent kind for
Payload, and we don't get that any more.  Solution: make it
a CUSK by giving the result kind -- probably a good thing anyway.

The other case (T12442) was very similar: a close type family
declaration without a CUSK.

- - - - -
cfbedf17 by Niklas Hambüchen at 2019-03-09T07:14:13Z
compiler: Write .o files atomically. See #14533

This issue was reproduced with, and the fix confirmed with,
the `hatrace` tool for syscall-based fault injection:

    https://github.com/nh2/hatrace

The concrete test case for GHC is at

    https://github.com/nh2/hatrace/blob/e23d35a2d2c79e8bf49e9e2266b3ff7094267f29/test/HatraceSpec.hs#L185

A previous, nondeterministic reproducer for the issue was provided by
Alexey Kuleshevich in

    https://github.com/lehins/exec-kill-loop

Signed-off-by: Niklas Hambüchen <niklas at fpcomplete.com>
Reviewed-by: Alexey Kuleshevich <alexey at fpcomplete.com>

- - - - -
08ad38a9 by Niklas Hambüchen at 2019-03-09T07:14:13Z
compiler: Refactor: extract `withAtomicRename`

- - - - -
e76ee675 by Ben Gamari at 2019-03-09T12:30:17Z
rts: Factor out large bitmap walking

This will be needed by the mark phase of the non-moving collector
so let's factor it out.

- - - - -
6e3e537e by Edward Z. Yang at 2019-03-09T12:36:26Z
Make bkpcabal01 test compatible with new ordering requirements.

Previously, our test did something like this:

1. Typecheck p
2. Typecheck q (which made use of an instantiated p)
3. Build instantiated p
4. Build instantiated q

Cabal previously permitted this, under the reasoning that during
typechecking there's no harm in using the instantiated p even if we
haven't build it yet; we'll just instantiate it on the fly with p.

However, this is not true!  If q makes use of a Template Haskell
splice from p, we absolutely must have built the instantiated p
before we typecheck q, since this typechecking will need to
run some splices.  Cabal now complains that you haven't done
it correctly, which we indeed have not!

Reordering so that we do this:

1. Typecheck p
3. Build instantiated p
2. Typecheck q (which made use of an instantiated p)
4. Build instantiated q

Fixes the problem.  If Cabal had managed the ordering itself, it would
have gotten it right.

Signed-off-by: Edward Z. Yang <ezyang at fb.com>

- - - - -
6b2f0991 by Sylvain Henry at 2019-03-09T12:42:34Z
NCG: correctly escape path strings on Windows (#16389)

GHC native code generator generates .incbin and .file directives. We
need to escape those strings correctly on Windows (see #16389).

- - - - -
b760269c by Ben Gamari at 2019-03-09T12:48:38Z
Rip out perl dependency

The object splitter was the last major user of perl. There remain a few
uses in nofib but we can just rely on the system's perl for this since
it's not critical to the build.

- - - - -
0cd98957 by Ben Gamari at 2019-03-09T12:48:38Z
Drop utils/count_lines

This doesn't appear to be used anywhere in the build system and it
relies on perl. Drop it.

- - - - -
bcb6769c by Alec Theriault at 2019-03-11T22:11:59Z
Ignore more version numbers in the testsuite

Prevents some tests from failing just due to mismatched version numbers.

These version numbers shouldn't cause tests to fail, especially since
we *expect* them to be regularly incremented. The motivation for this
particular set of changes came from the changes that came along with
the `base` version bump in 8f19ecc95fbaf2cc977531d721085d8441dc09b7.

- - - - -
60b03ade by Krzysztof Gogolewski at 2019-03-11T22:18:06Z
Change the warning in substTy back to an assertion

We'd like to enforce the substitution invariant (Trac #11371).
In a492af06d326453 the assertion was downgraded to a warning;
I'm restoring the assertion and making the calls that
don't maintain the invariant as unchecked.

- - - - -
2f453414 by Krzysztof Gogolewski at 2019-03-11T22:18:06Z
Add a test for Trac #13951

It no longer gives a warning.

- - - - -
b2322310 by Matthew Pickering at 2019-03-12T13:04:52Z
Hadrian: Allow passing CABFLAGS into build.cabal.sh

Setting `CABFLAGS=args` will pass the additional arguments to cabal
when it is invoked.

- - - - -
61264556 by Matthew Pickering at 2019-03-12T13:04:52Z
Hadrian: Make libsuf and distDir stage aware

The version suffix needs to be the version of the stage 0 compiler
when building shared libraries with the stage 0 compiler.

- - - - -
705fa21d by Matthew Pickering at 2019-03-12T13:04:52Z
Hadrian: Make makeRelativeNoSysLink total

makeRelativeNoSysLink would previously crash for no reason if the first
argument as `./` due to the call to `head`. This refactoring keeps the
behaviour the same but doesn't crash in this corner case.

- - - - -
4cf2160a by Matthew Pickering at 2019-03-12T13:04:52Z
Hadrian: Fix rpath so shared objects work after being copied

After being copied all the shared objects end up in the same directory.
Therefore the correct rpath is `$ORIGIN` rather than the computed
path which is relative to the directory where it is built.

- - - - -
2d7dd028 by Matthew Pickering at 2019-03-12T13:04:52Z
Hadrian: Add ./hadrian/ghci.sh script for fast development feedback

Running the `./hadrian/ghci` target will load the main compiler into
a ghci session. This is intended for fast development feedback, modules are only
typechecked so it isn't possible to run any functions in the repl.

You can also use this target with `ghcid`.

The first time this command is run hadrian will need to compile a few dependencies
which will take 1-2 minutes. Loading GHC into GHCi itself takes about 30 seconds.

Internally this works by calling a new hadrian target called `tool-args`.
This target prints out the package and include flags which are necessary
to load files into ghci. The same target is intended to be used by other
tooling which uses the GHC API in order to set up the correct GHC API
session. For example, using this target it is also possible to use HIE
when developing on GHC.

- - - - -
bb684e65 by Matthew Pickering at 2019-03-12T13:04:52Z
Remove training whitespace

- - - - -
72c455a4 by Matthew Pickering at 2019-03-12T13:04:52Z
CI: Add ghc-in-ghci build job

This is a separate build job to the other hadrian jobs as it only takes
about 2-3 minutes to run from cold. The CI tests that the
`./hadrian/ghci` script loads `ghc/Main.hs` successfully.

- - - - -
5165378d by Matthew Pickering at 2019-03-12T13:04:52Z
Remove trailing whitespace

- - - - -
50249a9f by Simon Peyton Jones at 2019-03-12T13:13:28Z
Use transSuperClasses in TcErrors

Code in TcErrors was recursively using immSuperClasses,
which loops in the presence of UndecidableSuperClasses.

Better to use transSuperClasses instead, which has a loop-breaker
mechanism built in.

Fixes issue #16414.

- - - - -
62db9295 by Ömer Sinan Ağacan at 2019-03-12T13:19:29Z
Remove duplicate functions in StgCmmUtils, use functions from CgUtils

Also remove unused arg from get_Regtable_addr_from_offset

- - - - -
4db9bdd9 by Ryan Scott at 2019-03-12T13:25:39Z
Add regression test for #16347

Commit 1f5cc9dc8aeeafa439d6d12c3c4565ada524b926 ended up
fixing #16347. Let's add a regression test to ensure that it stays
fixed.

- - - - -
02ddf947 by Matthew Pickering at 2019-03-12T13:42:53Z
CI: Update ci-images commit
- - - - -
a0cab873 by Matthew Pickering at 2019-03-12T13:44:45Z
Revert: Update ci-images commit
- - - - -
23fc6156 by Ben Gamari at 2019-03-13T19:03:53Z
testsuite: Mark heapprof001 as fragile on all platforms

See #15382.

- - - - -
cb17c2da by Alp Mestanogullari at 2019-03-13T19:10:01Z
Hadrian: build (and retrieve) binary distributions in CI

With all the recent fixes to the binary-dist rule in Hadrian, we can now run
that rule in CI and keep the bindists around in gitlab as artifacts, just like
we do for the make CI jobs.

To get 'autoreconf' to work in the Windows CI, we have to run it through the
shell interpreter, so this commit does that along the way.

- - - - -
36546a43 by Ryan Scott at 2019-03-13T19:16:08Z
Fix #16411 by making dataConCannotMatch aware of (~~)

The `dataConCannotMatch` function (which powers the
`-Wpartial-fields` warning, among other things) had special reasoning
for explicit equality constraints of the form `a ~ b`, but it did
not extend that reasoning to `a ~~ b` constraints, leading to #16411.
Easily fixed.

- - - - -
10a97120 by Ben Gamari at 2019-03-14T16:20:50Z
testsuite: Add testcase for #16394

- - - - -
8162eab2 by Ryan Scott at 2019-03-15T13:59:30Z
Remove the GHCi debugger's panicking isUnliftedType check

The GHCi debugger has never been that robust in the face of
higher-rank types, or even types that are _interally_ higher-rank,
such as the types of many class methods (e.g., `fmap`). In GHC 8.2,
however, things became even worse, as the debugger would start to
_panic_ when a user tries passing the name of a higher-rank thing
to `:print`. This all ties back to a strange `isUnliftedType` check
in `Debugger` that was mysteriously added 11 years ago
(in commit 4d71f5ee6dbbfedb4a55767e4375f4c0aadf70bb) with no
explanation whatsoever.

After some experimentation, no one is quite sure what this
`isUnliftedType` check is actually accomplishing. The test suite
still passes if it's removed, and I am unable to observe any
differences in debugger before even with data types that _do_ have
fields of unlifted types (e.g., `data T = MkT Int#`). Given that
this is actively causing problems (see #14828), the prudent thing
to do seems to be just removing this `isUnliftedType` check, and
waiting to see if anyone shouts about it. This patch accomplishes
just that.

Note that this patch fix the underlying issues behind #14828, as the
debugger will still print unhelpful info if you try this:

```
λ> f :: (forall a. a -> a) -> b -> b; f g x = g x
λ> :print f
f = (_t1::t1)
```

But fixing this will require much more work, so let's start with the
simple stuff for now.

- - - - -
d10e2368 by David Eichmann at 2019-03-15T14:05:38Z
Hadrian: remove unneeded imports.

- - - - -
4df75772 by David Eichmann at 2019-03-15T14:05:38Z
Hadrian: remove unneeded rpaths.

Issue #12770

- - - - -
afc80730 by David Eichmann at 2019-03-15T14:11:47Z
Git ignore .hadrian_ghci (generated by the ./hadrian/ghci.sh)

[skip ci]

- - - - -
610ec224 by Ryan Scott at 2019-03-15T14:17:54Z
Update Trac ticket URLs to point to GitLab

This moves all URL references to Trac tickets to their corresponding
GitLab counterparts.

- - - - -
97032ed9 by Simon Peyton Jones at 2019-03-15T14:24:01Z
Report better suggestion for GADT data constructor

This addresses issue #16427. An easy fix.

- - - - -
83e09d3c by Peter Trommler at 2019-03-15T14:30:08Z
PPC NCG: Use liveness information in CmmCall

We make liveness information for global registers
available on `JMP` and `BCTR`, which were the last instructions
missing. With complete liveness information we do not need to
reserve global registers in `freeReg` anymore. Moreover we
assign R9 and R10 to callee saves registers.

Cleanup by removing `Reg_Su`, which was unused, from `freeReg`
and removing unused register definitions.

The calculation of the number of floating point registers is too
conservative. Just follow X86 and specify the constants directly.

Overall on PowerPC this results in 0.3 % smaller code size in nofib
while runtime is slightly better in some tests.

- - - - -
57201beb by Simon Peyton Jones at 2019-03-15T14:36:14Z
Add flavours link
- - - - -
4927117c by Simon Peyton Jones at 2019-03-16T12:08:25Z
Improve error recovery in the typechecker

Issue #16418 showed that we were carrying on too eagerly after a bogus
type signature was identified (a bad telescope in fact), leading to a
subsequent crash.

This led me in to a maze of twisty little passages in the typechecker's
error recovery, and I ended up doing some refactoring in TcRnMonad.
Some specfifics

* TcRnMonad.try_m is now called attemptM.

* I switched the order of the result pair in tryTc,
  to make it consistent with other similar functions.

* The actual exception used in the Tc monad is irrelevant so,
  to avoid polluting type signatures, I made tcTryM, a simple
  wrapper around tryM, and used it.

The more important changes are in

* TcSimplify.captureTopConstraints, where we should have been calling
  simplifyTop rather than reportUnsolved, so that levity defaulting
  takes place properly.

* TcUnify.emitResidualTvConstraint, where we need to set the correct
  status for a new implication constraint.  (Previously we ended up
  with an Insoluble constraint wrapped in an Unsolved implication,
  which meant that insolubleWC gave the wrong answer.

- - - - -
600a1ac3 by Simon Peyton Jones at 2019-03-16T12:08:25Z
Add location to the extra-constraints wildcard

The extra-constraints wildcard had lost its location
(issue #16431).

Happily this is easy to fix.  Lots of error improvements.

- - - - -
1c1b63d6 by Ben Gamari at 2019-03-16T23:13:36Z
compiler: Disable atomic renaming on Windows

As discussed in #16450, this feature regresses CI on Windows, causing
non-deterministic failures due to missing files.

- - - - -
6764da43 by Ben Gamari at 2019-03-16T23:16:56Z
gitlab-ci: Explicitly set bindist tarball name

- - - - -
ad79ccd9 by Ben Gamari at 2019-03-16T23:17:46Z
gitlab-ci: Generate documentation tarball

- - - - -
3f2291e4 by Ben Gamari at 2019-03-16T23:17:46Z
gitlab-ci: Generate source tarballs

- - - - -
cb61371e by Ben Gamari at 2019-03-17T09:05:10Z
ghc-heap: Introduce closureSize

This function allows the user to compute the (non-transitive) size of a
heap object in words. The "closure" in the name is admittedly confusing
but we are stuck with this nomenclature at this point.

- - - - -
c01d5af3 by Michael Sloan at 2019-03-18T02:23:19Z
Extract out use of UnboxedTuples from GHCi.Leak

See #13101 + #15454 for motivation.  This change reduces the number of
modules that need to be compiled to object code when loading GHC into
GHCi.

- - - - -
6113d0d4 by Radosław Rowicki at 2019-03-18T02:29:25Z
Update bug tracker link to point to gitlab instead of deprecated trac
- - - - -
b8326897 by Ben Gamari at 2019-03-18T03:16:12Z
gitlab-ci: Always build fedora27

This ends up being much easier to use than Debian 9 under NixOS.

- - - - -
acf2129d by Ben Gamari at 2019-03-18T03:17:36Z
gitlab-ci: Implement head.hackage jobs

- - - - -
71648c35 by Ben Gamari at 2019-03-20T03:04:18Z
gitlab-ci: Implement support for i386/Windows bindists

- - - - -
d94ca74f by Tamar Christina at 2019-03-20T03:10:23Z
err: clean up error handler

- - - - -
398f2cbc by Ben Gamari at 2019-03-20T03:16:32Z
Bump Cabal submodule to 3.0

Metric Increase:
    haddock.Cabal

- - - - -
89a201e8 by Takenobu Tani at 2019-03-20T03:22:36Z
users-guide: Update Wiki URLs to point to GitLab

The user's guide uses the `ghc-wiki` macro, and substitution rules
are complicated. So I manually edited `.rst` files without sed.

I changed `Commentary/Latedmd` only to a different page.
It is more appropriate as an example.

[ci skip]

- - - - -
98ff1a56 by Krzysztof Gogolewski at 2019-03-20T03:28:42Z
Replace nOfThem by replicate

- - - - -
6a47414f by Krzysztof Gogolewski at 2019-03-20T03:28:42Z
Fix typos

- - - - -
1e26e60d by Krzysztof Gogolewski at 2019-03-20T03:28:42Z
Simplify monadic code

- - - - -
c045bd7c by Krzysztof Gogolewski at 2019-03-20T03:28:42Z
Remove deprecated reinitializeGlobals

- - - - -
6d19ad72 by Ben Gamari at 2019-03-20T03:34:49Z
gitlab-ci: Bump docker images

To install lndir and un-break the source distribution job.

- - - - -
c7a84a60 by Matthew Pickering at 2019-03-20T03:34:50Z
Update .gitlab-ci.yml
- - - - -
db136237 by Ben Gamari at 2019-03-20T22:41:32Z
testsuite: Mark T16219 and cabal09 as broken on Windows

See #16386.

- - - - -
7cd8e330 by Ben Gamari at 2019-03-20T22:41:32Z
testsuite: Fix expected output on Windows for various ghci tests

Broke as -Wimplicit-kind-vars no longer exists. Specifically ghci024,
ghci057 and T9293.

- - - - -
23b639fd by Ben Gamari at 2019-03-20T22:41:32Z
testsuite: Mark T5836 as broken on Windows

See #16387.

- - - - -
a1bda08d by Ben Gamari at 2019-03-20T22:41:32Z
testsuite: Mark T15904 as broken on Windows

It seems to look for some sort of manifest file. See #16388.

- - - - -
b7f5d552 by Ben Gamari at 2019-03-20T22:41:32Z
testsuite: Mark T16190 as broken on Windows

There seems to be some filepath funniness due to TH embedding going on
here. See #16389.

- - - - -
a0c31f78 by Ben Gamari at 2019-03-20T22:41:32Z
testsuite/plugins: Add multi_cpu_race modifier on Windows

A few tests previously failed with various failure modes. For instance,
  `plugin-recomp-change` fails with:

```
Wrong exit code for plugin-recomp-change()(expected 0 , actual 2 )
Stderr ( plugin-recomp-change ):
Simple Plugin Passes Queried
Got options:
Simple Plugin Pass Run
C://GitLabRunner//builds//8fc0e283//0//ghc//ghc//inplace//mingw//bin/ld.exe: cannot find -lHSplugin-recompilation-0.1-CPeObcGoBuvHdwBnpK9jQq
collect2.exe: error: ld returned 1 exit status
`gcc.exe' failed in phase `Linker'. (Exit code: 1)
make[2]: *** [Makefile:112: plugin-recomp-change] Error 1
*** unexpected failure for plugin-recomp-change(normal)
```

It's unclear whether the ghc-pkg concurrency issue mentioned in all.T is
the culprit but the set of tests that fail overlaps strongly with the
set of tests that lack the `multi_cpu_race` modifier. Let's see if
adding it fixes them.

- - - - -
88a6e9a4 by Ben Gamari at 2019-03-20T22:41:32Z
testsuite: Mark T10672 as broken

This test, which is only run on Windows, seems to be reliably timing
out.

See #16390.

- - - - -
f4d3aaaf by Ben Gamari at 2019-03-20T22:41:32Z
testsuite/plugins: Increase compile timeout on Windows

I think the linker is routinely eating through the timeout,
leading to many spurious failures.

- - - - -
ae382245 by Ben Gamari at 2019-03-20T22:41:32Z
rts/RtsSymbols: Drop __mingw_vsnwprintf

As described in #16387, this is already defined by mingw and
consequently defining it in the RTS as well leads to multiple definition
errors from the RTS linker at runtime.

- - - - -
f79f93e4 by Ben Gamari at 2019-03-20T22:41:32Z
Don't mark cabal09 as broken

It doesn't fail reliably.

- - - - -
d98cb763 by Ben Gamari at 2019-03-20T22:41:32Z
testsuite: Don't mark T5836 as broken

I believe removing __mingw_vsnwprintf from RtsSymbols fixed #16387.

- - - - -
8c1a2743 by Ben Gamari at 2019-03-20T22:41:32Z
Try again

- - - - -
3394a7cd by Ben Gamari at 2019-03-20T22:41:32Z
testsuite: Display observed exit code on failure due to bad exit code

- - - - -
36818759 by Artem Pyanykh at 2019-03-20T23:52:39Z
Adjust section placement and relocation logic for Mach-O

1. Place each section on a separate page to ensure required
alignment (wastes lots ot space, needs to be improved).
2. Unwire relocation logic from macho sections (the most fiddly part
is adjusting internal relocations).

Other todos:
0. Add a test for section alignment.
1. Investigate 32bit relocations!
2. Fix memory leak in ZEROPAGE section allocation.
3. Fix creating redundant jump islands for GOT.
4. Investigate more compact section placement.

- - - - -
78c61acf by Artem Pyanykh at 2019-03-20T23:52:39Z
Use segments for section layout

- - - - -
7bbfb789 by Artem Pyanykh at 2019-03-20T23:52:39Z
Address some todos and fixmes

- - - - -
3cdcc0b5 by Artem Pyanykh at 2019-03-20T23:52:39Z
Add a linker test re: section alignment

- - - - -
cb745c84 by Artem Pyanykh at 2019-03-20T23:52:39Z
Add missing levels to SegmentProt enum

- - - - -
d950f11e by Artem Pyanykh at 2019-03-20T23:52:39Z
Directly test section alignment, fix internal reloc probing length

- - - - -
3fb10fcf by Artem Pyanykh at 2019-03-20T23:52:39Z
Gracefully handle error condition in Mach-O relocateSection

- - - - -
dc713c71 by Ben Gamari at 2019-03-20T23:58:49Z
ci: Move validate-x86_64-linux-deb9 to full-build stage

The `build` stage is meant to be a minimal smoke test to weed out broken
commits. The `validate-x86_64-linux-deb9` build will generally catch a
subset of issues caught by `validate-x86_64-linux-deb9-debug` so only
the latter should be in `build`.

- - - - -
505c5ab2 by Ben Gamari at 2019-03-20T23:58:49Z
ci: Add some descriptions of the stages

- - - - -
646e3dc2 by Sebastian Graf at 2019-03-21T00:04:49Z
Add a bench flavour to Hadrian

- - - - -
8d18a873 by Ryan Scott at 2019-03-21T00:10:57Z
Reject nested predicates in impredicativity checking

When GHC attempts to unify a metavariable with a type containing
foralls, it will be rejected as an occurrence of impredicativity.
GHC was /not/ extending the same treatment to predicate types, such
as in the following (erroneous) example from #11514:

```haskell
foo :: forall a. (Show a => a -> a) -> ()
foo = undefined
```

This will attempt to instantiate `undefined` at
`(Show a => a -> a) -> ()`, which is impredicative. This patch
catches impredicativity arising from predicates in this fashion.

Since GHC is pickier about impredicative instantiations, some test
cases needed to be updated to be updated so as not to fall afoul of
the new validity check. (There were a surprising number of
impredicative uses of `undefined`!) Moreover, the `T14828` test case
now has slightly less informative types shown with `:print`. This is
due to a a much deeper issue with the GHCi debugger (see #14828).

Fixes #11514.

- - - - -
7b213b8d by Ömer Sinan Ağacan at 2019-03-21T00:17:05Z
Print test suite results ("unexpected failures" etc.) in sorted order

Fixes #16425

- - - - -
f199a843 by Simon Jakobi at 2019-03-21T00:23:15Z
Check.hs: Fix a few typos

- - - - -
07d44ed1 by Ben Gamari at 2019-03-21T00:29:20Z
base: Depend upon shlwapi on Windows

As noted in #16466, `System.Environment.getExecutablePath` depends upon
`PathFileExistsW` which is defined by `shlwapi`.

Fixes #16466.

- - - - -
1382d09e by Ryan Scott at 2019-03-21T00:35:28Z
Remove unused XArrApp and XArrForm extension points

!301 removed the `HsArrApp` and `HsArrForm` constructors, which
renders the corresponding extension points `XArrApp` and `XArrForm`
useless. This patch finally rips them out.

- - - - -
3423664b by Peter Trommler at 2019-03-21T00:41:35Z
Fix specification of load_load_barrier [skip-ci]

- - - - -
84c77a67 by Alexandre Esteves at 2019-03-21T21:43:03Z
Fix typo [skip ci]
- - - - -
7092b2de by Matthew Pickering at 2019-03-22T03:38:58Z
Only run check-makefiles.py linter in testsuite dir

- - - - -
322239de by Matthew Pickering at 2019-03-22T03:38:58Z
Run linters on merge requests

It seems that it has failed to execute at all since it was implemented.

We now run the linters on merge requests.

- - - - -
8f8d532c by Ben Gamari at 2019-03-22T03:45:03Z
gitlab-ci: Do full `perf` build when building Windows releases

- - - - -
2ef72d3f by Ben Gamari at 2019-03-22T03:45:03Z
gitlab-ci: Pass --target explicitly to configure on Windows

Otherwise configure fails in the 32-bit case with
```
This GHC (c:/GitLabRunner/builds/8fc0e283/0/ghc/ghc/toolchain/bin/ghc) does not generate code for the build platform
   GHC target platform    : x86_64-unknown-mingw32
   Desired build platform : i386-unknown-mingw32
```

- - - - -
8b14f536 by Ben Gamari at 2019-03-22T03:51:08Z
Bump cabal submodule

Due to https://github.com/haskell/cabal/issues/5953.

- - - - -
dbe4557f by Matthew Pickering at 2019-03-22T14:02:32Z
CI: Allow failure in packaging step

This depends on the windows build which is still allowed to fail. If
that job fails then the packaging job will also fail.

- - - - -
366f1c68 by Ben Gamari at 2019-03-22T14:08:38Z
gitlab: Deploy documentation snapshot via GitLab Pages

- - - - -
d608d543 by Tamar Christina at 2019-03-22T14:14:45Z
Force LF line ending for md5sum [skip-ci]

- - - - -
cd07086a by Ben Gamari at 2019-03-22T14:34:51Z
gitlab-ci: Fix linters

- - - - -
ab51bee4 by Herbert Valerio Riedel at 2019-03-22T14:34:51Z
base: Remove `Monad(fail)` method and reexport `MonadFail(fail)` instead

As per https://prime.haskell.org/wiki/Libraries/Proposals/MonadFail

Coauthored-by: Ben Gamari <ben at well-typed.com>

- - - - -
266b49ca by Ben Gamari at 2019-03-22T22:33:20Z
gitlab-ci: Clean up linter

I'm not sure why these steps were done but they seem counterproductive
and unnecessary.

- - - - -
44b08ede by Ben Gamari at 2019-03-22T22:38:11Z
gitlab-ci: Fix YAML syntax

- - - - -
971f4530 by Ben Gamari at 2019-03-22T22:49:34Z
gitlab-ci: Compute merge base against remote tracking branch

Previously we would use the local branch with the name
`$CI_MERGE_REQUEST_TARGET_BRANCH_NAME` to compute the merge base when
linting. However, this branch isn't necessarily up-to-date. We should
rather use `origin/$CI_MERGE_REQUEST_TARGET_BRANCH_NAME`.

- - - - -
8d01b572 by Ben Gamari at 2019-03-23T16:37:56Z
gitlab-ci: Explicitly fetch target branch

`git fetch`, which we used previously, doesn't update the remote
tracking branches.

- - - - -
cd85f8a7 by Ben Gamari at 2019-03-24T12:46:13Z
gitlab-ci: Allow linters to fail for now

They are broken and I don't have time to fix them at the moment.
- - - - -
d763b2e7 by Haskell-mouse at 2019-03-25T18:02:22Z
User's Guide: extensions compatibility

Adds the mention that extensions "AllowAmbiguousTypes" and "RankNTypes"
are not always compatible with each other.
Specifies the conditions and causes of failing in resolving
of ambiguity.

- - - - -
200d65ef by Matthew Pickering at 2019-03-25T18:02:25Z
Check hadrian/ghci.sh script output to determine pass/fail

ghci always exits with exit code 0 so you have to check the output
to see if the modules loaded succesfully.

- - - - -
8e07368f by Matthew Pickering at 2019-03-25T18:02:27Z
Refactor ./hadrian/ghci.sh for better error messages

By separating these two lines, if the first command fails then `ghci` is
not loaded. Before it would still load ghci but display lots of errors
about not being able to find modules.

- - - - -
3769e3a8 by Takenobu Tani at 2019-03-25T18:02:29Z
Update Wiki URLs to point to GitLab

This moves all URL references to Trac Wiki to their corresponding
GitLab counterparts.

This substitution is classified as follows:

1. Automated substitution using sed with Ben's mapping rule [1]
    Old: ghc.haskell.org/trac/ghc/wiki/XxxYyy...
    New: gitlab.haskell.org/ghc/ghc/wikis/xxx-yyy...

2. Manual substitution for URLs containing `#` index
    Old: ghc.haskell.org/trac/ghc/wiki/XxxYyy...#Zzz
    New: gitlab.haskell.org/ghc/ghc/wikis/xxx-yyy...#zzz

3. Manual substitution for strings starting with `Commentary`
    Old: Commentary/XxxYyy...
    New: commentary/xxx-yyy...

See also !539

[1]: https://gitlab.haskell.org/bgamari/gitlab-migration/blob/master/wiki-mapping.json

- - - - -
b9da2868 by Ryan Scott at 2019-03-25T18:02:33Z
Correct duplicate 4.12.0.0 entry in base's changelog

See #16490.

[ci skip]

- - - - -
ab41c1b4 by Andrey Mokhov at 2019-03-27T11:20:03Z
Hadrian: Bump Shake to 0.17.6

The new release of Shake comes with these relevant features:

* use symlinks for --shared
* add --compact for a Bazel/Buck style output

- - - - -
646f2e79 by Andrey Mokhov at 2019-03-27T11:20:03Z
Hadrian: trace the execution of expensive Cabal calls

We use Cabal to parse, configure, register and copy packages, which are
expensive operations that are currently not visible to Shake's profiling
infrastructure. By using `traced` we tell Shake to add these IO actions
to the profiling report, helping us to identify performance bottlenecks.

We use short tracing keys, as recommended in Shake docs: the name of the
current target is already available in the rest of the profiling
information.

- - - - -
fb12f53c by Alp Mestanogullari at 2019-03-27T11:20:05Z
Hadrian: introduce an easy way for users to build with -split-sections

Any user can now trivially build any number of Haskell packages with
`-split-sections` by using `splitSections`/`splitSectionsIf` on any
existing or new flavour:

    -- build all packages but the ghc library with -split-sections
    splitSections :: Flavour -> Flavour

    -- build all packages that satisfy the given predicate
    -- with --split-sections
    splitSectionsIf :: (Package -> Bool) -> Flavour -> Flavour

See the new section in `doc/user-settings.md`.

- - - - -
3dec527a by David Eichmann at 2019-03-27T11:20:09Z
Hadrian: don't use -zorigin on darwin.

- - - - -
5730f863 by Ömer Sinan Ağacan at 2019-03-27T11:20:10Z
Minor refactoring in copy array primops:

- `emitCopySmallArray` now checks size before generating code and
  doesn't generate any code when size is 0. `emitCopyArray` already does
  this so this makes small/large array cases the same in argument
  checking.

- In both `emitCopySmallArray` and `emitCopyArray` read the `dflags`
  after checking the argument.

- - - - -
4acdb769 by Chaitanya Koparkar at 2019-03-27T11:20:11Z
Fix a few broken Trac links [skip ci]

This patch only attempts to fix links that don't automatically re-direct to the correct URL.

- - - - -
97ad5cfb by Artem Pelenitsyn at 2019-03-29T18:18:12Z
Add some tips to the Troubleshooting section of README

- - - - -
8a20bfc2 by Michael Peyton Jones at 2019-03-29T18:18:14Z
Visibility: handle multiple units with the same name

Fixes #16228. The included test case is adapted from the reproduction in
the issue, and fails without this patch.

------

We compute an initial visilibity mapping for units based on what is
present in the package databases. To seed this, we compute a set of all
the package configs to add visibilities for.

However, this set was keyed off the unit's *package name*. This is
correct, since we compare packages across databases by version. However,
we would only ever consider a single, most-preferable unit from the
database in which it was found.

The effect of this was that only one of the libraries in a Cabal package
would be added to this initial set. This would cause attempts to use
modules from the omitted libraries to fail, claiming that the package
was hidden (even though `ghc-pkg` would correctly show it as visible).

A solution is to do the selection of the most preferable packages
separately, and then be sure to consider exposing all units in the
same package in the same package db. We can do this by picking a
most-preferable unit for each package name, and then considering
exposing all units that are equi-preferable with that unit.

------

Why wasn't this bug apparent to all people trying to use sub-libraries
in Cabal? The answer is that Cabal explicitly passes `-package` and
`-package-id` flags for all the packages it wants to use, rather than
relying on the state of the package database. So this bug only really
affects people who are trying to use package databases produced by Cabal
outside of Cabal itself.

One particular example of this is the way that the
Nixpkgs Haskell infrastructure provides wrapped GHCs: typically these
are equipped with a package database containing all the needed
package dependencies, and the user is not expected to pass
`-package` flags explicitly.

- - - - -
754b5455 by Artem Pelenitsyn at 2019-03-29T18:18:20Z
docs: make nfib compute the Fibonacci sequence [skipci]
- - - - -
1a567133 by Ben Gamari at 2019-03-29T18:18:20Z
ci: Check that changelogs don't contain "TBA"

This ensures that the release dates in the library changelogs are
properly set.

- - - - -
6e15ca54 by Ben Gamari at 2019-03-29T18:18:22Z
Bump transformers to 0.5.6.2

See #16199.

- - - - -
6f7115df by Ben Gamari at 2019-03-30T11:42:38Z
ci: Ensure index.html is preserved in documentation tarball

- - - - -
33173a51 by Alexandre at 2019-04-01T07:32:28Z
    Add support for bitreverse primop

    This commit includes the necessary changes in code and
    documentation to support a primop that reverses a word's
    bits. It also includes a test.

- - - - -
a3971b4e by Alexandre at 2019-04-01T07:32:28Z
Bump ghc-prim's version where needed

- - - - -
061276ea by Michael Sloan at 2019-04-01T07:32:30Z
Remove unnecessary uses of UnboxedTuples pragma (see #13101 / #15454)

Also removes a couple unnecessary MagicHash pragmas

- - - - -
e468c613 by David Eichmann at 2019-04-01T07:32:34Z
Support Shake's --lint-fsatrace feature.

Using this feature requires fsatrace (e.g. https://github.com/jacereda/fsatrace).
Simply use the `--lint-fsatrace` option when running hadrian.
Shake version >= 0.17.7 is required to support linting out of tree build dirs.

- - - - -
1e9e4197 by Ben Gamari at 2019-04-01T07:32:34Z
gitlab: Add merge request template for backports for 8.8

- - - - -
55650d14 by Ben Gamari at 2019-04-01T07:32:34Z
gitlab: Add some simply issue templates

- - - - -
27b99ed8 by Takenobu Tani at 2019-04-01T07:32:36Z
Clean up URLs to point to GitLab

This moves URL references to old Trac to their corresponding
GitLab counterparts.

This patch does not update the submodule library, such as
libraries/Cabal.

See also !539, !606, !618

[ci skip]

- - - - -
18d1555d by Adam Sandberg Eriksson at 2019-04-01T07:32:38Z
configure: document the use of the LD variable

- - - - -
10352efa by Ben Gamari at 2019-04-01T22:22:34Z
gitlab: Add feature request MR template

- - - - -
1e52054b by Ben Gamari at 2019-04-01T23:16:21Z
gitlab: Move feature request template to issue_templates

Whoops.

- - - - -
e5c21ca9 by Ben Gamari at 2019-04-01T23:16:25Z
gitlab: Mention ~"user facing" label

- - - - -
39282422 by Ryan Scott at 2019-04-02T00:01:38Z
Bump array submodule

This bumps `array` to version 0.5.4.0 so that we can distinguish
it with `MIN_VERSION_array` (as it introduces some changes to the
`Show` instance for `UArray`).

- - - - -
7cf5ba3d by Michal Terepeta at 2019-04-02T00:07:49Z
Improve performance of newSmallArray#

This:
- Hoists part of the condition outside of the initialization loop in
  `stg_newSmallArrayzh`.
- Annotates one of the unlikely branches as unlikely, also in
  `stg_newSmallArrayzh`.
- Adds a couple of annotations to `allocateMightFail` indicating which
  branches are likely to be taken.

Together this gives about 5% improvement.

Signed-off-by: Michal Terepeta <michal.terepeta at gmail.com>

- - - - -
dd9c82ef by David Eichmann at 2019-04-02T00:13:55Z
Hadrian: correct deps for ghc builder.

Previously, when needing ghc as a builder, the ghcDeps (Files
the GHC binary depends on) for the current stage were needed.
This is incorrect as the previous stage's ghc is used for building.
This commit fixes the issue, needing the previous stage's ghcDeps.

- - - - -
345306d3 by Alexandre Baldé at 2019-04-02T16:34:30Z
Fix formatting issue in ghc-prim's changelog [skip ci]

- - - - -
f54b5124 by David Eichmann at 2019-04-02T16:40:39Z
Hadrian: traceAllow deep dependencies when compilling haskell object files.

- - - - -
d132b30a by David Eichmann at 2019-04-02T16:40:39Z
Hadrian: lint ignore autom4te and ghc-pkg cache files.

- - - - -
bf734195 by Simon Marlow at 2019-04-02T16:46:46Z
Add myself to libraries/ghci
- - - - -
5a75ccd0 by klebinger.andreas at gmx.at at 2019-04-03T04:34:57Z
Fix faulty substitutions in StgCse (#11532).

`substBndr` should rename bindings which shadow existing ids.
However while it was renaming the bindings it was not adding proper substitutions
for renamed bindings.
Instead of adding a substitution of the form `old -> new` for renamed
bindings it mistakenly added `old -> old` if no replacement had taken
place while adding none if `old` had been renamed.

As a byproduct this should improve performance, as we no longer add
useless substitutions for unshadowed bindings.

- - - - -
2ec749b5 by Nathan Collins at 2019-04-03T04:41:05Z
users-guide: Fix typo

- - - - -
ea192a09 by Andrew Martin at 2019-04-03T04:41:05Z
base: Add documentation that liftA2 used to not be a typeclass method

- - - - -
733f1b52 by Frank Steffahn at 2019-04-03T04:41:05Z
users-guide: Typo in Users Guide, Glasgow Exts

- - - - -
3364def0 by Ben Gamari at 2019-04-03T04:41:05Z
integer-gmp: Write friendlier documentation for Integer

- - - - -
dd3a3d08 by Ben Gamari at 2019-04-03T04:41:05Z
integer-simple: Add documentation for Integer type

- - - - -
722fdddf by Chris Martin at 2019-04-03T04:41:05Z
Correct two misspellings of "separately"

- - - - -
bf6dbe3d by Chris Martin at 2019-04-03T04:41:05Z
Inline the definition of 'ap' in the Monad laws

The law as it is currently written is meaningless, because nowhere have
we defined the implementation of 'ap'. The reader of the Control.Monad
documentation is provided with only a type signature,

> ap :: Monad m => m (a -> b) -> m a -> m b

an informal description,

> In many situations, the liftM operations can be replaced by uses of
> ap, which promotes function application.

and a relationship between 'ap' and the 'liftM' functions

> return f `ap` x1 `ap` ... `ap` xn
> is equivalent to
> liftMn f x1 x2 ... xn

Without knowing how 'ap' is defined, a law involving 'ap' cannot
provide any guidance for how to write a lawful Monad instance, nor can
we conclude anything from the law.

I suspect that a reader equipped with the understanding that 'ap' was
defined prior to the invention of the Applicative class could deduce
that 'ap' must be defined in terms of (>>=), but nowhere as far as I can
tell have we written this down explicitly for readers without the
benefit of historical context.

If the law is meant to express a relationship among (<*>), (>>=), and
'return', it seems that it is better off making this statement directly,
sidestepping 'ap' altogether.

- - - - -
7b090b53 by Ben Gamari at 2019-04-03T07:57:40Z
configure: Always use AC_LINK_ELSEIF when testing against assembler

This fixes #16440, where the build system incorrectly concluded that the
`.subsections_via_symbols` assembler directive was supported on a Linux
system. This was caused by the fact that gcc was invoked with `-flto`;
when so-configured gcc does not call the assembler but rather simply
serialises its AST for compilation during the final link.

This is described in Note [autoconf assembler checks and -flto].

- - - - -
4626cf21 by Sebastian Graf at 2019-04-03T08:03:47Z
Fix Uncovered set of literal patterns

Issues #16289 and #15713 are proof that the pattern match checker did
an unsound job of estimating the value set abstraction corresponding to
the uncovered set.

The reason is that the fix from #11303 introducing `NLit` was
incomplete: The `LitCon` case desugared to `Var` rather than `LitVar`,
which would have done the necessary case splitting analogous to the
`ConVar` case.

This patch rectifies that by introducing the fresh unification variable
in `LitCon` in value abstraction position rather than pattern postition,
recording a constraint equating it to the constructor expression rather
than the literal. Fixes #16289 and #15713.

- - - - -
6f13e7b1 by Ben Gamari at 2019-04-03T12:12:26Z
gitlab-ci: Build hyperlinked sources for releases

Fixes #16445.

- - - - -
895394c2 by Ben Gamari at 2019-04-03T12:15:06Z
gitlab: Fix label names in issue templates

- - - - -
75abaaea by Yuriy Syrovetskiy at 2019-04-04T08:23:19Z
Replace git.haskell.org with gitlab.haskell.org (#16196)

- - - - -
25c02ea1 by Ryan Scott at 2019-04-04T08:29:29Z
Fix #16518 with some more kind-splitting smarts

This patch corrects two simple oversights that led to #16518:

1. `HsUtils.typeToLHsType` was taking visibility into account in the
   `TyConApp` case, but not the `AppTy` case. I've factored out the
   visibility-related logic into its own `go_app` function and now
   invoke `go_app` from both the `TyConApp` and `AppTy` cases.
2. `Type.fun_kind_arg_flags` did not properly split kinds with
   nested `forall`s, such as
   `(forall k. k -> Type) -> (forall k. k -> Type)`. This was simply
   because `fun_kind_arg_flags`'s `FunTy` case always bailed out and
   assumed all subsequent arguments were `Required`, which clearly
   isn't the case for nested `forall`s. I tweaked the `FunTy` case
   to recur on the result kind.

- - - - -
51fd3571 by Ryan Scott at 2019-04-04T08:35:39Z
Use funPrec, not topPrec, to parenthesize GADT argument types

A simple oversight. Fixes #16527.

- - - - -
6c0dd085 by Ben Gamari at 2019-04-04T12:12:24Z
testsuite: Add testcase for #16111

- - - - -
cbb88865 by klebinger.andreas at gmx.at at 2019-04-04T12:12:25Z
Restore Xmm registers properly in StgCRun.c

This fixes #16514: Xmm6-15 was restored based off rax instead of rsp.
The code was introduced in the fix for #14619.

- - - - -
33b0a291 by Ryan Scott at 2019-04-04T12:12:28Z
Tweak error messages for narrowly-kinded assoc default decls

This program, from #13971, currently has a rather confusing error
message:

```hs
class C a where
  type T a :: k
  type T a = Int
```
```
    • Kind mis-match on LHS of default declaration for ‘T’
    • In the default type instance declaration for ‘T’
      In the class declaration for ‘C’
```

It's not at all obvious why GHC is complaining about the LHS until
you realize that the default, when printed with
`-fprint-explicit-kinds`, is actually `type T @{k} @* a = Int`.
That is to say, the kind of `a` is being instantiated to `Type`,
whereas it ought to be a kind variable. The primary thrust of this
patch is to weak the error message to make this connection
more obvious:

```
    • Illegal argument ‘*’ in:
        ‘type T @{k} @* a = Int’
        The arguments to ‘T’ must all be type variables
    • In the default type instance declaration for ‘T’
      In the class declaration for ‘C’
```

Along the way, I performed some code cleanup suggested by @rae in
https://gitlab.haskell.org/ghc/ghc/issues/13971#note_191287. Before,
we were creating a substitution from the default declaration's type
variables to the type family tycon's type variables by way of
`tcMatchTys`. But this is overkill, since we already know (from the
aforementioned validity checking) that all the arguments in a default
declaration must be type variables anyway. Therefore, creating the
substitution is as simple as using `zipTvSubst`. I took the
opportunity to perform this refactoring while I was in town.

Fixes #13971.

- - - - -
3a38ea44 by Eric Crockett at 2019-04-07T19:21:59Z
Fix #16282.

Previously, -W(all-)missed-specs was created with 'NoReason',
so no information about the flag was printed along with the warning.
Now, -Wall-missed-specs is listed as the Reason if it was set,
otherwise -Wmissed-specs is listed as the reason.

- - - - -
63b7d5fb by Michal Terepeta at 2019-04-08T18:29:34Z
Generate straightline code for inline array allocation

GHC has an optimization for allocating arrays when the size is
statically known -- it'll generate the code allocating and initializing
the array inline (instead of a call to a procedure from
`rts/PrimOps.cmm`).

However, the generated code uses a loop to do the initialization. Since
we already check that the requested size is small (we check against
`maxInlineAllocSize`), we can generate faster straightline code instead.
This brings about 15% improvement for `newSmallArray#` in my testing and
slightly simplifies the code in GHC.

Signed-off-by: Michal Terepeta <michal.terepeta at gmail.com>

- - - - -
2b3f4718 by Phuong Trinh at 2019-04-08T18:35:43Z
Fix #16500: look for interface files in -hidir flag in OneShot mode

We are currently ignoring options set in the hiDir field of hsc_dflags
when looking for interface files while compiling in OneShot mode. This
is inconsistent with the behaviour of other directory redirecting fields
(such as objectDir or hieDir). It is also inconsistent with the
behaviour of compilation in CompManager mode (a.k.a `ghc --make`) which
looks for interface files in the directory set in hidir flag. This
changes Finder.hs so that we use the value of hiDir while looking for
interface in OneShot mode.

- - - - -
97502be8 by Yuriy Syrovetskiy at 2019-04-08T18:41:51Z
Add `-optcxx` option (#16477)

- - - - -
97d3d546 by Ben Gamari at 2019-04-08T18:47:54Z
testsuite: Unmark T16190 as broken

Was broken via #16389 yet strangely it has started passing despite the
fact that the suggested root cause has not changed.

- - - - -
a42d206a by Yuriy Syrovetskiy at 2019-04-08T18:54:02Z
Fix whitespace style

- - - - -
4dda2270 by Matthew Pickering at 2019-04-08T19:00:08Z
Use ./hadrian/ghci.sh in .ghcid

- - - - -
d236d9d0 by Sebastian Graf at 2019-04-08T19:06:15Z
Make `singleConstructor` cope with pattern synonyms

Previously, `singleConstructor` didn't handle singleton `COMPLETE` sets
of a single pattern synonym, resulting in incomplete pattern warnings
in #15753.

This is fixed by making `singleConstructor` (now named
`singleMatchConstructor`) query `allCompleteMatches`, necessarily making
it effectful. As a result, most of this patch is concerned with
threading the side-effect through to `singleMatchConstructor`.

Unfortunately, this is not enough to completely fix the original
reproduction from #15753 and #15884, which are related to function
applications in pattern guards being translated too conservatively.

- - - - -
1085090e by Ömer Sinan Ağacan at 2019-04-08T19:12:22Z
Skip test ArithInt16 and ArithWord16 in GHCi way

These tests use unboxed tuples, which GHCi doesn't support

- - - - -
7287bb9e by Ömer Sinan Ağacan at 2019-04-08T19:18:33Z
testsuite: Show exit code of GHCi tests on failure

- - - - -
f5604d37 by John Ericson at 2019-04-08T19:24:43Z
settings.in: Reformat

We're might be about to switch to generating it in Hadrian/Make. This
reformat makes it easier to programmingmatically generate and end up
with the exact same thing, which is good for diffing to ensure no
regressions.

I had this as part of !712, but given the difficulty of satisfying CI, I
figured I should break things up even further.

- - - - -
cf9e1837 by Ryan Scott at 2019-04-08T19:30:51Z
Bump hpc submodule

Currently, the `hpc` submodule is pinned against the `wip/final-mfp`
branch, not against `master`. This pins it back against `master`.

- - - - -
36d38047 by Ben Gamari at 2019-04-09T14:23:47Z
users-guide: Document how to disable package environments

As noted in #16309 this somehow went undocumented.

- - - - -
af4cea7f by Artem Pyanykh at 2019-04-09T14:30:13Z
codegen: fix memset unroll for small bytearrays, add 64-bit sets

Fixes #16052

When the offset in `setByteArray#` is statically known, we can provide
better alignment guarantees then just 1 byte.

Also, memset can now do 64-bit wide sets.

The current memset intrinsic is not optimal however and can be
improved for the case when we know that we deal with

(baseAddress at known alignment) + offset

For instance, on 64-bit

`setByteArray# s 1# 23# 0#`

given that bytearray is 8 bytes aligned could be unrolled into
`movb, movw, movl, movq, movq`; but currently it is
`movb x23` since alignment of 1 is all we can embed into MO_Memset op.

- - - - -
bd2de4f0 by Artem Pyanykh at 2019-04-09T14:30:13Z
codegen: use newtype for Alignment in BasicTypes

- - - - -
14a78707 by Artem Pyanykh at 2019-04-09T14:30:13Z
docs: add a note about changes in memset unrolling to 8.10.1-notes

- - - - -
fe40ddd9 by Sylvain Henry at 2019-04-09T16:50:15Z
Hadrian: fix library install paths in bindist Makefile (#16498)

GHC now works out-of-the-box (i.e. without any wrapper script) by
assuming that @bin@ and @lib@ directories sit next to each other. In
particular, its RUNPATH uses $ORIGIN-based relative path to find the
libraries.

However, to be good citizens we want to support the case where @bin@ and
@lib@ directories (respectively BINDIR and LIBDIR) don't sit next to
each other or are renamed. To do that the install script simply creates
GHC specific @bin@ and @lib@ siblings directories into:

   LIBDIR/ghc-VERSION/{bin,lib}

Then it installs wrapper scripts into BINDIR that call the appropriate
programs into LIBDIR/ghc-VERSION/bin/.

The issue fixed by this patch is that libraries were not installed into
LIBDIR/ghc-VERSION/lib but directly into LIBDIR.

- - - - -
9acdc4c0 by Ben Gamari at 2019-04-09T16:56:38Z
gitlab: Bump cabal-install version used by Windows builds to 2.4

Hopefully fixes Windows Hadrian build.

- - - - -
fc3f421b by Joachim Breitner at 2019-04-10T03:17:37Z
GHC no longer ever defines TABLES_NEXT_TO_CODE on its own

It should be entirely the responsibility of make/Hadrian to ensure that
everything that needs this flag gets it. GHC shouldn't be hardcoded to
assist with bootstrapping since it builds other things besides itself.

Reviewers:

Subscribers: TerrorJack, rwbarton, carter

GHC Trac Issues: #15548 -- progress towards but not fix

Differential Revision: https://phabricator.haskell.org/D5082 -- extract
from that

- - - - -
be0dde8e by Ryan Scott at 2019-04-10T03:23:50Z
Use ghc-prim < 0.7, not <= 0.6.1, as upper version bounds

Using `ghc-prim <= 0.6.1` is somewhat dodgy from a PVP point of view,
as it makes it awkward to support new minor releases of `ghc-prim`.
Let's instead use `< 0.7`, which is the idiomatic way of expressing
PVP-compliant upper version bounds.

- - - - -
42504f4a by Carter Schonwald at 2019-04-11T00:28:41Z
removing x87 register support from native code gen

* simplifies registers to have GPR, Float and Double, by removing the SSE2 and X87 Constructors
* makes -msse2 assumed/default for x86 platforms, fixing a long standing nondeterminism in rounding
behavior in 32bit haskell code
* removes the 80bit floating point representation from the supported float sizes
* theres still 1 tiny bit of x87 support needed,
for handling float and double return values in FFI calls  wrt the C ABI on x86_32,
but this one piece does not leak into the rest of NCG.
* Lots of code thats not been touched in a long time got deleted as a
consequence of all of this

all in all, this change paves the way towards a lot of future further
improvements in how GHC handles floating point computations, along with
making the native code gen more accessible to a larger pool of contributors.

- - - - -
c401f8a4 by Sylvain Henry at 2019-04-11T23:51:24Z
Hadrian: fix binary-dir with --docs=none

Hadrian's "binary-dist" target must check that the "docs" directory
exists (it may not since we can disable docs generation).

- - - - -
091195a4 by Ömer Sinan Ağacan at 2019-04-11T23:57:38Z
Remove unused remilestoning script

- - - - -
fa0ccbb8 by Ömer Sinan Ağacan at 2019-04-11T23:57:38Z
Update a panic message

Point users to the right URL

- - - - -
beaa07d2 by Sylvain Henry at 2019-04-12T17:17:21Z
Hadrian: fix ghci wrapper script generation (#16508)

- - - - -
e05df3e1 by Ben Gamari at 2019-04-12T17:23:30Z
gitlab-ci: Ensure that version number has three components

- - - - -
885d2e04 by klebinger.andreas at gmx.at at 2019-04-12T18:40:04Z
Add -ddump-stg-final to dump stg as it is used for codegen.

Intermediate STG does not contain free variables which can be useful
sometimes. So adding a flag to dump that info.

- - - - -
3c759ced by Alp Mestanogullari at 2019-04-12T18:46:54Z
Hadrian: add a --test-accept/-a flag, to mimic 'make accept'

When -a or --test-accept is passed, and if one runs the 'test' target, then
any test failing because of mismatching output and which is not expected to
fail will have its expected output adjusted by the test driver, effectively
considering the new output correct from now on.

When this flag is passed, hadrian's 'test' target becomes sensitive to the
PLATFORM and OS environment variable, just like the Make build system:
- when the PLATFORM env var is set to "YES", when accepting a result, accept it
  for the current platform;
- when the OS env var is set to "YES", when accepting a result, accept it
  for all wordsizes of the current operating system.

This can all be combined with `--only="..."` and `TEST="..." to only accept
the new output of a subset of tests.

- - - - -
f4b5a6c0 by Alp Mestanogullari at 2019-04-12T18:46:54Z
Hadrian: document -a/--test-accept

- - - - -
30a0988d by Ben Gamari at 2019-04-12T19:41:07Z
gitlab: Disable windows-hadrian job

Not only is it reliably failing due to #16574 but all of the quickly
failing builds also causes the Windows runners to run out of disk space.

- - - - -
8870a51b by Ben Gamari at 2019-04-12T19:41:07Z
gitlab: Don't run lint-submods job on Marge branches

This broke Marge by creating a second pipeline (consisting of only the
`lint-submods` job). Marge then looked at this pipeline and concluded
that CI for her merge branch passed. However, this is ignores the fact
that the majority of the CI jobs are triggered on `merge_request` and
are therefore in another pipeline.

- - - - -
7876d088 by Ben Gamari at 2019-04-13T13:51:59Z
linters: Fix check-version-number

This should have used `grep -E`, not `grep -e`
- - - - -
2e7b2e55 by Ara Adkins at 2019-04-13T14:00:02Z
[skip ci] Update CI badge in readme

This trivial MR updates the CI badge in the readme to point to the
new CI on gitlab, rather than the very out-of-date badge from
Travis.

- - - - -
40848a43 by Ben Gamari at 2019-04-13T14:02:36Z
base: Better document implementation implications of Data.Timeout

As noted in #16546 timeout uses asynchronous exceptions internally, an
implementation detail which can leak out in surprising ways.  Note this
fact.

Also expose the `Timeout` tycon.

[skip ci]

- - - - -
5f183081 by David Eichmann at 2019-04-14T05:08:15Z
Hadrian: add rts shared library symlinks for backwards compatability

Fixes test T3807 when building with Hadrian.

Trac #16370

- - - - -
9b142c53 by Sylvain Henry at 2019-04-14T05:14:23Z
Hadrian: add binary-dist-dir target

This patch adds an Hadrian target "binary-dist-dir". Compared to
"binary-dist", it only builds a binary distribution directory without
creating the Tar archive. It makes the use/test of the bindist
installation script easier.

- - - - -
6febc444 by Krzysztof Gogolewski at 2019-04-14T05:20:29Z
Fix assertion failures reported in #16533

- - - - -
edcef7b3 by Artem Pyanykh at 2019-04-14T05:26:35Z
codegen: unroll memcpy calls for small bytearrays

- - - - -
6094d43f by Artem Pyanykh at 2019-04-14T05:26:35Z
docs: mention memcpy optimization for ByteArrays in 8.10.1-notes

- - - - -
d2271fe4 by Simon Jakobi at 2019-04-14T12:43:17Z
Ord docs: Add explanation on 'min' and 'max' operator interactions

[ci skip]

- - - - -
e7cad16c by Krzysztof Gogolewski at 2019-04-14T12:49:23Z
Add a safeguard to Core Lint

Lint returns a pair (Maybe a, WarnsAndErrs). The Maybe monad
allows to handle an unrecoverable failure.
In case of such a failure, the error should be added to the second
component of the pair. If this is not done, Lint will silently
accept bad programs. This situation actually happened during
development of linear types. This adds a safeguard.

- - - - -
c54a093f by Ben Gamari at 2019-04-14T12:55:29Z
CODEOWNERS: Add simonmar as owner of rts/linker

I suspect this is why @simonmar wasn't notified of !706.

[skip ci]

- - - - -
1825f50d by Alp Mestanogullari at 2019-04-14T13:01:38Z
Hadrian: don't accept p_dyn for executables, to fix --flavour=prof

- - - - -
b024e289 by Giles Anderson at 2019-04-15T10:20:29Z
Document how -O3 is handled by GHC

    -O2 is the highest value of optimization.
    -O3 will be reverted to -O2.

- - - - -
4b1ef06d by Giles Anderson at 2019-04-15T10:20:29Z
Apply suggestion to docs/users_guide/using-optimisation.rst
- - - - -
71cf94db by Fraser Tweedale at 2019-04-15T10:26:37Z
GHCi: fix load order of .ghci files

Directives in .ghci files in the current directory ("local .ghci")
can be overridden by global files.  Change the order in which the
configs are loaded: global and $HOME/.ghci first, then local.

Also introduce a new field to GHCiState to control whether local
.ghci gets sourced or ignored.  This commit does not add a way to
set this value (a subsequent commit will add this), but the .ghci
sourcing routine respects its value.

Fixes: https://gitlab.haskell.org/ghc/ghc/issues/14689
Related: https://gitlab.haskell.org/ghc/ghc/issues/6017
Related: https://gitlab.haskell.org/ghc/ghc/issues/14250

- - - - -
5c06b60d by Fraser Tweedale at 2019-04-15T10:26:38Z
users-guide: update startup script order

Update users guide to match the new startup script order.  Also
clarify that -ignore-dot-ghci does not apply to scripts specified
via the -ghci-script option.

Part of: https://gitlab.haskell.org/ghc/ghc/issues/14689

- - - - -
aa490b35 by Fraser Tweedale at 2019-04-15T10:26:38Z
GHCi: add 'local-config' setting

Add the ':set local-config { source | ignore }' setting to control
whether .ghci file in current directory will be sourced or not.  The
directive can be set in global config or $HOME/.ghci, which are
processed before local .ghci files.

The default is "source", preserving current behaviour.

Related: https://gitlab.haskell.org/ghc/ghc/issues/6017
Related: https://gitlab.haskell.org/ghc/ghc/issues/14250

- - - - -
ed94d345 by Fraser Tweedale at 2019-04-15T10:26:38Z
users-guide: document :set local-config

Document the ':set local-config' command and add a warning about
sourcing untrusted local .ghci scripts.

Related: https://gitlab.haskell.org/ghc/ghc/issues/6017
Related: https://gitlab.haskell.org/ghc/ghc/issues/14250

- - - - -
be05bd81 by Gabor Greif at 2019-04-15T21:19:03Z
asm-emit-time IND_STATIC elimination

When a new closure identifier is being established to a
local or exported closure already emitted into the same
module, refrain from adding an IND_STATIC closure, and
instead emit an assembly-language alias.

Inter-module IND_STATIC objects still remain, and need to be
addressed by other measures.

Binary-size savings on nofib are around 0.1%.

- - - - -
57eb5bc6 by erthalion at 2019-04-16T19:40:36Z
Show dynamic object files (#16062)

Closes #16062. When -dynamic-too is specified, reflect that in the
progress message, like:

$ ghc Main.hs -dynamic-too
[1 of 1] Compiling Lib              ( Main.hs, Main.o, Main.dyn_o )

instead of:

$ ghc Main.hs -dynamic-too
[1 of 1] Compiling Lib              ( Main.hs, Main.o )

- - - - -
894ec447 by Andrey Mokhov at 2019-04-16T19:46:44Z
Hadrian: Generate GHC wrapper scripts

This is a temporary workaround for #16534. We generate wrapper scripts
<build-root>/ghc-stage1 and <build-root>/ghc-stage2 that can be used to
run Stage1 and Stage2 GHCs with the right arguments.

See https://gitlab.haskell.org/ghc/ghc/issues/16534.

- - - - -
e142ec99 by Sven Tennie at 2019-04-18T03:19:00Z
Typeset Big-O complexities with Tex-style notation (#16090)

E.g. use `\(\mathcal{O}(n^2)\)` instead of `/O(n^2)/`.

- - - - -
f0f495f0 by klebinger.andreas at gmx.at at 2019-04-18T03:25:10Z
Add an Outputable instance for SDoc with ppr = id.

When printf debugging this can be helpful.

- - - - -
e28706ea by Sylvain Henry at 2019-04-18T12:12:07Z
Gitlab: allow execution of CI pipeline from the web interface
[skip ci]

- - - - -
4c8a67a4 by Alp Mestanogullari at 2019-04-18T12:18:18Z
Hadrian: fix ghcDebugged and document it

- - - - -
5988f17a by Alp Mestanogullari at 2019-04-19T02:46:12Z
Hadrian: fix the value we pass to the test driver for config.compiler_debugged

We used to pass YES/NO, while that particular field is set to True/False. This
happens to fix an unexpected pass, T9208.

- - - - -
57cf1133 by Alec Theriault at 2019-04-19T02:52:25Z
TH: make `Lift` and `TExp` levity-polymorphic

Besides the obvious benefits of being able to manipulate `TExp`'s of
unboxed types, this also simplified `-XDeriveLift` all while making
it more capable.

  * `ghc-prim` is explicitly depended upon by `template-haskell`

  * The following TH things are parametrized over `RuntimeRep`:

      - `TExp(..)`
      - `unTypeQ`
      - `unsafeTExpCoerce`
      - `Lift(..)`

  * The following instances have been added to `Lift`:

      - `Int#`, `Word#`, `Float#`, `Double#`, `Char#`, `Addr#`
      - unboxed tuples of lifted types up to arity 7
      - unboxed sums of lifted types up to arity 7

    Ideally we would have levity-polymorphic _instances_ of unboxed
    tuples and sums.

  * The code generated by `-XDeriveLift` uses expression quotes
    instead of generating large amounts of TH code and having
    special hard-coded cases for some unboxed types.

- - - - -
fdfd9731 by Alec Theriault at 2019-04-19T02:52:25Z
Add test case for #16384

Now that `TExp` accepts unlifted types, #16384 is fixed. Since the real
issue there was GHC letting through an ill-kinded type which
`-dcore-lint` rightly rejected, a reasonable regression test is that
the program from #16384 can now be accepted without `-dcore-lint`
complaining.

- - - - -
eb2a4df8 by Michal Terepeta at 2019-04-20T03:32:08Z
StgCmmPrim: remove an unnecessary instruction in doNewArrayOp

Previously we would generate a local variable pointing after the array
header and use it to initialize the array elements. But we already use
stores with offset, so it's easy to just add the header to those offsets
during compilation and avoid generating the local variable (which would
become a LEA instruction when using native codegen; LLVM already
optimizes it away).

Signed-off-by: Michal Terepeta <michal.terepeta at gmail.com>

- - - - -
fcef26b6 by klebinger.andreas at gmx.at at 2019-04-20T03:38:16Z
Don't indent single alternative case expressions for STG.

Makes the width of STG dumps slightly saner.
Especially for things like unboxing.

Fixes #16580

- - - - -
e7280c93 by Vladislav Zavialov at 2019-04-20T03:44:24Z
Tagless final encoding of ExpCmdI in the parser

Before this change, we used a roundabout encoding:

1. a GADT (ExpCmdG)
2. a class to pass it around (ExpCmdI)
3. helpers to match on it (ecHsApp, ecHsIf, ecHsCase, ...)

It is more straightforward to turn these helpers into class methods,
removing the need for a GADT.

- - - - -
99dd5d6b by Alec Theriault at 2019-04-20T03:50:29Z
Haddock: support strict GADT args with docs

Rather than massaging the output of the parser to re-arrange docs and
bangs, it is simpler to patch the two places in which the strictness
info is needed (to accept that the `HsBangTy` may be inside an
`HsDocTy`).

Fixes #16585.

- - - - -
10776562 by Andrey Mokhov at 2019-04-20T03:56:38Z
Hadrian: Drop old/unused CI scripts

- - - - -
37b1a6da by Ben Gamari at 2019-04-20T15:55:20Z
gitlab-ci: Improve error message on failure of doc-tarball job

Previously the failure was quite nondescript.

- - - - -
e3fe2601 by Ben Gamari at 2019-04-20T15:55:35Z
gitlab-ci: Allow doc-tarball job to fail

Due to allowed failure of Windows job.

- - - - -
bd3872df by Ben Gamari at 2019-04-20T15:55:38Z
gitlab-ci: Only run release notes lint on release tags

- - - - -
2145b738 by Ben Gamari at 2019-04-20T15:55:38Z
gitlab-ci: Add centos7 release job

- - - - -
983c53c3 by Ben Gamari at 2019-04-20T15:55:38Z
gitlab-ci: Do not build profiled libraries on 32-bit Windows

Due to #15934.

- - - - -
5cf771f3 by Ben Gamari at 2019-04-21T13:07:13Z
users-guide: Add pretty to package list

- - - - -
6ac5da78 by Ben Gamari at 2019-04-21T13:07:13Z
users-guide: Add libraries section to 8.10.1 release notes

- - - - -
3e963de3 by Andrew Martin at 2019-04-21T13:13:20Z
improve docs for casArray and casSmallArray

- - - - -
98bffb07 by Andrew Martin at 2019-04-21T13:13:20Z
[skip ci] say "machine words" instead of "Int units" in the primops docs

- - - - -
3aefc14a by Andrew Martin at 2019-04-21T13:13:20Z
[skip ci] correct formatting of casArray# in docs for casSmallArray#

- - - - -
0e96d120 by Andrew Martin at 2019-04-21T13:13:20Z
[skip ci] correct the docs for casArray a little more. clarify that the returned element may be two different things

- - - - -
687152f2 by Artem Pyanykh at 2019-04-21T13:19:29Z
testsuite: move tests related to linker under tests/rts/linker

- - - - -
36e51406 by Artem Pyanykh at 2019-04-21T13:19:29Z
testsuite: fix ifdef lint errors under tests/rts/linker

- - - - -
1a7a329b by Matthew Pickering at 2019-04-22T18:37:30Z
Correct off by one error in ghci +c

Fixes #16569

- - - - -
51655fd8 by Alp Mestanogullari at 2019-04-22T18:44:11Z
Hadrian: use the testsuite driver's config.haddock arg more correctly

4 haddock tests assume that .haddock files have been produced, by using the
'req_haddock' modifier. The testsuite driver assumes that this condition is
satisfied if 'config.haddock' is non-empty, but before this patch Hadrian was
always passing the path to where the haddock executable should be, regardless
of whether it is actually there or not.

Instead, we now pass an empty config.haddock when we can't find all of
<build root>/docs/html/libraries/<pkg>/<pkg>.haddock>, where <pkg> ranges over
array, base, ghc-prim, process and template-haskell, and pass the path
to haddock when all those file exists. This has the (desired) effect of skipping
the 4 tests (marked as 'missing library') when the docs haven't been built,
and running the haddock tests when they have.

- - - - -
1959bad3 by Vladislav Zavialov at 2019-04-22T18:50:18Z
Stop misusing EWildPat in pattern match coverage checking

EWildPat is a constructor of HsExpr used in the parser to represent
wildcards in ambiguous positions:

* in expression context, EWildPat is turned into hsHoleExpr (see rnExpr)
* in pattern context, EWildPat is turned into WildPat (see checkPattern)

Since EWildPat exists solely for the needs of the parser, we could
remove it by improving the parser.

However, EWildPat has also been used for a different purpose since
8a50610: to represent patterns that the coverage checker cannot handle.
Not only this is a misuse of EWildPat, it also stymies the removal of
EWildPat.

- - - - -
6a491726 by Fraser Tweedale at 2019-04-23T13:27:30Z
osReserveHeapMemory: handle signed rlim_t

rlim_t is a signed type on FreeBSD, and the build fails with a
sign-compare error.  Add explicit (unsigned) cast to handle this
case.

- - - - -
ab9b3ace by Alexandre Baldé at 2019-04-23T13:33:37Z
Fix error message for './configure' regarding '--with-ghc' [skip ci]

- - - - -
465f8f48 by Ben Gamari at 2019-04-24T16:19:24Z
gitlab-ci: source-tarball job should have no dependencies

- - - - -
0fc69416 by Vladislav Zavialov at 2019-04-25T18:28:56Z
Introduce MonadP, make PV a newtype

Previously we defined   type PV = P,
this had the downside that if we wanted to change PV,
we would have to modify P as well.

Now PV is free to evolve independently from P.

The common operations addError, addFatalError, getBit, addAnnsAt,
were abstracted into a class called MonadP.

- - - - -
f85efdec by Vladislav Zavialov at 2019-04-25T18:28:56Z
checkPattern error hint is PV context

There is a hint added to error messages reported in checkPattern.
Instead of passing it manually, we put it in a ReaderT environment inside PV.

- - - - -
4e228267 by Ömer Sinan Ağacan at 2019-04-25T18:35:09Z
Minor RTS refactoring:

- Remove redundant casting in evacuate_static_object
- Remove redundant parens in STATIC_LINK
- Fix a typo in GC.c

- - - - -
faa94d47 by Ben Gamari at 2019-04-25T21:16:21Z
update-autoconf: Initial commit

- - - - -
4811cd39 by Ben Gamari at 2019-04-25T21:16:21Z
Update autoconf scripts

Scripts taken from autoconf a8d79c3130da83c7cacd6fee31b9acc53799c406

- - - - -
0040af59 by Ben Gamari at 2019-04-25T21:16:21Z
gitlab-ci: Reintroduce DWARF-enabled bindists

It seems that this was inadvertently dropped in
1285d6b95fbae7858abbc4722bc2301d7fe40425.

- - - - -
2c115085 by Wojciech Baranowski at 2019-04-30T01:02:38Z
rename: hadle type signatures with typos

When encountering type signatures for unknown names, suggest similar
alternatives.

This fixes issue #16504

- - - - -
fb9408dd by Wojciech Baranowski at 2019-04-30T01:02:38Z
Print suggestions in a single message

- - - - -
e8bf8834 by Wojciech Baranowski at 2019-04-30T01:02:38Z
osa1's patch: consistent suggestion message

- - - - -
1deb2bb0 by Wojciech Baranowski at 2019-04-30T01:02:38Z
Comment on 'candidates' function

- - - - -
8ee47432 by Wojciech Baranowski at 2019-04-30T01:02:38Z
Suggest only local candidates from global env

- - - - -
e23f78ba by Wojciech Baranowski at 2019-04-30T01:02:38Z
Use pp_item

- - - - -
1abb76ab by Ben Gamari at 2019-04-30T01:08:45Z
ghci: Ensure that system libffi include path is searched

Previously hsc2hs failed when building against a system FFI.

- - - - -
014ed644 by Sebastian Graf at 2019-05-01T00:23:21Z
Compute demand signatures assuming idArity

This does four things:

1. Look at `idArity` instead of manifest lambdas to decide whether to use LetUp
2. Compute the strictness signature in LetDown assuming at least `idArity`
   incoming arguments
3. Remove the special case for trivial RHSs, which is subsumed by 2
4. Don't perform the W/W split when doing so would eta expand a binding.
   Otherwise we would eta expand PAPs, causing unnecessary churn in the
   Simplifier.

NoFib Results

--------------------------------------------------------------------------------
        Program         Allocs    Instrs
--------------------------------------------------------------------------------
 fannkuch-redux          +0.3%      0.0%
             gg          -0.0%     -0.1%
       maillist          +0.2%     +0.2%
        minimax           0.0%     +0.8%
         pretty           0.0%     -0.1%
        reptile          -0.0%     -1.2%
--------------------------------------------------------------------------------
            Min          -0.0%     -1.2%
            Max          +0.3%     +0.8%
 Geometric Mean          +0.0%     -0.0%

- - - - -
d37d91e9 by John Ericson at 2019-05-01T00:29:31Z
Generate settings by make/hadrian instead of configure

This allows it to eventually become stage-specific

- - - - -
53d1cd96 by John Ericson at 2019-05-01T00:29:31Z
Remove settings.in

It is no longer needed

- - - - -
2988ef5e by John Ericson at 2019-05-01T00:29:31Z
Move cGHC_UNLIT_PGM to be "unlit command" in settings

The bulk of the work was done in #712, making settings be make/Hadrian
controlled. This commit then just moves the unlit command rules in
make/Hadrian from the `Config.hs` generator to the `settings` generator
in each build system.

I think this is a good change because the crucial benefit is *settings*
don't affect the build: ghc gets one baby step closer to being a regular
cabal executable, and make/Hadrian just maintains settings as part of
bootstrapping.

- - - - -
37a4fd97 by Alp Mestanogullari at 2019-05-01T00:35:35Z
Build Hadrian with -Werror in the 'ghc-in-ghci' CI job

- - - - -
1bef62c3 by Ben Gamari at 2019-05-01T00:41:42Z
ErrUtils: Emit progress messages to eventlog

- - - - -
ebfa3528 by Ben Gamari at 2019-05-01T00:41:42Z
Emit GHC timing events to eventlog

- - - - -
4186b410 by Sven Tennie at 2019-05-03T17:40:36Z
Typeset Big-O complexities with Tex-style notation (#16090)

Use `\min` instead of `min` to typeset it as an operator.

- - - - -
9047f184 by Shayne Fletcher at 2019-05-03T18:54:50Z
Make Extension derive Bounded

- - - - -
0dde64f2 by Ben Gamari at 2019-05-03T18:54:50Z
testsuite: Mark concprog001 as fragile

Due to #16604.
- - - - -
8f929388 by Alp Mestanogullari at 2019-05-03T18:54:50Z
Hadrian: generate JUnit testsuite report in Linux CI job

We also keep it as an artifact, like we do for non-Hadrian jobs, and list it
as a junit report, so that the test results are reported in the GitLab UI for
merge requests.

- - - - -
52fc2719 by Vladislav Zavialov at 2019-05-03T18:54:50Z
Pattern/expression ambiguity resolution

This patch removes 'EWildPat', 'EAsPat', 'EViewPat', and 'ELazyPat'
from 'HsExpr' by using the ambiguity resolution system introduced
earlier for the command/expression ambiguity.

Problem: there are places in the grammar where we do not know whether we
are parsing an expression or a pattern, for example:

	do { Con a b <- x } -- 'Con a b' is a pattern
	do { Con a b }      -- 'Con a b' is an expression

Until we encounter binding syntax (<-) we don't know whether to parse
'Con a b' as an expression or a pattern.

The old solution was to parse as HsExpr always, and rejig later:

	checkPattern :: LHsExpr GhcPs -> P (LPat GhcPs)

This meant polluting 'HsExpr' with pattern-related constructors. In
other words, limitations of the parser were affecting the AST, and all
other code (the renamer, the typechecker) had to deal with these extra
constructors.

We fix this abstraction leak by parsing into an overloaded
representation:

	class DisambECP b where ...
	newtype ECP = ECP { runECP_PV :: forall b. DisambECP b => PV (Located b) }

See Note [Ambiguous syntactic categories] for details.

Now the intricacies of parsing have no effect on the hsSyn AST when it
comes to the expression/pattern ambiguity.

- - - - -
9b59e126 by Ningning Xie at 2019-05-03T18:54:50Z
Only skip decls with CUSKs with PolyKinds on (fix #16609)

- - - - -
87bc954a by Ömer Sinan Ağacan at 2019-05-03T18:54:50Z
Fix interface version number printing in --show-iface

Before

    Version: Wanted [8, 0, 9, 0, 2, 0, 1, 9, 0, 4, 2, 5],
             got    [8, 0, 9, 0, 2, 0, 1, 9, 0, 4, 2, 5]

After

    Version: Wanted 809020190425,
             got    809020190425

- - - - -
cc495d57 by Ryan Scott at 2019-05-03T18:54:50Z
Make equality constraints in kinds invisible

Issues #12102 and #15872 revealed something strange about the way GHC
handles equality constraints in kinds: it treats them as _visible_
arguments! This causes a litany of strange effects, from strange
error messages
(https://gitlab.haskell.org/ghc/ghc/issues/12102#note_169035)
to bizarre `Eq#`-related things leaking through to GHCi output, even
without any special flags enabled.

This patch is an attempt to contain some of this strangeness.
In particular:

* In `TcHsType.etaExpandAlgTyCon`, we propagate through the
  `AnonArgFlag`s of any `Anon` binders. Previously, we were always
  hard-coding them to `VisArg`, which meant that invisible binders
  (like those whose kinds were equality constraint) would mistakenly
  get flagged as visible.
* In `ToIface.toIfaceAppArgsX`, we previously assumed that the
  argument to a `FunTy` always corresponding to a `Required`
  argument. We now dispatch on the `FunTy`'s `AnonArgFlag` and map
  `VisArg` to `Required` and `InvisArg` to `Inferred`. As a
  consequence, the iface pretty-printer correctly recognizes that
  equality coercions are inferred arguments, and as a result,
  only displays them in `-fprint-explicit-kinds` is enabled.
* Speaking of iface pretty-printing, `Anon InvisArg` binders were
  previously being pretty-printed like `T (a :: b ~ c)`, as if they
  were required. This seemed inconsistent with other invisible
  arguments (that are printed like `T @{d}`), so I decided to switch
  this to `T @{a :: b ~ c}`.

Along the way, I also cleaned up a minor inaccuracy in the users'
guide section for constraints in kinds that was spotted in
https://gitlab.haskell.org/ghc/ghc/issues/12102#note_136220.

Fixes #12102 and #15872.

- - - - -
f862963b by Ömer Sinan Ağacan at 2019-05-04T00:50:03Z
rts: Properly free the RTSSummaryStats structure

`stat_exit` always allocates a `RTSSummaryStats` but only sometimes
frees it, which casues leaks. With this patch we unconditionally free
the structure, fixing the leak.

Fixes #16584

- - - - -
0af93d16 by Ömer Sinan Ağacan at 2019-05-04T00:56:18Z
StgCmmMonad: remove emitProc_, don't export emitProc

- - - - -
0a3e4db3 by Ömer Sinan Ağacan at 2019-05-04T00:56:18Z
PrimOps.cmm: remove unused stuff

- - - - -
63150b9e by iustin at 2019-05-04T21:54:23Z
Fix typo in 8.8.1 notes related to traceBinaryEvent

- fixes double mention of `traceBinaryEvent#` (the second one should be `traceEvent#`, I think)
- fixes note about `traceEvent#` taking a `String` - the docs say it takes a zero-terminated ByteString.
- - - - -
dc8a5868 by gallais at 2019-05-04T22:00:30Z
[ typo ] 'castFloatToWord32' -> 'castFloatToWord64'

Probably due to a copy/paste gone wrong.
- - - - -
615b4be6 by Chaitanya Koparkar at 2019-05-05T14:39:24Z
Fix #16593 by having only one definition of -fprint-explicit-runtime-reps

[skip ci]

- - - - -
ead3f835 by Vladislav Zavialov at 2019-05-05T14:39:24Z
'warnSpaceAfterBang' only in patterns (#16619)

- - - - -
27941064 by John Ericson at 2019-05-06T18:59:29Z
Remove cGhcEnableTablesNextToCode

Get "Tables next to code" from the settings file instead.

- - - - -
821fa9e8 by Takenobu Tani at 2019-05-06T19:05:36Z
Remove `$(TOP)/ANNOUNCE` file

Remove `$(TOP)/ANNOUNCE` because maintaining this file is expensive
for each release.

Currently, release announcements of ghc are made on ghc blogs and wikis.

[skip ci]

- - - - -
e172a6d1 by Alp Mestanogullari at 2019-05-06T19:11:43Z
Enable external interpreter when TH is requested but no internal interpreter is available

- - - - -
ba0aed2e by Alp Mestanogullari at 2019-05-06T21:32:56Z
Hadrian: override $(ghc-config-mk), to prevent redundant config generation

This required making the 'ghc-config-mk' variable overridable in
testsuite/mk/boilerplate.mk, and then making use of this in hadrian
to point to '<build root>/test/ghcconfig' instead, which is where we
always put the test config.

Previously, we would build ghc-config and run it against the
GHC to be tested, a second time, while we're running the tests, because some
include testsuite/mk/boilerplate.mk. This was causing unexpected output
failures.

- - - - -
96197961 by Ryan Scott at 2019-05-07T10:35:58Z
Add /includes/dist to .gitignore

As of commit d37d91e9a444a7822eef1558198d21511558515e, the GHC build
now autogenerates a `includes/dist/build/settings` file. To avoid
dirtying the current `git` status, this adds `includes/dist` to
`.gitignore`.

[ci skip]

- - - - -
78a5c4ce by Ryan Scott at 2019-05-07T21:03:04Z
Check for duplicate variables in associated default equations

A follow-up to !696's, which attempted to clean up the error messages
for ill formed associated type family default equations. The previous
attempt, !696, forgot to account for the possibility of duplicate
kind variable arguments, as in the following example:

```hs
class C (a :: j) where
  type T (a :: j) (b :: k)
  type T (a :: k) (b :: k) = k
```

This patch addresses this shortcoming by adding an additional check
for this. Fixes #13971 (hopefully for good this time).

- - - - -
f58ea556 by Kevin Buhr at 2019-05-07T21:09:13Z
Add regression test for old typechecking issue #505

- - - - -
786e665b by Ryan Scott at 2019-05-08T05:55:45Z
Fix #16603 by documenting some important changes in changelogs

This addresses some glaring omissions from
`libraries/base/changelog.md` and
`docs/users_guide/8.8.1-notes.rst`, fixing #16603 in the process.

- - - - -
0eeb4cfa by Ryan Scott at 2019-05-08T06:01:54Z
Fix #16632 by using the correct SrcSpan in checkTyClHdr

`checkTyClHdr`'s case for `HsTyVar` was grabbing the wrong `SrcSpan`,
which lead to error messages pointing to the wrong location. Easily
fixed.

- - - - -
ed5f858b by Shayne Fletcher at 2019-05-08T19:29:01Z
Implement ImportQualifiedPost

- - - - -
d9bdff60 by Kevin Buhr at 2019-05-08T19:35:13Z
stg_floatToWord32zh: zero-extend the Word32 (#16617)

The primop stgFloatToWord32 was sign-extending the 32-bit word, resulting
in weird negative Word32s.  Zero-extend them instead.

Closes #16617.

- - - - -
9a3acac9 by Ömer Sinan Ağacan at 2019-05-08T19:41:17Z
Print PAP object address in stg_PAP_info entry code

Continuation to ce23451c

- - - - -
4c86187c by Richard Eisenberg at 2019-05-08T19:47:33Z
Regression test for #16627.

test: typecheck/should_fail/T16627

- - - - -
93f34bbd by John Ericson at 2019-05-08T19:53:40Z
Purge TargetPlatform_NAME and cTargetPlatformString

- - - - -
9d9af0ee by Kevin Buhr at 2019-05-08T19:59:46Z
Add regression test for old issue #507

- - - - -
396e01b4 by Vladislav Zavialov at 2019-05-08T20:05:52Z
Add a regression test for #14548

- - - - -
5eb94454 by Oleg Grenrus at 2019-05-10T20:26:28Z
Add Generic tuple instances up to 15-tuple

Why 15? Because we have Eq instances up to 15.

Metric Increase:
    T9630
    haddock.base

- - - - -
c7913f71 by Roland Senn at 2019-05-10T20:32:38Z
Fix bugs and documentation for #13456

- - - - -
bfcd986d by David Eichmann at 2019-05-10T20:38:57Z
Hadrian: programs need registered ghc-pkg libraries

In Hadrian, building programs (e.g. `ghc` or `haddock`) requires libraries located in the ghc-pkg package database i.e.

    _build/stage1/lib/x86_64-linux-ghc-8.9.0.20190430/libHSdeepseq-1.4.4.0-ghc8.9.0.20190430.so

Add the corresponding `need`s for these library files and the subsequent rules.

- - - - -
10f579ad by Ben Gamari at 2019-05-10T20:45:05Z
gitlab-ci: Disable cleanup job on Windows

As discussed in the Note, we now have a cron job to handle this and the
cleanup job itself is quite fragile.

[skip ci]

- - - - -
6f07f828 by Kevin Buhr at 2019-05-10T20:51:11Z
Add regression test case for old issue #493

- - - - -
4e25bf46 by Giles Anderson at 2019-05-13T23:01:52Z
Change GHC.hs to Packages.hs in Hadrian user-settings.md

... "all packages that are currently built as part of the GHC are
defined in src/Packages.hs"

- - - - -
357be128 by Kevin Buhr at 2019-05-14T20:41:19Z
Add regression test for old parser issue #504

- - - - -
015a21b8 by John Ericson at 2019-05-14T20:41:19Z
hadrian: Make settings stage specific

- - - - -
f9e4ea40 by John Ericson at 2019-05-14T20:41:19Z
Dont refer to `cLeadingUnderscore` in test

Can't use this config entry because it's about to go away

- - - - -
e529c65e by John Ericson at 2019-05-14T20:41:19Z
Remove all target-specific portions of Config.hs

1. If GHC is to be multi-target, these cannot be baked in at compile
   time.

2. Compile-time flags have a higher maintenance than run-time flags.

3. The old way makes build system implementation (various bootstrapping
   details) with the thing being built. E.g. GHC doesn't need to care
   about which integer library *will* be used---this is purely a crutch
   so the build system doesn't need to pass flags later when using that
   library.

4. Experience with cross compilation in Nixpkgs has shown things work
   nicer when compiler's can *optionally* delegate the bootstrapping the
   package manager. The package manager knows the entire end-goal build
   plan, and thus can make top-down decisions on bootstrapping. GHC can
   just worry about GHC, not even core library like base and ghc-prim!

- - - - -
5cf8032e by Oleg Grenrus at 2019-05-14T20:41:19Z
Update terminal title while running test-suite

Useful progress indicator even when `make test VERBOSE=1`,
and when you do something else, but have terminal title visible.

- - - - -
c72c369b by Vladislav Zavialov at 2019-05-14T20:41:19Z
Add a minimized regression test for #12928

- - - - -
a5fdd185 by Vladislav Zavialov at 2019-05-14T20:41:19Z
Guard CUSKs behind a language pragma

GHC Proposal #36 describes a transition plan away from CUSKs and to
top-level kind signatures:

1. Introduce a new extension, -XCUSKs, on by default, that detects CUSKs
   as they currently exist.
2. We turn off the -XCUSKs extension in a few releases and remove it
   sometime thereafter.

This patch implements phase 1 of this plan, introducing a new language
extension to control whether CUSKs are enabled. When top-level kind
signatures are implemented, we can transition to phase 2.

- - - - -
684dc290 by Vladislav Zavialov at 2019-05-14T20:41:19Z
Restore the --coerce option in 'happy' configuration

happy-1.19.10 has been released with a fix for --coerce in the presence
of higher rank types. This should result in about 10% performance
improvement in the parser.

- - - - -
a416ae26 by Alp Mestanogullari at 2019-05-14T20:41:20Z
Hadrian: 'need' source files for various docs in Rules.Documentation

Previously, changing one of the .rst files from the user guide would not cause
the user guide to be rebuilt. This patch take a first stab at declaring the
documentation source files that our documentation rules depend on, focusing
on the .rst files only for now.

We eventually might want to rebuild docs when we, say, change the haddock style
file, but this level of tracking isn't really necessary for now.

This fixes #16645.

- - - - -
fa656b0f by Matthew Pickering at 2019-05-18T16:45:29Z
WIP: Use system cabal to install user packages

- - - - -
88f75630 by Matthew Pickering at 2019-05-18T22:36:43Z
WIP: New approach downloading packages and using existing logic to build

- - - - -


30 changed files:

- − .arc-linters/arcanist-external-json-linter
- − .arc-linters/check-binaries.py
- − .arc-linters/check-cpp.py
- − .arc-linters/check-makefiles.py
- − .arcconfig
- − .arclint
- .circleci/config.yml
- − .circleci/images/aarch64-linux-deb9/Dockerfile
- − .circleci/images/i386-linux-deb8/Dockerfile
- − .circleci/images/i386-linux-deb9/Dockerfile
- − .circleci/images/linters/Dockerfile
- − .circleci/images/update-image
- − .circleci/images/x86_64-freebsd/Dockerfile
- − .circleci/images/x86_64-freebsd/build-toolchain.sh
- − .circleci/images/x86_64-linux-centos7/Dockerfile
- − .circleci/images/x86_64-linux-deb8/Dockerfile
- − .circleci/images/x86_64-linux-deb9/Dockerfile
- − .circleci/images/x86_64-linux-fedora27/Dockerfile
- .ghcid
- + .gitattributes
- .gitignore
- .gitlab-ci.yml
- + .gitlab/issue_templates/bug.md
- + .gitlab/issue_templates/feature_request.md
- .gitlab/linters/check-makefiles.py
- + .gitlab/linters/check-version-number.sh
- + .gitlab/merge_request_templates/backport-for-8.8.md
- + .gitlab/merge_request_templates/merge-request.md
- + .gitlab/push-test-metrics.sh
- + .gitlab/start-head.hackage.sh


The diff was not included because it is too large.


View it on GitLab: https://gitlab.haskell.org/ghc/ghc/compare/f0b315b95ed18b31f6134f8bad3dc914ac8d59fb...88f75630d56a057273ca98828fdaae99294fcdc9

-- 
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/compare/f0b315b95ed18b31f6134f8bad3dc914ac8d59fb...88f75630d56a057273ca98828fdaae99294fcdc9
You're receiving this email because of your account on gitlab.haskell.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-commits/attachments/20190518/d2c918f6/attachment-0001.html>


More information about the ghc-commits mailing list