4 years agoSet VERSION=7.10.1, RELEASE=YES ghc-7.10.1-release
Austin Seipp [Wed, 25 Mar 2015 22:33:07 +0000 (17:33 -0500)] 

Signed-off-by: Austin Seipp <>
4 years agodocs/relnotes: update version numbers
Austin Seipp [Wed, 25 Mar 2015 22:32:15 +0000 (17:32 -0500)] 
docs/relnotes: update version numbers

Signed-off-by: Austin Seipp <>
4 years agoRearrange order of the release note highlights
Douglas Burke [Tue, 24 Mar 2015 15:26:45 +0000 (10:26 -0500)] 
Rearrange order of the release note highlights

I noticed that the highlights do not highlight the breaking changes first,
so I re-ordered them to what - to me, as a general and not power-user of
ghc - seems a more sensible order.

Should I have opened a ticket for this?

Test Plan: This is a doc change.

Reviewers: ezyang, austin

Reviewed By: ezyang, austin

Subscribers: thomie

Differential Revision:

GHC Trac Issues: #10038

4 years agoMake testsuite driver Python 2.6 compatible again
Thomas Miedema [Mon, 23 Mar 2015 12:56:22 +0000 (13:56 +0100)] 
Make testsuite driver Python 2.6 compatible again

Another bug in the #10164 series. Only Python 2.7 and up allow you to
omit the positional argument specifiers in format strings.

Test Plan: this fixes the Solaris builders

Reviewed By: kgardas

Differential Revision:

GHC Trac Issues: #10164

(cherry picked from commit 0f03a843e7e740218f3ce3853f80de99b0ed6236)

4 years agoAvoid redundant-import warning (w/o CPP)
Herbert Valerio Riedel [Sat, 27 Dec 2014 22:43:20 +0000 (23:43 +0100)] 
Avoid redundant-import warning (w/o CPP)

(cherry picked from commit c55fefc0f25ecd754db3f274cba3f972d603f117)

4 years agoSet release date for base- in changelog
Herbert Valerio Riedel [Mon, 23 Mar 2015 07:49:03 +0000 (08:49 +0100)] 
Set release date for base- in changelog

[skip ci]

4 years agoFix integer-gmp source tarball distribution
Herbert Valerio Riedel [Mon, 23 Mar 2015 07:11:32 +0000 (08:11 +0100)] 
Fix integer-gmp source tarball distribution

The `configure` script checks for presence of `install-sh` even if
it's not used, so we simply add it to the distribution to make `configure`

(cherry picked from commit cab5b3acc514dc7beafc3527625c687c8a5116a0)

4 years agoTrim Call Arity
Joachim Breitner [Sat, 21 Mar 2015 14:58:38 +0000 (15:58 +0100)] 
Trim Call Arity

to not accidentially invalidate a strictness signature with a Diverges
result info. This seems to fix #10176.

(cherry picked from commit b4efac59ef5aac74d382d1fd57652982edddbe75)

4 years agoTest case for #10176
Joachim Breitner [Sat, 21 Mar 2015 14:08:16 +0000 (15:08 +0100)] 
Test case for #10176

originally provided by Neil Mitchell. Despite what he observed, I can
observe the bug even with all in one module.

(cherry picked from commit 5119e097b5cc08d1e6e94529d8c6d7c654a28829)

4 years agoUpdate haskeline submodule to release tag
Herbert Valerio Riedel [Sun, 22 Mar 2015 07:22:03 +0000 (08:22 +0100)] 
Update haskeline submodule to release tag

This fixes compilation under windows with pre-AMP GHCs
although it's not clear if bootstrapping GHC was affected.
(see for details)

(cherry picked from commit 899cb3e768bf495b396f59dc2b49b7b10eb4ad8c)

4 years agotestsuite: add test for #10177
Austin Seipp [Sun, 22 Mar 2015 01:12:55 +0000 (20:12 -0500)] 
testsuite: add test for #10177

Signed-off-by: Austin Seipp <>
(cherry picked from commit 854fd12358fef51848c2eb5e7e08d9c8cec43e16)

4 years agoUpdate haddock submodule to 'master' tip
Herbert Valerio Riedel [Thu, 19 Mar 2015 22:33:50 +0000 (23:33 +0100)] 
Update haddock submodule to 'master' tip

4 years agoRemove unused parameter to `EvTypeableTyCon`
Iavor S. Diatchki [Thu, 19 Mar 2015 22:33:50 +0000 (15:33 -0700)] 
Remove unused parameter to `EvTypeableTyCon`

(cherry picked from commit 75ef8b3b56f0b33c6be782b59a55b853565ea5f4)

4 years agoImprove `Typeable` solver.
Iavor S. Diatchki [Thu, 19 Mar 2015 20:40:34 +0000 (13:40 -0700)] 
Improve `Typeable` solver.

(cherry picked from commit 3a0019e3672097761e7ce09c811018f774febfd2)

4 years agoUpdate Cabal submodule to Cabal-v1.22.2.0 rls tag
Herbert Valerio Riedel [Sat, 21 Mar 2015 09:04:02 +0000 (10:04 +0100)] 
Update Cabal submodule to Cabal-v1.22.2.0 rls tag

this submdoule updates pulls in only meta-data changes

(cherry picked from commit d9e0e165804cb97273bc88372c5429619d74636f)

4 years agoUpdate bytestring submodule to release tag
Herbert Valerio Riedel [Fri, 20 Mar 2015 19:37:41 +0000 (20:37 +0100)] 
Update bytestring submodule to release tag

(cherry picked from commit c746f016fa68b2b0b539f3c8e126d0c9a4f3e5e2)

4 years agoUpdate integer-gmp2's changelog for release
Herbert Valerio Riedel [Fri, 20 Mar 2015 17:52:28 +0000 (18:52 +0100)] 
Update integer-gmp2's changelog for release

[skip ci]

4 years agoTry to reconstruct a changelog for TH 2.10
Herbert Valerio Riedel [Fri, 20 Mar 2015 12:33:19 +0000 (13:33 +0100)] 
Try to reconstruct a changelog for TH 2.10

4 years agoBump ghc-prim to
Herbert Valerio Riedel [Fri, 20 Mar 2015 11:23:41 +0000 (12:23 +0100)] 
Bump ghc-prim to

This major version bump was made necessary by
f44333eae7bc7dc7b6003b75874a02445f6b633b which changed the type
signatures of prefetch primops, as well as other changes
such as 051d694fc978ad28ac3043d296cafddd3c2a7050 turning `Any` into
an abstract closed type family.

(cherry picked from commit 9dfdd16a61e79cb03c633d442190a81fe5c0b6b8)

4 years agoUpdate deepseq submodule to tag
Herbert Valerio Riedel [Fri, 20 Mar 2015 09:37:33 +0000 (10:37 +0100)] 
Update deepseq submodule to tag

This deepseq update drops the redundant ghc-prim dependency for GHC>=7.6

(cherry picked from commit c2833d60083dd6f4e13f8f58502e3bf2b0aacf5c)

4 years agoUpdate haskeline submodule to tagged commit
Herbert Valerio Riedel [Fri, 20 Mar 2015 06:39:18 +0000 (07:39 +0100)] 
Update haskeline submodule to tagged commit

4 years agotestsuite: add a regression test for #10011
Austin Seipp [Thu, 19 Mar 2015 22:41:08 +0000 (17:41 -0500)] 
testsuite: add a regression test for #10011

Signed-off-by: Austin Seipp <>
(cherry picked from commit e02ef0e6d4eefa5f065cc1c33795dfa2114cd58e)

4 years agolibraries: update win32 submodule
Austin Seipp [Thu, 19 Mar 2015 21:20:26 +0000 (16:20 -0500)] 
libraries: update win32 submodule

This update fixes #10165.

Signed-off-by: Austin Seipp <>
(cherry picked from commit 2ff68c3589af86811f65991c71f33282e0e50778)

4 years agocompiler: don't warn on -package-name for now
Austin Seipp [Thu, 19 Mar 2015 19:21:02 +0000 (14:21 -0500)] 
compiler: don't warn on -package-name for now

This avoids the annoying conundrum explained in #9956 - for the 7.10
release, we'll keep (silently) supporting this flag so -Werror doesn't
trip anything up.

Really, we could just say 'deal with it' to users probably, but the fix
is painless and does remove a sharp corner.

Signed-off-by: Austin Seipp <>
Reviewers: ezyang

Differential Revision:

GHC Trac Issues: #9956

4 years agoUpdate Cabal submodule to 1.22 branch tip
Herbert Valerio Riedel [Thu, 19 Mar 2015 16:41:48 +0000 (17:41 +0100)] 
Update Cabal submodule to 1.22 branch tip

4 years agoFix build on amd64/solaris.
Erik de Castro Lopo [Fri, 13 Mar 2015 20:38:13 +0000 (20:38 +0000)] 
Fix build on amd64/solaris.

Commit 71fcc4c096ec0 breaks the 64bit build on Solaris 11. Solaris
is a multi-lib OS so both 32bit and 64bit binaries may  be run, but
by default it compiles to 32bit so that -m64 needs to be added in
the appropriate place when compiling for 64 bits.

Patch-from: Karel Gardas <>

Reviewers: kgardas, austin

Subscribers: thomie

Differential Revision:

(cherry picked from commit 83afcd174cdbf4fb770371da764f91ca9ad414a7)

4 years agoUse the gold linker for linux/ARM and android/ARM targets.
Erik de Castro Lopo [Thu, 12 Mar 2015 03:36:50 +0000 (14:36 +1100)] 
Use the gold linker for linux/ARM and android/ARM targets.

Fixes #8976 and #9873 by making use of the Binutils
linker explicit whenever the target is linux/ARM or android/ARM.
This does not affect iOS where Apple provides its own linker.

In order to achieve this, we need to add `-fuse-ld=gold` to
the SettingsCCompilerLinkFlags setting and set
SettingsLdCommand to `` (or `${target}` when
cross-compiling). In addition, simplifying the use of

This patch was tested by ensuring that the following worked
as expected:

  * Native builds on linux/x86_64 (nothing changed).
  * Native builds on linux/arm (and uses the gold linker).
  * Linux to linux/arm cross compiles (and uses the cross
    gold linker).

Contributions by Ben Gamari, Joachim Breitner and Reid Barton.

Reviewers: nomeata, bgamari, austin, rwbarton

Subscribers: thomie

Differential Revision:

GHC Trac Issues: #8976 #9873

(cherry picked from commit 71fcc4c096ec0b575522e4c2d0104ef7a71a13c5)

4 years agoUpdate filepath/hpc/process submodules
Herbert Valerio Riedel [Thu, 19 Mar 2015 15:44:51 +0000 (16:44 +0100)] 
Update filepath/hpc/process submodules

These updates these 3 submodules to their respective released tagged
commits. No source-code changes are involved with this update.

4 years agoFix testsuite driver for a profiling compiler
Thomas Miedema [Sun, 15 Mar 2015 20:06:39 +0000 (21:06 +0100)] 
Fix testsuite driver for a profiling compiler

This should have been part of commit 5258566ee5c8, to allow expansion of
'{hp2ps}' in a command string to `config.hp2ps`.

Reviewed by: austin

Differential Revision:

(cherry picked from commit beee618c4ab8f725acd4dce3ef8a0d4ce84bb6ec)

4 years agoDont call unsafeGlobalDynFlags if it is not set
Thomas Miedema [Mon, 16 Mar 2015 17:36:59 +0000 (18:36 +0100)] 
Dont call unsafeGlobalDynFlags if it is not set

Parsing of static and mode flags happens before any session is started,
i.e., before the first call to 'GHC.withGhc'. Therefore, to report
errors for invalid usage of these two types of flags, we can not call
any function that needs DynFlags, as there are no DynFlags available yet
(unsafeGlobalDynFlags is not set either). So we always print "on the
commandline" as the location, which is true except for Api users, which
is probably ok.

When reporting errors for invalid usage of dynamic flags we /can/ make
use of DynFlags, and we do so explicitly in

Before, we called unsafeGlobalDynFlags when an invalid (combination of)
flag(s) was given on the commandline, resulting in panics (#9963). This
regression was introduced in 1d6124de.

Also rename showSDocSimple to showSDocUnsafe, to hopefully prevent this
from happening again.

Reviewed By: austin

Differential Revision:

GHC Trac Issues: #9963

(cherry picked from commit 5166ee94e439375a4e6acb80f88ec6ee65476bbd)

4 years agoFix Windows testsuite driver
Thomas Miedema [Tue, 17 Mar 2015 11:08:59 +0000 (12:08 +0100)] 
Fix Windows testsuite driver

This got broken in commit 5258566.

(cherry picked from commit 9987c66d7c3a1186acb5a32e92cd6846d71987a5)

4 years agoUpdate release notes about better solver, with known bugs.
Richard Eisenberg [Tue, 17 Mar 2015 15:57:53 +0000 (10:57 -0500)] 
Update release notes about better solver, with known bugs.

Release notes in reaction to hvr's comment:26 on #10079.

Reviewed By: austin

Differential Revision:

4 years agolibraries/base: Remove redundant import ghc-7.10.1-rc3
Austin Seipp [Mon, 16 Mar 2015 07:30:44 +0000 (02:30 -0500)] 
libraries/base: Remove redundant import

Signed-off-by: Austin Seipp <>
4 years agolibraries/win32: update submodule
Austin Seipp [Mon, 16 Mar 2015 07:00:10 +0000 (02:00 -0500)] 
libraries/win32: update submodule

Signed-off-by: Austin Seipp <>
4 years agoUpdate Cabal submodule to latest snapshot
Herbert Valerio Riedel [Sun, 15 Mar 2015 06:14:32 +0000 (07:14 +0100)] 
Update Cabal submodule to latest snapshot

This addresses the Cabal side of #10115 as this pulls in the following
two commits:

> Make sure to pass the package key to ghc
> Haddock: Use --package-{name|version} when available

(cherry picked from commit 14b78eb7390dcf78c104501f4c24ac013a70a766)

4 years agoWe need to import 'cast' on Windows
Edward Z. Yang [Sat, 14 Mar 2015 08:16:44 +0000 (09:16 +0100)] 
We need to import 'cast' on Windows

This fixes breakage introduced via

Signed-off-by: Edward Z. Yang <>
(cherry picked from commit 11314b936340a0980c27a01400b7dfec2ffdfa42)

4 years agoLink temporary shared objects with `--no-as-needed`
Peter Trommler [Sat, 14 Mar 2015 08:05:41 +0000 (09:05 +0100)] 
Link temporary shared objects with `--no-as-needed`

Some ELF link editors default to `--as-needed` and record only
those libraries in DT_NEEDED tags that are needed to resolve
undefined symbols in the shared object to be created.

In Template Haskell we rely on all symbols that were defined
in modules compiled so far to be available in the current
temporary shared object. To prevent the link editor from
dropping the DT_NEEDED tag for the previously linked temporary
shared object we need to override the link editors default and
specify `--no-as-needed` on the command line. This is for GNU ld
and GOLD ld.

This addresses #10110

TODO: regression test

(cherry picked from commit 1b7f59769052fd8193c6acc561216e070d0ca335)

4 years agoMove the function strip_quotes to
Thomas Miedema [Fri, 13 Mar 2015 20:07:15 +0000 (21:07 +0100)] 
Move the function strip_quotes to

If one runs the testsuite with a profiling compiler, during the import
of ``, `` sets the global variable `gs_working`. To
do so, it executes a few statements which require the function
`strip_quotes` to be in scope. But that function only gets defined at
the very end of

This patch moves the definition of `strip_quotes` to, which
is imported at the very top of This unbreaks the nightly

(cherry picked from commit cc07a0ba64b554ffd1ff85757b02cd79d30ed57a)

4 years agoRename ty{Con,peRep}Hash to ty{Con,peRep}Fingerprint
Herbert Valerio Riedel [Wed, 11 Mar 2015 15:36:09 +0000 (16:36 +0100)] 
Rename ty{Con,peRep}Hash to ty{Con,peRep}Fingerprint

This is a follow-up change to 56e0ac98c3a439b8757a2e886db259270bdc85f0

See also discussion at

(cherry picked from commit 842028b4a624e639dc9ee9a4f92fc208c8206e3f)

4 years agoAdd missed test (uuugh)
Austin Seipp [Sat, 7 Mar 2015 16:40:18 +0000 (10:40 -0600)] 
Add missed test (uuugh)

Signed-off-by: Austin Seipp <>
(cherry picked from commit 34ba68c2aeb6fb2d1ea25a1a5e45c233ed7efc9c)

4 years agoCustom `Typeable` solver, that keeps track of kinds.
Iavor S. Diatchki [Sat, 7 Mar 2015 16:37:31 +0000 (10:37 -0600)] 
Custom `Typeable` solver, that keeps track of kinds.

This implements the new `Typeable` solver: when GHC sees `Typeable` constraints
it solves them on the spot.

The current implementation creates `TyCon` representations on the spot.

Pro: No overhead at all in code that does not use `Typeable`
Cons: Code that uses `Typeable` may create multipe `TyCon` represntations.

We have discussed an implementation where representations of `TyCons` are
computed once, in the module, where a datatype is declared.  This would
lead to more code being generated:  for a promotable datatype we need to
generate `2 + number_of_data_cons` type-constructro representations,
and we have to do that for all programs, even ones that do not intend to
use typeable.

I added code to emit warning whenevar `deriving Typeable` is encountered---
the idea being that this is not needed anymore, and shold be fixed.

Also, we allow `instance Typeable T` in .hs-boot files, but they result
in a warning, and are ignored.  This last one was to avoid breaking exisitng
code, and should become an error, eventually.

Test Plan:
1. GHC can compile itself.
2. I compiled a number of large libraries, including `lens`.
    - I had to make some small changes:
      `unordered-containers` uses internals of `TypeReps`, so I had to do a 1 line fix
    - `lens` needed one instance changed, due to a poly-kinded `Typeble` instance

3. I also run some code that uses `syb` to traverse a largish datastrucutre.
I didn't notice any signifiant performance difference between the 7.8.3 version,
and this implementation.

Reviewers: simonpj, simonmar, austin, hvr

Reviewed By: austin, hvr

Subscribers: thomie

Differential Revision:

GHC Trac Issues: #9858

(cherry picked from commit b359c886cd7578ed083bcedcea05d315ecaeeb54)

4 years agoUpdate submodule hpc (includes fix for #9619)
Thomas Miedema [Thu, 5 Mar 2015 21:06:11 +0000 (22:06 +0100)] 
Update submodule hpc (includes fix for #9619)

(cherry picked from commit 41e8400a57620978681663e9c804fee405da26d5)

4 years agoCleanup test framework string formatting
Thomas Miedema [Fri, 6 Mar 2015 20:55:36 +0000 (21:55 +0100)] 
Cleanup test framework string formatting

* Use format strings instead of string concatenation.
* Wrap `config.compiler`, `config.hpc` etc. in quotes in `mk/`, so we
  don't have to in .T scripts and driver/

Update hpc submodule (test cleanup)

(cherry picked from commit 5258566ee5c89aa757b0cf1433169346319c018f)

4 years agoUpdate filepath submodule to filepath-1.4 snapshot
Herbert Valerio Riedel [Wed, 11 Mar 2015 13:20:51 +0000 (14:20 +0100)] 
Update filepath submodule to filepath-1.4 snapshot

This also needs to update a couple of other submodules
to update the upper bound on filepath to allow this major
version bump to

(cherry picked from commit 5f356f3e412ae4a808b2a72c10609eaacfb1ce3a)

4 years agoUpdate Cabal submodule to latest 1.22 snapshot
Edward Z. Yang [Wed, 11 Mar 2015 13:53:17 +0000 (14:53 +0100)] 
Update Cabal submodule to latest 1.22 snapshot

This changes the library file name format

NOTE: This patch originally updated to Cabal HEAD, but was reduced to
      update to Cabal 1.22 HEAD by hvr as this is needed in order to
      update the filepath submodule to version 1.4.0, and subsequently
      to be cherry-picked into the ghc-7.10 branch

Signed-off-by: Edward Z. Yang <>
(cherry picked from commit 838d8044896b6544d8c80c2ab5de63d97220f06c)

4 years agotestsuite: format commands using config dict
Thomas Miedema [Fri, 6 Mar 2015 19:17:41 +0000 (20:17 +0100)] 
testsuite: format commands using config dict

Allow `cmd_wrapper` to return a format string that can refer to config values.
Very useful! This allows for many tests to be defined in pure Python, instead
of in an additional script or Makefile.


  def Thpc(cmd):
    return(cmd + ' && {hpc} report Thpc.tix')
  test('Thpc', [cmd_wrapper(Thpc), only_ways['hpc']), compile_and_run, [''])

The `{hpc}` is replaced by the value of `config.hpc`. The result is that the
module `Thpc` first gets compiled, then the binary `Thpc` is run, and then the
`hpc report` command is run. The output of all of this is redirected
(and later appended) to as normally.

(cherry picked from commit 91c11feacc4c66a7ebcf8a88ab1cb851ce48142a)

4 years agoRTS/IOManager: fix trac issue #9722.
Andreas Voellmy [Mon, 9 Mar 2015 22:27:41 +0000 (18:27 -0400)] 
RTS/IOManager: fix trac issue #9722.

Whenever the RTS has been inactive for idleGCDelayTime, the idle timer
fires and calls wakeUpRts(), which in turn calls ioManagerWakeup(),
which in turn writes a byte (or a few) to a file descriptor (stored in
the io_manager_wakeup_fd variable) registered by the TimerManager and
on which the TimerManager will wait. (Note that the write will only
occur if the file descriptor is non-negative.) When the RTS shuts
down, it shuts down the TimerManager, and in this process the file
descriptor stored in io_manager_wakeup_fd is closed. In the error
case, the idle timer fires after the close of the file occurs, and
then the write() call in ioManagerWakeup() fails and the
aforementioned error message gets printed.

This patch solves the problem by (1) having the TimerManager (via
Control) write -1 to io_manager_wakeup_fd just before closing the file
descriptor written in io_manager_wakeup_fd, and (2) having
ioManagerWakeup() ignore an error returned by write() in the case that
the write returned -1 and the io_manager_wakeup_fd is -1.

Reviewers: austin, simonmar, hvr, thomie

Reviewed By: thomie

Subscribers: thomie

Differential Revision:

GHC Trac Issues: #9722

(cherry picked from commit 74625d6847e970e8bdc6991c327515b3e10b231b)

4 years agoghc-prim : Hide 64 bit primops when the word size is 32 bits (fixes #9886).
Erik de Castro Lopo [Thu, 5 Mar 2015 08:39:16 +0000 (19:39 +1100)] 
ghc-prim : Hide 64 bit primops when the word size is 32 bits (fixes #9886).

These primops were failing to compile on PowerPC (32 bit). There is also
currently no way to call into these primops from Haskell code. Currently,
the *only* way to call any of these C hs_atomic_* functions is via the
fetch*IntArray primops which are only defined for Int values and Int is
always the native word size.

When these functions can be called (and tested) from Haskell code, then
it will be worth while implementing them.

Test Plan:
    Compile and run on x86, x86_64, powerpc and arm:

Reviewers: tibbe, austin

Subscribers: thomie

Differential Revision:

GHC Trac Issues: #9886

(cherry picked from commit 19440ae2bb256f75934949ae57934caee3831a80)

4 years agoUpdate directory submodule to latest 1.2.2 snapshot
Herbert Valerio Riedel [Tue, 10 Mar 2015 14:54:40 +0000 (15:54 +0100)] 
Update directory submodule to latest 1.2.2 snapshot

(cherry picked from commit b03479dccf3eaddb56db0f48c666c946c4d0f275)

4 years agoRename `SysTools.readCreateProcess`.
Thomas Miedema [Sun, 8 Mar 2015 14:39:16 +0000 (15:39 +0100)] 
Rename `SysTools.readCreateProcess`.

Functions `readCreateProcess` and `readCreateProcessWithExitCode` were added
to `System.Process`, the former of which conflicts with

(cherry picked from commit 8b7534b39052c9cb44411bea0ca311a751564d6c)

4 years agofixup T10019 output yet again
Herbert Valerio Riedel [Tue, 10 Mar 2015 14:25:59 +0000 (15:25 +0100)] 
fixup T10019 output yet again

4 years agoUpdate array submodule (min ver bump to
Herbert Valerio Riedel [Tue, 10 Mar 2015 09:07:07 +0000 (10:07 +0100)] 
Update array submodule (min ver bump to

(cherry picked from commit 0281c9872501de2b7caa91949457728b5eb7a939)

4 years agoUpdate deepseq submodule to snapshot
Herbert Valerio Riedel [Tue, 10 Mar 2015 09:27:25 +0000 (10:27 +0100)] 
Update deepseq submodule to snapshot

4 years agoUpdate submodule to Cabal release
Herbert Valerio Riedel [Tue, 10 Mar 2015 08:11:45 +0000 (09:11 +0100)] 
Update submodule to Cabal release

(cherry picked from commit fdb72839fbefc439ac729e01fcb98fa6bd6511cc)

4 years agoDynamically link all loaded packages in new object
Peter Trommler [Sat, 7 Mar 2015 17:13:37 +0000 (11:13 -0600)] 
Dynamically link all loaded packages in new object

As a result of fixing #8935 we needed to open shared libraries
with RTLD_LOCAL and so symbols from packages loaded earlier
cannot be found anymore. We need to include in the link all
packages loaded so far.

This fixes #10058

Test Plan: validate

Reviewers: hvr, simonmar, austin

Reviewed By: austin

Subscribers: rwbarton, thomie

Differential Revision:

GHC Trac Issues: #10058

(cherry picked from commit 0fcc454329c4e3e0dc4474412bff599d0e9bdfcd)

4 years agoExtend the docs for Data.List.transpose
Joachim Breitner [Mon, 2 Mar 2015 09:55:22 +0000 (10:55 +0100)] 
Extend the docs for Data.List.transpose

by giving a sufficient general example to explain what happens when the
rows are not of the same lengths. Thanks to Doug McIlroy for the
suggestoin. Fixes #10128.

(cherry picked from commit c5977c2e2951e9e346a8f4990d5a6bbdbf9cee0b)

4 years agoAllocationLimitExceeded should be a child of SomeAsyncException
Simon Marlow [Wed, 25 Feb 2015 09:31:18 +0000 (09:31 +0000)] 
AllocationLimitExceeded should be a child of SomeAsyncException

(cherry picked from commit b7f7889fc28460e3e8be3ea8e29f98ff473fd934)

4 years agoAdd `GHC.OldList` legacy module
Herbert Valerio Riedel [Sat, 7 Mar 2015 22:31:27 +0000 (23:31 +0100)] 
Add `GHC.OldList` legacy module

This module provides access the list-specialised versions for legacy purposes
(such as implementing Haskell2010-ish preludes). This module basically
re-exports the hidden `Data.OldList` module (but in the less controversial `GHC.*`
namespace, which signals less committment to keep this module around).

This is legacy module is mostly for GHC 7.10's sake. What becomes long-term
of `GHC.OldList` can be decided unhurriedly during the GHC 7.12 development

(cherry picked from commit e76f86646229b3f8bcdc6ad71d464104c639f431)

4 years agoDefine proper `MINIMAL` pragma for `class Ix`
Herbert Valerio Riedel [Sat, 7 Mar 2015 22:15:07 +0000 (23:15 +0100)] 
Define proper `MINIMAL` pragma for `class Ix`

This addresses #10142

(cherry picked from commit 7a2d65a4d93273c89fbb1d19e282d5933c67c7ca)

4 years agoAdd public rnf/hash operations to TypeRep/TyCon
Herbert Valerio Riedel [Thu, 5 Mar 2015 17:56:03 +0000 (11:56 -0600)] 
Add public rnf/hash operations to TypeRep/TyCon

`TyCon` and `TypeRep` are supposed to be abstract, by providing these
additional few public operations the need to import
`Data.Typeable.Internal` is reduced, and future changes to the internal
structure of `TypeRep`/`TyCon` shouldn't require changes in packages such as
`deepseq` or `hashable` anymore (hopefully).

(cherry picked from commit 56e0ac98c3a439b8757a2e886db259270bdc85f0)

4 years agoRe-export `<$` from Prelude (#10113)
Herbert Valerio Riedel [Sat, 7 Mar 2015 10:37:52 +0000 (11:37 +0100)] 
Re-export `<$` from Prelude (#10113)

This is a follow-up to eb3661f2b9f8472f3714774126ebe1183484dd85
re-exporting `<$` from `Prelude` as well.

(cherry picked from commit 479523f3c37894d63352f1718e06696f3ed63143)

4 years agoRe-export `<$>` from Prelude (#10113)
Herbert Valerio Riedel [Sat, 7 Mar 2015 10:10:34 +0000 (11:10 +0100)] 
Re-export `<$>` from Prelude (#10113)

Whether to re-export the `<$>` non-method operator from `Prelude` wasn't
explicitly covered in the original AMP proposal[1], but it turns out that
not doing so forces most code that makes use of applicatives to import
`Data.Functor` or `Control.Applicative` just to get that operator into
scope.  To this end, it was proposed to add `<$>` to Prelude as well[2].

The down-side is that this increases the amount of redundant-import
warnings triggered, as well as the relatively minor issue of stealing
the `<$>` operator from the default namespace for good (although at this
point `<$>` is supposed to be ubiquitous anyway due to `Applicative`
being implicitly required into the next Haskell Report)


(cherry picked from commit eb3661f2b9f8472f3714774126ebe1183484dd85)

4 years agoDrop redundant LANGUAGE pragmas
Herbert Valerio Riedel [Sat, 7 Mar 2015 10:08:01 +0000 (11:08 +0100)] 
Drop redundant LANGUAGE pragmas

Due to refactoring & cleanups those pragmas have become redundant by now

(cherry picked from commit 1965202febe27949a027dea90c0f0040fd9236e7)

4 years agoEmulate GMP 5+ operations for GMP 4.x compat
Herbert Valerio Riedel [Sun, 22 Feb 2015 16:50:07 +0000 (17:50 +0100)] 
Emulate GMP 5+ operations for GMP 4.x compat

The following operations are only (officially) available starting with
GMP 5.0:

- `mpn_and_n`
- `mpn_andn_n`
- `mpn_ior_n`
- `mpn_xor_n`

In order to properly support GMP 4.x, we simply emulate those operation
in terms of `mpz_*` operations available in GMP 4.x (unless GMP>=5.x
available, obviously) while incurring some overhead. Ideally, GMP 4.x
environments will reach their EOL in the foreseeable future...

This fixes #10003

Reviewed By: austin

Differential Revision:

(cherry picked from commit 5be8ed4da1963ed2d45a65fb61d761c977707cce)

4 years agoUpdate process submodule to snapshot
Herbert Valerio Riedel [Fri, 27 Feb 2015 07:47:36 +0000 (08:47 +0100)] 
Update process submodule to snapshot

This fixes the compilation failure

      Not in scope: `stopDelegateControlC'

(cherry picked from commit 1def53fec6a6ef985de0e665fede4744dfd456fb)

4 years agoProvide a faster implementation for the Read Integer instance
Marios Titas [Mon, 23 Feb 2015 12:46:25 +0000 (06:46 -0600)] 
Provide a faster implementation for the Read Integer instance

The current implementation of the Read Integer instance has quadratic
complexity and thus performs badly on large inputs. This patch provides a
rather simple sub-quadratic algorithm. For small inputs, we use the old
algorithm (there is a small penalty for that). The gains for large
inputs can be dramatic: on my system, the time to perform
    read (take 1000000 $ cycle "1234567890") :: Integer
drops from 65 seconds to less than a second.

Note that we already provide an ad-hoc instance for Show Integer, so this
patch essentially does the same thing for Read Integer.

Test Plan: Check that read :: String -> Integer returns correct results for inputs of various sizes.

Reviewers: austin, hvr

Reviewed By: austin, hvr

Subscribers: ekmett, thomie

Differential Revision:

GHC Trac Issues: #10067

(cherry picked from commit a5a4c25626e11e8b4be6687a9af8cfc85a77e9ba)

4 years agoMove comments about evaluating the message to the top of the module
Simon Peyton Jones [Sun, 15 Feb 2015 20:22:57 +0000 (20:22 +0000)] 
Move comments about evaluating the message to the top of the module

The remarks apply equally to all the functions here (Trac #9795)

(cherry picked from commit 6fa285d77bba2d391b5d2b3c3abe1f19d298483c)

4 years agoImprove documentation of 'trace'
Simon Peyton Jones [Fri, 13 Feb 2015 23:10:18 +0000 (23:10 +0000)] 
Improve documentation of 'trace'

See Trac #9795.

(cherry picked from commit 7fdded4ed7e670e0c83d312b56a59b36c52913c9)

4 years agoFix build bogons due to missing separator
Austin Seipp [Mon, 23 Feb 2015 11:48:15 +0000 (05:48 -0600)] 
Fix build bogons due to missing separator

Signed-off-by: Austin Seipp <>
(cherry picked from commit 9004f0d267613b9989fc2f3313c0bd64936103cd)

4 years agodocs: Update release notes
Austin Seipp [Mon, 23 Feb 2015 11:37:42 +0000 (05:37 -0600)] 
docs: Update release notes

Signed-off-by: Austin Seipp <>
4 years agoAdd configurable verbosity level to hpc
Yuras Shumovich [Tue, 17 Feb 2015 14:39:54 +0000 (08:39 -0600)] 
Add configurable verbosity level to hpc

All commands now have `--verbosity` flag, so one can configure
cabal package with `--hpc-options="--verbosity=0"`.

Right now it is used only in `hpc markup` to supress unnecessary

Reviewers: austin

Reviewed By: austin

Subscribers: thomie

Differential Revision:

GHC Trac Issues: #10091

(cherry picked from commit 1b82619bc2ff36341d916c56b0cd67a378a9c222)

4 years agobase: fix broken link (#10088)
Austin Seipp [Mon, 23 Feb 2015 11:32:56 +0000 (05:32 -0600)] 
base: fix broken link (#10088)

Signed-off-by: Austin Seipp <>
(cherry picked from commit 266fa701286e1cda406e3fbae368aa9666a18980)

4 years agodocs: Flatten MAKEHELP/SUBMAKEHELP
Austin Seipp [Mon, 23 Feb 2015 11:21:11 +0000 (05:21 -0600)] 

There's no reason to have two files, and this is one step towards a
cleaner root directory.

Signed-off-by: Austin Seipp <>
(cherry picked from commit c3f9eb4d0626fc40f77e61653deca84cc3e1542f)

4 years agodocs: add to root dir (#9926)
Austin Seipp [Mon, 23 Feb 2015 11:19:59 +0000 (05:19 -0600)] 
docs: add to root dir (#9926)

This gives a very quick rundown on installation for end-users (HACKING
etc is for developers/possible contributors).

Signed-off-by: Austin Seipp <>
(cherry picked from commit 9a1c8d96f0aaf7629cdcfad5ba67aa8a1a7b9cb3)

4 years agofix bus errors on SPARC caused by unalignment access to alloc_limit (fixes #10043)
Karel Gardas [Sat, 14 Feb 2015 21:46:47 +0000 (22:46 +0100)] 
fix bus errors on SPARC caused by unalignment access to alloc_limit (fixes #10043)

Reviewers: austin, simonmar

Subscribers: thomie

Differential Revision:

(cherry picked from commit b2be772a97f6e7fe9f1d1c28108949f81a13158b)

4 years ago{Data,Generic(1),MonadZip} instances for Identity
Herbert Valerio Riedel [Sun, 22 Feb 2015 14:21:18 +0000 (15:21 +0100)] 
{Data,Generic(1),MonadZip} instances for Identity

These instances were missed when the identity functor was added to
the `base` package (re #9664).

(cherry picked from commit 1f60d635cee1ff3db72e0129f9035b147f52c9c4)

4 years agoImprove typechecking of RULEs, to account for type wildcard holes
Simon Peyton Jones [Sun, 15 Feb 2015 20:21:42 +0000 (20:21 +0000)] 
Improve typechecking of RULEs, to account for type wildcard holes

This fixes Trac #10072. Previously the type-hole constraint was
escaping to top level, but it belongs in the scope of the skolems
bound by the RULE.

(cherry picked from commit 5ab7518f28e89515c73ff09acd48b5acab48b8a5)

4 years agoMake top-level "configure" accept and propagate --with-curses-{includes,libraries...
PHO [Mon, 23 Feb 2015 09:40:05 +0000 (03:40 -0600)] 
Make top-level "configure" accept and propagate --with-curses-{includes,libraries} to libraries

If curses is installed into some non-standard path, we currently have
to say something like the following in mk/

  libraries/terminfo_CONFIGURE_OPTS += \
      --configure-option=--with-curses-includes=/somewhere/include \

This is because the top-level configure does not accept nor propagate
--with-curses-{includes,libraries} to libraries while it does so for
iconv, gmp and libffi. It would be nice if curses were handled in the
same manner.

Test Plan: Install curses into some non-standard path. Then run the top-level "configure" script with options "--with-curses-includes=/path/to/curses/include" and "--with-curses-libraries=/path/to/curses/lib".

Reviewers: austin

Reviewed By: austin

Subscribers: thomie, PHO

Differential Revision:

GHC Trac Issues: #10096

(cherry picked from commit bbb57a6b3a31c22a5a24fa4b92abbe13a6736ad8)

4 years agoFix for ticket #10078: ensure that tcPluginStop is called even in case of type errors
Jan Bracker [Mon, 23 Feb 2015 09:40:15 +0000 (03:40 -0600)] 
Fix for ticket #10078: ensure that tcPluginStop is called even in case of type errors

Remove unused variable that appeared through the fix for ticket #10078

Merge branch 'master' of git://

Added comment with bug ID.

Reviewers: adamgundry, gridaphobe, austin

Reviewed By: austin

Subscribers: thomie

Differential Revision:

GHC Trac Issues: #10078

(cherry picked from commit fd581a7300abede9a070cb6e9b835b2e18f68b0b)

4 years agorts/linker: ignore unknown PE sections
Tamar Christina [Mon, 23 Feb 2015 09:40:43 +0000 (03:40 -0600)] 
rts/linker: ignore unknown PE sections

Summary: Currently the linker tries to see if it understands/knows every section in the PE file before it continues. If it encounters a section it doesn't know about it errors out. Every time there's a change in MinGW compiler that adds a new section to the PE file this will break the ghc linker. The new sections don't need to be understood by `ghc` to continue so instead of erroring out the section is just ignored. When running with `-debug` the sections that are ignored will be printed.

Test Plan:
See the file `` in #9907.

 1) unzip file content.
 2) open examplecpp.cabal and change base <4.8 to <4.9.
 3) execute cabal file with cabal repl.

Applying the patch makes `cabal repl` in step 3) work.

Note that the file will fail on a `___mingw_vprintf` not being found. This is because of the `cc-options` specifying `-std=c++0x`, which will also require `libmingwex.a` to be linked in but wasn't specified in the cabal file. To fix this, remove the `cc-options` which defaults to c99.

Reviewers: austin

Reviewed By: austin

Subscribers: thomie

Differential Revision:

GHC Trac Issues: #9907, #7103, #10051, #7056, #8546

(cherry picked from commit a293925d810229fbea77d95f2b3068e78f8380cc)

4 years agoUpdate submodule to Cabal release
Herbert Valerio Riedel [Sun, 22 Feb 2015 17:04:27 +0000 (18:04 +0100)] 
Update submodule to Cabal release

4 years agoAdd missing test from previous commit (55199a97)
Austin Seipp [Mon, 19 Jan 2015 14:10:58 +0000 (08:10 -0600)] 
Add missing test from previous commit (55199a97)

Signed-off-by: Austin Seipp <>
(cherry picked from commit 960e3c92eace7f9b584cfc6f6eb69a37cd3d88f8)

4 years agoPropagate ReturnTvs in matchExpectedFunTys
Richard Eisenberg [Wed, 11 Feb 2015 18:40:21 +0000 (13:40 -0500)] 
Propagate ReturnTvs in matchExpectedFunTys

This really should have done a while ago, with the ReturnTv factoring.
It's surprising that I can't tickle the bug!

Please merge to ghc-7.10.

(cherry picked from commit 849e25ca4bb5aac2d49d0e27a5dfba61b6f72640)

4 years agoFix egregious typo in checkTauTvUpdate.
Richard Eisenberg [Wed, 11 Feb 2015 18:13:53 +0000 (13:13 -0500)] 
Fix egregious typo in checkTauTvUpdate.

The old code used an unzonked type in an occurs-check, which
would sometimes lead to an infinite loop.

Please merge to ghc-7.10.

(cherry picked from commit d5cd94d7b57dc233ff40bb3e494b7baf1be4d285)

4 years agoFix #10079 by recurring after flattening exposes a TyConApp.
Richard Eisenberg [Wed, 11 Feb 2015 18:06:15 +0000 (13:06 -0500)] 
Fix #10079 by recurring after flattening exposes a TyConApp.

Previously, try_decompose_nom_app was smart enough to recur if
flattening exposed a TyConApp, but try_decompose_repr_app was
not. Now, if neither type in try_decompose_repr_app is an AppTy,

Seems all straightforward enough to avoid a Note.

(cherry picked from commit befe2d7c8902096dd184ebca3f7f135ee5f479e8)

4 years agonameIsLocalOrFrom should include interactive modules
Simon Peyton Jones [Wed, 11 Feb 2015 10:55:10 +0000 (10:55 +0000)] 
nameIsLocalOrFrom should include interactive modules

The provoking cause was Trac #10019, but it revealed that nameIsLocalOrFrom
should really include all interactive modules (ones from the 'interactive'
package).  Previously we had some ad-hoc 'isInteractiveModule' tests with
some (but not all) the calls to nameIsLocalOrFrom.

See the new comments with Name.nameIsLocalOrFrom.

(cherry picked from commit 6ff3db92140e3ac8cbda50d1a4aab976350ac8c4)

4 years agoDon't overwrite input file by default
Phil Ruffwind [Mon, 9 Feb 2015 19:39:12 +0000 (13:39 -0600)] 
Don't overwrite input file by default

If the default filename of the output executable coincides with that of main
source file, throw an error instead of silently clobbering the input file.

Reviewers: austin

Reviewed By: austin

Subscribers: thomie

Differential Revision:

GHC Trac Issues: #9930

(cherry picked from commit 78833ca6305f0875add94351592e141c032cd088)

4 years agoFix a profiling bug
Simon Marlow [Wed, 28 Jan 2015 11:25:52 +0000 (11:25 +0000)] 
Fix a profiling bug

We were erroneously discarding SCCs on function-typed variables.
These can affect the call stack, so we have to retain them.  The bug
was introduced during the recent SourceNote refactoring.

This is an alternative to the fix proposed in D616.  I also added the
scc005 test from that diff, which works with this change.

While I was here, I also fixed up the other profiling tests, marking a
few as expect_broken_for(10037) where the opt/unopt output differs in
non-fatal ways.

Test Plan: profiling tests

Reviewers: scpmw, ezyang, austin

Subscribers: thomie

Differential Revision:

GHC Trac Issues: #10007

(cherry picked from commit daed18c35cda114d8a5303bcb645195e1fd397e3)

4 years agocabal: update submodule (re: #10036)
Austin Seipp [Mon, 9 Feb 2015 08:57:00 +0000 (02:57 -0600)] 
cabal: update submodule (re: #10036)

Signed-off-by: Austin Seipp <>
4 years agoFix Trac #10004: head [] exception when using recursive mdo
Simon Peyton Jones [Fri, 6 Feb 2015 16:38:52 +0000 (16:38 +0000)] 
Fix Trac #10004: head [] exception when using recursive mdo

(cherry picked from commit 43636e1b8cf4a6d4752a22b098a9edd0759a7600)

4 years agoFix the nullary-type-class case for associated types
Simon Peyton Jones [Fri, 6 Feb 2015 15:04:50 +0000 (15:04 +0000)] 
Fix the nullary-type-class case for associated types

It was already ok for methods.
Fixes Trac #10020

(cherry picked from commit dda652826326022e4604d7b0fdc82c1993e32a67)

4 years agoPut parens around (ty :: kind) when pretty-printing TH syntax
Simon Peyton Jones [Fri, 6 Feb 2015 14:48:33 +0000 (14:48 +0000)] 
Put parens around (ty :: kind) when pretty-printing TH syntax

See Note [Pretty-printing kind signatures] in Language.Haskell.TH.Ppr.hs,
and Trac #10050.

(cherry picked from commit 111e5870803bcccd1c0736fdba432f8f9410454f)

4 years agoProvide default implementation of `Monad(return)`
Herbert Valerio Riedel [Sun, 8 Feb 2015 19:56:58 +0000 (20:56 +0100)] 
Provide default implementation of `Monad(return)`

This was dropped last-minute from d94de87252d0fe2ae97341d186b03a2fbe136b04
(re #4834) together with the default implementation for `(>>)`
(see 65f887e1a0d864526f6a2609a3afc2c151c25e38 for explanation).

However, the risk of accidental mutually recursive definitions of
`return`/`pure` is rather low as unlike with the `(>>) = (*>)` default,
any cyclic definitions would necessarily wind up being new ones, rather
than changing the semantics for old operations and introducing bottoms.

On the other hand, not having the default method implementation in place
in GHC 7.10 would complicate/delay any future attempt to clean-up the

This finally allows (for `base >= 4.8`) to define a F/A/M instance-chain
with the following minimal definitions (while ignoring that `return` is
still a class-method in `Monad`)

  instance Functor M where
    fmap  = ...

  instance Applicative M where
    pure  = ...
    (<*>) = ...

  instance Monad M where
    (>>=) = ...

(cherry picked from commit a741e69a230eb6d6e3373ad1fbe53c73b5f95077)

4 years agoGRHS with empty wherebinds gets wrong SrcSpan
Alan Zimmerman [Thu, 5 Feb 2015 23:37:42 +0000 (17:37 -0600)] 
GRHS with empty wherebinds gets wrong SrcSpan

When parsing a rhs, the GRHS is constructed via unguardedRHS which is
given a SrcSpan which only takes account of the '=' and wherebinds, so
does not include the exp when wherebinds are empty.

Test Plan: ./validate

Reviewers: hvr, austin

Reviewed By: austin

Subscribers: thomie

Differential Revision:

(cherry picked from commit d4f25cb151db1a539aab66b26ccca4d166562b22)

4 years agoBring Match m_fun_id_infix through the renamer.
Alan Zimmerman [Thu, 5 Feb 2015 23:36:57 +0000 (17:36 -0600)] 
Bring Match m_fun_id_infix through the renamer.

This is a first step for #9988

It turns out that bringing m_fun_id_infix through the renamer is
actually very simple, affecting the internals of rnMatch' only.

Is this simple enough to hit 7.10.1?

Test Plan: ./validate

Reviewers: hvr, simonpj, austin

Reviewed By: simonpj, austin

Subscribers: thomie

Differential Revision:

GHC Trac Issues: #9988

(cherry picked from commit c88e11219c1e914b71d8c630a1f1d4f6f0fb6b9b)

4 years agofix _FILE_OFFSET_BITS redefined warning on Solaris/i386 platform
Karel Gardas [Thu, 5 Feb 2015 23:35:45 +0000 (17:35 -0600)] 
fix _FILE_OFFSET_BITS redefined warning on Solaris/i386 platform

The problem with Solaris is that system header files include
/usr/include/sys/feature_tests.h header file and it tests if
_FILE_OFFSET_BITS define is defined. If not, it defines it to 32
which is in conflict with 64 which we need for large file support.
The solution is easy, always include own header files before system header

Reviewers: hvr, austin

Reviewed By: austin

Subscribers: thomie

Differential Revision:

(cherry picked from commit 78216e227dfb069d3eda804799f1f96716320a1b)

4 years agodocs: Add missing libraries to release notes (#10038)
Austin Seipp [Mon, 2 Feb 2015 20:44:27 +0000 (14:44 -0600)] 
docs: Add missing libraries to release notes (#10038)

Signed-off-by: Austin Seipp <>
4 years agodocs: Add mention of prefetch API changes (#9937)
Austin Seipp [Mon, 2 Feb 2015 20:16:10 +0000 (14:16 -0600)] 
docs: Add mention of prefetch API changes (#9937)

Signed-off-by: Austin Seipp <>
4 years agoFix #10017
Andreas Voellmy [Mon, 2 Feb 2015 15:50:52 +0000 (10:50 -0500)] 
Fix #10017

In the threaded RTS, a signal is delivered from the RTS to Haskell
user code by writing to file that one of the IO managers watches (via
an instance of GHC.Event.Control.Control). When the IO manager
receives the signal, it calls GHC.Conc.Signal.runHandlers to invoke
Haskell signal handler. In the move from a single IO manager to one IO
manager per capability, the behavior was (wrongly) extended so that a
signal is delivered to every event manager (see #9423), each of which
invoke Haskell signal handlers, leading to multiple invocations of
Haskell signal handlers for a single signal. This change fixes this
problem by having the RTS (in generic_handler()) notify only the
Control instance used by the TimerManager, rather than all the
per-capability IO managers.

Reviewers: austin, hvr, simonmar, Mikolaj

Reviewed By: simonmar, Mikolaj

Subscribers: thomie

Differential Revision:

(cherry picked from commit 92c93544939199f6ef758e1658149a971d4437c9)

4 years agoEvent Manager: Make one-shot a per-registration property
Ben Gamari [Mon, 12 Jan 2015 23:36:23 +0000 (18:36 -0500)] 
Event Manager: Make one-shot a per-registration property

Currently the event manager has a global flag for whether to create
epoll-like notifications as one-shot (e.g. EPOLLONESHOT, where an fd
will be deactivated after its first event) or standard multi-shot

Unfortunately this means that the event manager may export either
one-shot or multi-shot semantics to the user. Even worse, the user has
no way of knowing which semantics are being delivered. This resulted in
breakage in the usb[1] library which deadlocks after notifications on
its fd are disabled after the first event is delivered.  This patch
reworks one-shot event support to allow the user to choose whether
one-shot or multi-shot semantics are desired on a per-registration
basis. The event manager can then decide whether to use a one-shot or
multi-shot epoll.

A registration is now defined by a set of Events (as before) as well as
a Lifetime (either one-shot or multi-shot). We lend monoidal structure
to Lifetime choosing OneShot as the identity. This allows us to combine
Lifetime/Event pairs of an fd to give the longest desired lifetime of
the registration and the full set of Events for which we want


(cherry picked from commit 023439980f6ef6ec051f676279ed2be5f031efe6)