Add Data.List.uncons

Summary:
As discussed in
http://www.haskell.org/pipermail/libraries/2014-July/023314.html and
submitted at #9550.

Test Plan: Submit to phab, see what happens.

Reviewers: austin

Subscribers: simonmar, ezyang, carter

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

GHC Trac Issues: #9550
Revert "Remove max_bytes_used test from haddock test cases"

This reverts commit 8c427ebe9c34b9bcecd41fb0584d24989c00ffe6.

Sorry for the noise, but I need to practice my HIW talk, which will
involve some live development...
Do not test max_bytes_used et. al for haddock tests

Summary: as these are unreliable, and it is hard to re-run haddock with other RTS flags.

Test Plan: run validate

Reviewers: austin

Subscribers: simonmar, ezyang, carter

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

GHC Trac Issues: #9551
Update performance numbers (mostly improved)
Another test for type function saturation

Came up on GHC users list
Small improvement to unsaturated-type-function error message
Add missing changelog/since entry for `uncons`

This is a follow-up commit to
e428b5b8cc1448dcff7d7cdcbeb738eb0bea102f (refs D195 & #9550)
pprC: declare extern cmm primitives as functions, not data

Summary:
  The commit fixes incorrect code generation of
  integer-gmp package on ia64 due to C prototypes mismatch.
  Before the patch prototypes for "foreign import prim" were:
      StgWord poizh[];
  After the patch they became:
      StgFunPtr poizh();

Long story:

Consider the following simple example:

    {-# LANGUAGE MagicHash, GHCForeignImportPrim, UnliftedFFITypes #-}
    module M where
    import GHC.Prim -- Int#
    foreign import prim "poizh" poi# :: Int# -> Int#

Before the patch unregisterised build generated the
following 'poizh' reference:
    EI_(poizh); /* StgWord poizh[]; */
    FN_(M_poizh_entry) {
    // ...
    JMP_((W_)&poizh);
    }

After the patch it looks this way:
    EF_(poizh); /* StgFunPtr poizh(); */
    FN_(M_poizh_entry) {
    // ...
    JMP_((W_)&poizh);
    }

On ia64 it leads to different relocation types being generated:
  incorrect one:
    addl r14 = @ltoffx(poizh#)
    ld8.mov r14 = [r14], poizh# ; r14 = address-of 'poizh#'
  correct one:
    addl r14 = @ltoff(@fptr(poizh#)), gp ; r14 = address-of-thunk 'poizh#'
    ld8 r14 = [r14]

'@fptr(poizh#)' basically instructs assembler to creates
another obect consisting of real address to 'poizh' instructions
and module address. That '@fptr' object is used as a function "address"
This object is different for every module referencing 'poizh' symbol.

All indirect function calls expect '@fptr' object. That way
call site reads real destination address and set destination
module address in 'gp' register from '@fptr'.

Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
Revert "Do not test max_bytes_used et. al for haddock tests"

This reverts commit 498d7dd2dc731a92eda2210e4ab0a04366511627. Again
sorry for the noise. This is the last reverstion. I will fix this for
good at around 12:13 CEST tomorrow :-)
Do not use max_bytes_used for haddock test

Summary: as they are unreliable and hard to re-run.

Test Plan: Run the testsuite

Reviewers: austin

Subscribers: simonmar, ezyang, carter

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

GHC Trac Issues: #9556
PostTcType replaced with TypeAnnot

Summary:
This is a first step toward allowing generic traversals of the AST without 'landmines', by removing the `panic`s located throughout `placeHolderType`, `placeHolderKind` & co.

See more on the discussion at https://www.mail-archive.com/ghc-devs@haskell.org/msg05564.html

(This also makes a corresponding update to the `haddock` submodule.)

Test Plan: `sh validate` and new tests pass.

Reviewers: austin, simonpj, goldfire

Reviewed By: austin, simonpj, goldfire

Subscribers: edsko, Fuuzetsu, thomasw, holzensp, goldfire, simonmar, relrod, ezyang, carter

Projects: #ghc

Differential Revision: https://phabricator.haskell.org/D157
Update T4801 perf numbers

no individual cause indentified, but small improvements happened in
1719c42, 9d6fbcc, 949ad67 (or it is noise...)
INLINE unfoldr

Summary:
to allow GHC to maybe remove the Maybe. See the code comment for more
commentary. This fixes #9369.

Test Plan: see what happens on ghcspeed (once it is merged)

Reviewers: austin

Reviewed By: austin

Subscribers: simonmar, ezyang, carter

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

GHC Trac Issues: #9369
Typos
rules: cleanup: use '$way_*suf' var instead of open-coded '($3_way_)s'

The changes look like:
    -$1/$2/build/%.$$($3_way_)s : $1/%.c $$(LAX_DEPS_FOLLOW) $$$$($1_$2_HC_DEP)
    +$1/$2/build/%.$$($3_ssuf)  : $1/%.c $$(LAX_DEPS_FOLLOW) $$$$($1_$2_HC_DEP)

This way typos will manifest themselves in all ways,
not only non-vanilla.

Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
rules: fix buld failure due to o-boot suffix typo

Last-time tweak in commit 049bef7dc8858cff1b69002cde91b9d1cdef8e70
broke build. Update '_o-boot' to '_o-bootsuf' variable name.

Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
Make Applicative a superclass of Monad

Summary:
This includes pretty much all the changes needed to make `Applicative`
a superclass of `Monad` finally. There's mostly reshuffling in the
interests of avoid orphans and boot files, but luckily we can resolve
all of them, pretty much. The only catch was that
Alternative/MonadPlus also had to go into Prelude to avoid this.

As a result, we must update the hsc2hs and haddock submodules.

Signed-off-by: Austin Seipp <austin@well-typed.com>

Test Plan: Build things, they might not explode horribly.

Reviewers: hvr, simonmar

Subscribers: simonmar

Differential Revision: https://phabricator.haskell.org/D13
base: Bump version to 4.8.0.0

Signed-off-by: Austin Seipp <austin@well-typed.com>
Revert "base: Bump version to 4.8.0.0"

This reverts commit 0829f4c829a92d1287b820b12102a64dac91d35a.

This fails to build, because I'm dumb and hasty, obviously.

Signed-off-by: Austin Seipp <austin@well-typed.com>
Bump `base` version to 4.8.0.0 for real

This commit updates several submodules in order to bump
the upper bounds on `base` of most boot packages

Moreover, this updates some of the test-suite cases which have
version numbers hardcoded within.

However, I'm not sure if this commit didn't introduce the following
two test-failures

   ghc-api  T8628 [bad stdout] (normal)
   ghc-api  T8639_api [bad stdout] (normal)

This needs investigation