Thomas Schilling [Mon, 10 Nov 2008 17:56:14 +0000 (17:56 +0000)]
Documentation only. Clarify that 'load*' may indeed throw SourceErrors.
I don't think errors during dependency analysis should be passed to
the logger.
Thomas Schilling [Mon, 10 Nov 2008 15:38:19 +0000 (15:38 +0000)]
Fix documentation (to say the opposite).
Thomas Schilling [Mon, 10 Nov 2008 15:36:21 +0000 (15:36 +0000)]
Fix line numbers in TAGS files.
Thomas Schilling [Mon, 10 Nov 2008 15:34:56 +0000 (15:34 +0000)]
Documentation only.
Thomas Schilling [Mon, 10 Nov 2008 14:35:10 +0000 (14:35 +0000)]
Add 'packageDbModules' function to GHC API.
This function returns a list of all modules available through the
package DB.
MERGE TO 6.10
Ian Lynagh [Sat, 8 Nov 2008 14:47:23 +0000 (14:47 +0000)]
We now require GHC 6.6, so we always have Applicative
Ian Lynagh [Sat, 8 Nov 2008 14:45:44 +0000 (14:45 +0000)]
Remove a CPP test that's always true (__GLASGOW_HASKELL__ >= 605)
Ian Lynagh [Sat, 8 Nov 2008 14:44:59 +0000 (14:44 +0000)]
Remove some dead code now that __GLASGOW_HASKELL__ >= 606
Ian Lynagh [Sat, 8 Nov 2008 14:44:12 +0000 (14:44 +0000)]
Remove some flag duplication from a Makefile
Ian Lynagh [Sat, 8 Nov 2008 14:43:28 +0000 (14:43 +0000)]
ghc_ge_605 is now always YES
Ian Lynagh [Sat, 8 Nov 2008 14:34:23 +0000 (14:34 +0000)]
Remove the GHC 6.4 unicode compat stuff; we can now just use Data.Char
Clemens Fruhwirth [Sat, 8 Nov 2008 09:47:25 +0000 (09:47 +0000)]
Fix libffi bindist
Clemens Fruhwirth [Fri, 7 Nov 2008 16:07:35 +0000 (16:07 +0000)]
Replace couple of fromJust with expectJust
Simon Marlow [Fri, 7 Nov 2008 09:29:25 +0000 (09:29 +0000)]
Bugfix for patch "Do not filter the rts from linked libraries..." (#2745)
The sense of the #ifdef was wrong
Simon Marlow [Fri, 7 Nov 2008 09:04:32 +0000 (09:04 +0000)]
fix via-C compilation: import ghczmprim_GHCziBool_False_closure
Simon Marlow [Fri, 7 Nov 2008 08:52:50 +0000 (08:52 +0000)]
disable instance MonadPlus CoreM for GHC <= 6.6
Simon Marlow [Thu, 6 Nov 2008 16:08:10 +0000 (16:08 +0000)]
re-instate counting of sparks converted
lost in patch "Run sparks in batches"
Simon Marlow [Thu, 6 Nov 2008 15:58:26 +0000 (15:58 +0000)]
fix ASSERT_SPARK_POOL_INVARIANTS(): top>bottom is valid
Simon Marlow [Thu, 6 Nov 2008 15:56:48 +0000 (15:56 +0000)]
pruneSparkQueue(): fix bug when top>bottom
Simon Marlow [Thu, 6 Nov 2008 15:53:56 +0000 (15:53 +0000)]
don't yield if the system is shutting down
Simon Marlow [Thu, 6 Nov 2008 13:21:05 +0000 (13:21 +0000)]
leave out ATTRIBUTE_ALIGNED on Windows, it gives a warning
Simon Marlow [Thu, 6 Nov 2008 11:40:45 +0000 (11:40 +0000)]
Cope with ThreadRelocated when traversing the blocked_queue
Fixes "invalid what_next field" in ioref001 on Windows, and perhaps others
Thomas Schilling [Fri, 31 Oct 2008 16:20:36 +0000 (16:20 +0000)]
Remove dead code.
Simon Marlow [Thu, 6 Nov 2008 11:36:39 +0000 (11:36 +0000)]
Run sparks in batches, instead of creating a new thread for each one
Signficantly reduces the overhead for par, which means that we can
make use of paralellism at a much finer granularity.
Simon Marlow [Thu, 6 Nov 2008 11:37:14 +0000 (11:37 +0000)]
allocateInGen(): increase alloc_blocks (#2747)
Simon Marlow [Thu, 6 Nov 2008 10:04:11 +0000 (10:04 +0000)]
disable MonadPlus instance that doesn't compile with 6.6
Simon Marlow [Wed, 5 Nov 2008 15:49:28 +0000 (15:49 +0000)]
don't yield the Capability if blackholes_need_checking
Simon Marlow [Wed, 5 Nov 2008 15:05:42 +0000 (15:05 +0000)]
deadlock fix: reset the flag *after* checking the blackhole queue
Simon Marlow [Wed, 5 Nov 2008 15:03:59 +0000 (15:03 +0000)]
retreat the top/bottom fields of the spark pool in pruneSparkPool()
Simon Marlow [Tue, 4 Nov 2008 09:29:29 +0000 (09:29 +0000)]
fix the :help docs for :set stop (#2737)
Simon Marlow [Tue, 4 Nov 2008 14:21:47 +0000 (14:21 +0000)]
bugfix: don't ingore the return value from rts_evalIO()
Simon Marlow [Fri, 24 Oct 2008 12:02:36 +0000 (12:02 +0000)]
Document the new SPARKS statistic, and xref from the parallelism section
Simon Marlow [Fri, 24 Oct 2008 10:43:01 +0000 (10:43 +0000)]
Move the freeing of Capabilities later in the shutdown sequence
Fixes a bug whereby the Capability has been freed but other
Capabilities are still trying to steal sparks from its pool.
Simon Marlow [Thu, 23 Oct 2008 08:07:49 +0000 (08:07 +0000)]
Pad Capabilities and Tasks to 64 bytes
This is just good practice to avoid placing two structures heavily
accessed by different CPUs on the same cache line
simonpj@microsoft.com [Mon, 3 Nov 2008 11:08:19 +0000 (11:08 +0000)]
Fix desugaring of record update (fixes Trac #2735)
Ian Lynagh [Fri, 31 Oct 2008 18:17:46 +0000 (18:17 +0000)]
Refuse to register packages with unversioned dependencies; trac #1837
Ian Lynagh [Fri, 31 Oct 2008 17:15:06 +0000 (17:15 +0000)]
We now require GHC 6.6 to build the HEAD (and thus 6.12)
Ian Lynagh [Fri, 31 Oct 2008 14:52:27 +0000 (14:52 +0000)]
:set prompt now understand Haskell String syntax; trace #2652
simonpj@microsoft.com [Fri, 31 Oct 2008 14:02:36 +0000 (14:02 +0000)]
Comments only
Thomas Schilling [Fri, 31 Oct 2008 11:31:25 +0000 (11:31 +0000)]
Quickfix for warning.
Thomas Schilling [Tue, 28 Oct 2008 18:23:10 +0000 (18:23 +0000)]
Export typeclasses for accessing compiler results.
MERGE TO 6.10.
Thomas Schilling [Tue, 28 Oct 2008 18:22:02 +0000 (18:22 +0000)]
Minor refactoring.
Thomas Schilling [Tue, 28 Oct 2008 18:05:38 +0000 (18:05 +0000)]
Include record fields in tags.
simonpj@microsoft.com [Fri, 31 Oct 2008 09:23:06 +0000 (09:23 +0000)]
Fix imports
simonpj@microsoft.com [Thu, 30 Oct 2008 14:39:47 +0000 (14:39 +0000)]
Improve error reporting for non-rigid GADT matches
Following suggestions from users, this patch improves the error message
when a GADT match needs a rigid type:
tcfail172.hs:19:10:
GADT pattern match in non-rigid context for `Nil'
- Solution: add a type signature
+ Probable solution: add a type signature for `is_normal'
In the pattern: Nil
In the definition of `is_normal': is_normal Nil = True
Now GHC tries to tell you what to give a type signature *for*.
Thanks to Daniel Gorin and others for the suggestions.
simonpj@microsoft.com [Thu, 30 Oct 2008 12:51:08 +0000 (12:51 +0000)]
Add (a) CoreM monad, (b) new Annotations feature
This patch, written by Max Bolingbroke, does two things
1. It adds a new CoreM monad (defined in simplCore/CoreMonad),
which is used as the top-level monad for all the Core-to-Core
transformations (starting at SimplCore). It supports
* I/O (for debug printing)
* Unique supply
* Statistics gathering
* Access to the HscEnv, RuleBase, Annotations, Module
The patch therefore refactors the top "skin" of every Core-to-Core
pass, but does not change their functionality.
2. It adds a completely new facility to GHC: Core "annotations".
The idea is that you can say
{#- ANN foo (Just "Hello") #-}
which adds the annotation (Just "Hello") to the top level function
foo. These annotations can be looked up in any Core-to-Core pass,
and are persisted into interface files. (Hence a Core-to-Core pass
can also query the annotations of imported things.) Furthermore,
a Core-to-Core pass can add new annotations (eg strictness info)
of its own, which can be queried by importing modules.
The design of the annotation system is somewhat in flux. It's
designed to work with the (upcoming) dynamic plug-ins mechanism,
but is meanwhile independently useful.
Do not merge to 6.10!
simonpj@microsoft.com [Thu, 30 Oct 2008 09:45:28 +0000 (09:45 +0000)]
Fix Trac #2674: in TH reject empty case expressions and function definitions
simonpj@microsoft.com [Wed, 29 Oct 2008 14:08:58 +0000 (14:08 +0000)]
Change naming conventions for compiler-generated dictionaries and type functions
Up to now, the data constructor dictionary for class C as been called
":DC". But there is no reason for the colon to be at the front; indeed
it confuses the (simple-minded) pretty-printer for types. So this
patch changes it to be "D:C". This makes Core a lot easier to read.
Having a colon in the middle ensures that it can't clash with a user-written
data type.
Similarly I changed
T:C Data type corresponding a class dictionary (was :TC)
D:C Data constructor for class dictionary (was :DC)
NTCo:T Coercion mapping from a newtype T to its representation type
(was :CoT)
TFCo:R Coercion mapping from a data family to its respresentation type R
(was :CoFR)
Rn:T The n'th respresentation data type for a data type T
(was :RnT)
Do not merge to 6.10.
HEADS-UP: you'll need to recompile libraries from scratch.
ROMAN: you could do the same for OccName.mkVectTyConOcc etc, if you wanted.
simonpj@microsoft.com [Wed, 29 Oct 2008 13:01:55 +0000 (13:01 +0000)]
Fix tcrun031: yet more tidying up in TcDeriv
simonpj@microsoft.com [Wed, 29 Oct 2008 13:01:14 +0000 (13:01 +0000)]
Add Outputable instance for CoercionI
simonpj@microsoft.com [Tue, 28 Oct 2008 14:08:28 +0000 (14:08 +0000)]
Fix Trac #2720: inlining and casts
The issue here is what happens when we have
(f |> co) x
where f is itself marked INLINE. We want callSiteInline to "see"
the fact that the function is applied, and hence have some incentive
to inline. I've done this by extending CoreUnfold.CallCtxt with
ValAppCtxt. I think that should catch this case without messing up
any of the others.
simonpj@microsoft.com [Tue, 28 Oct 2008 13:30:09 +0000 (13:30 +0000)]
Clarify documentatoin
Ian Lynagh [Thu, 23 Oct 2008 14:40:18 +0000 (14:40 +0000)]
Update library version numbers in the release notes
Simon Marlow [Tue, 7 Oct 2008 15:16:47 +0000 (15:16 +0000)]
various updates to the release notes
Ian Lynagh [Sat, 20 Sep 2008 15:57:22 +0000 (15:57 +0000)]
Add library release notes
Ian Lynagh [Sat, 20 Sep 2008 11:48:57 +0000 (11:48 +0000)]
Add release notes for the compiler
Ian Lynagh [Tue, 28 Oct 2008 15:05:34 +0000 (15:05 +0000)]
Doc fix
Ian Lynagh [Tue, 28 Oct 2008 15:04:47 +0000 (15:04 +0000)]
Rename some variables in docs
Ian Lynagh [Tue, 28 Oct 2008 14:46:55 +0000 (14:46 +0000)]
Fix typos
simonpj@microsoft.com [Tue, 28 Oct 2008 11:54:27 +0000 (11:54 +0000)]
Mostly-fix Trac #2595: updates for existentials
Ganesh wanted to update records that involve existentials. That
seems reasonable to me, and this patch covers existentials, GADTs,
and data type families.
The restriction is that
The types of the updated fields may mention only the
universally-quantified type variables of the data constructor
This doesn't allow everything in #2595 (it allows 'g' but not 'f' in
the ticket), but it gets a lot closer.
Lots of the new lines are comments!
simonpj@microsoft.com [Tue, 28 Oct 2008 11:04:45 +0000 (11:04 +0000)]
Fix Trac #2723: keep track of record field names in the renamer
The idea here is that with -XNamedFieldPuns and -XRecordWildCards we don't
want to report shadowing errors for
let fld = <blah> in C { .. }
But to suppress such shadowing errors, the renamer needs to know that
'fld' *is* a record selector. Hence the new NameSet in
TcRnFypes.RecFieldEnv
simonpj@microsoft.com [Tue, 28 Oct 2008 07:46:39 +0000 (07:46 +0000)]
Remove dead code
simonpj@microsoft.com [Mon, 27 Oct 2008 22:27:38 +0000 (22:27 +0000)]
Fix Trac #2713: refactor and tidy up renaming of fixity decls
In fixing #2713, this patch also eliminates two almost-unused
functions from RnEnv (lookupBndr and lookupBndr_maybe). The
net lines of code is prety much unchanged, but more of them
are comments!
simonpj@microsoft.com [Sat, 25 Oct 2008 17:12:11 +0000 (17:12 +0000)]
Fix Trac #2701: make deriving check better for unlifted args
Getting the automatic deriving mechanism to work really smoothly
is surprisingly hard. I keep finding myself in TcDeriv!
Anyway, this is a nice clean fix to Trac #2701.
Ian Lynagh [Fri, 24 Oct 2008 11:24:00 +0000 (11:24 +0000)]
Use pdflatex rather than latex for building
The Windows builder is having problems running ps2pdf, so this works
aroudn the problem.
Ian Lynagh [Fri, 24 Oct 2008 11:17:50 +0000 (11:17 +0000)]
Remove an unmatched } in core.tex
Ian Lynagh [Fri, 24 Oct 2008 11:14:58 +0000 (11:14 +0000)]
Add a usepackage{url}
Ian Lynagh [Wed, 22 Oct 2008 16:44:23 +0000 (16:44 +0000)]
Update ANNOUNCE
Simon Marlow [Thu, 23 Oct 2008 15:50:17 +0000 (15:50 +0000)]
Fix a bug in the new scheduler
If the current thread blocks, we should yield the Capability
immediately, because the thread and hence possibly the current Task
are now owned by someone else. This worked in the old scheduler, but
we moved where the yield happens in the new scheduler which broke it.
Simon Marlow [Thu, 23 Oct 2008 15:45:51 +0000 (15:45 +0000)]
add an assertion
Simon Marlow [Thu, 23 Oct 2008 08:22:13 +0000 (08:22 +0000)]
fix a warning
Simon Marlow [Wed, 22 Oct 2008 11:52:33 +0000 (11:52 +0000)]
traverse the spark pools only once during GC rather than twice
Simon Marlow [Wed, 22 Oct 2008 09:27:44 +0000 (09:27 +0000)]
Refactoring and reorganisation of the scheduler
Change the way we look for work in the scheduler. Previously,
checking to see whether there was anything to do was a
non-side-effecting operation, but this has changed now that we do
work-stealing. This lead to a refactoring of the inner loop of the
scheduler.
Also, lots of cleanup in the new work-stealing code, but no functional
changes.
One new statistic is added to the +RTS -s output:
SPARKS: 1430 (2 converted, 1427 pruned)
lets you know something about the use of `par` in the program.
berthold@mathematik.uni-marburg.de [Mon, 15 Sep 2008 13:28:46 +0000 (13:28 +0000)]
Work stealing for sparks
Spark stealing support for PARALLEL_HASKELL and THREADED_RTS versions of the RTS.
Spark pools are per capability, separately allocated and held in the Capability
structure. The implementation uses Double-Ended Queues (deque) and cas-protected
access.
The write end of the queue (position bottom) can only be used with
mutual exclusion, i.e. by exactly one caller at a time.
Multiple readers can steal()/findSpark() from the read end
(position top), and are synchronised without a lock, based on a cas
of the top position. One reader wins, the others return NULL for a
failure.
Work stealing is called when Capabilities find no other work (inside yieldCapability),
and tries all capabilities 0..n-1 twice, unless a theft succeeds.
Inside schedulePushWork, all considered cap.s (those which were idle and could
be grabbed) are woken up. Future versions should wake up capabilities immediately when
putting a new spark in the local pool, from newSpark().
Patch has been re-recorded due to conflicting bugfixes in the sparks.c, also fixing a
(strange) conflict in the scheduler.
Simon Marlow [Thu, 23 Oct 2008 08:06:48 +0000 (08:06 +0000)]
include an elapsed time table
Simon Marlow [Thu, 23 Oct 2008 08:06:29 +0000 (08:06 +0000)]
generate a valid summary for older GHC versions too
simonpj@microsoft.com [Wed, 22 Oct 2008 14:51:38 +0000 (14:51 +0000)]
Fix Trac #2714 (a minor wibble)
In boxy_match (which is a pure function used by preSubType) we can
encounter TyVars not just TcTyVars; this patch takes account of that.
Manuel M T Chakravarty [Tue, 21 Oct 2008 13:17:21 +0000 (13:17 +0000)]
Reject programs with superclass equalities for now
- The current implementation of type families cannot properly deal
with superclass equalities. Instead of making a half-hearted attempt at
supporting them, which mostly ends in cryptic error message, rejecting
right away with an appropriate message.
MERGE TO 6.10
Ian Lynagh [Tue, 21 Oct 2008 18:33:17 +0000 (18:33 +0000)]
Fix doc syntax
Ian Lynagh [Tue, 21 Oct 2008 16:25:43 +0000 (16:25 +0000)]
Don't put the README file in the Windows installer; fixes trac #2698
The README file talks about getting and building the sources, which
doesn't make sense for the installer.
simonpj@microsoft.com [Tue, 21 Oct 2008 15:14:01 +0000 (15:14 +0000)]
Comments and parens only
simonpj@microsoft.com [Tue, 21 Oct 2008 14:31:56 +0000 (14:31 +0000)]
Do proper cloning in worker/wrapper splitting
See Note [Freshen type variables] in WwLib. We need to clone type
variables when building a worker/wrapper split, else we simply get
bogus code, admittedly in rather obscure situations. I can't quite
remember what program showed this up, unfortunately, but there
definitely *was* one! (You get a Lint error.)
simonpj@microsoft.com [Tue, 21 Oct 2008 14:30:19 +0000 (14:30 +0000)]
Don't float an expression wrapped in a cast
There is no point in floating out an expression wrapped in a coercion;
If we do we'll transform
lvl = e |> co [_$_]
to
lvl' = e; lvl = lvl' |> co
and then inline lvl. Better just to float out the payload (e).
simonpj@microsoft.com [Tue, 21 Oct 2008 14:29:22 +0000 (14:29 +0000)]
Fix Trac #2668, and refactor TcDeriv
TcDeriv deals with both standalone and ordinary 'deriving';
and with both data types and 'newtype deriving'. The result
is really rather compilcated and ad hoc. Ryan discovered
#2668; this patch fixes that bug, and makes the internal interfces
#more uniform. Specifically, the business of knocking off
type arguments from the instance type until it matches the kind of the
class, is now done by derivTyData, not mkNewTypeEqn, because the
latter is shared with standalone derriving, whree the trimmed
type application is what the user wrote.
simonpj@microsoft.com [Sun, 19 Oct 2008 23:35:11 +0000 (23:35 +0000)]
Spelling error in comment
simonpj@microsoft.com [Sun, 19 Oct 2008 23:33:52 +0000 (23:33 +0000)]
White space only
simonpj@microsoft.com [Sun, 19 Oct 2008 18:42:08 +0000 (18:42 +0000)]
Comments to explain strict overlap checking for type family instances
simonpj@microsoft.com [Tue, 23 Sep 2008 14:05:35 +0000 (14:05 +0000)]
Allow type families to use GADT syntax (and be GADTs)
We've always intended to allow you to use GADT syntax for
data families:
data instance T [a] where
T1 :: a -> T [a]
and indeed to allow data instances to *be* GADTs
data intsance T [a] where
T1 :: Int -> T [Int]
T2 :: a -> b -> T [(a,b)]
This patch fixes the renamer and type checker to allow this.
simonpj@microsoft.com [Tue, 23 Sep 2008 13:54:19 +0000 (13:54 +0000)]
Improve crash message from applyTys and applyTypeToArgs
simonpj@microsoft.com [Sat, 20 Sep 2008 23:22:56 +0000 (23:22 +0000)]
Wibble to ungrammatical error message
simonpj@microsoft.com [Sat, 20 Sep 2008 23:20:24 +0000 (23:20 +0000)]
Comments only: replace ":=:" by "~" (notation for equality predicates)
Manuel M T Chakravarty [Tue, 21 Oct 2008 12:01:07 +0000 (12:01 +0000)]
FIX #2693
- As long as the first reduceContext in tcSimplifyRestricted potentially
performs improvement, we need to zonk again before the second reduceContext.
It would be better to prevent the improvement in the first place, but given
the current situation zonking is definitely the right thing to do.
MERGE TO 6.10
Judah Jacobson [Mon, 20 Oct 2008 16:41:09 +0000 (16:41 +0000)]
Restore the terminal attributes even if ghci does not exit normally.
Manuel M T Chakravarty [Tue, 21 Oct 2008 04:42:13 +0000 (04:42 +0000)]
FIX #2688
- Change in TcSimplify.reduceContext:
We do *not* go around for new extra_eqs. Morally, we should,
but we can't without risking non-termination (see #2688). By
not going around, we miss some legal programs mixing FDs and
TFs, but we never claimed to support such programs in the
current implementation anyway.
MERGE TO 6.10
Thomas Schilling [Tue, 14 Oct 2008 13:40:16 +0000 (13:40 +0000)]
Move documentation within 80 column boundary.
Thomas Schilling [Tue, 14 Oct 2008 13:38:33 +0000 (13:38 +0000)]
Improve haddock documentation for 'GHC.topSortModuleGraph'.
Thomas Schilling [Tue, 14 Oct 2008 13:37:40 +0000 (13:37 +0000)]
Improve haddock documentation for HsExpr module.
Thomas Schilling [Tue, 14 Oct 2008 13:35:56 +0000 (13:35 +0000)]
Improve Haddock-markup for HsDecls module.
Thomas Schilling [Mon, 20 Oct 2008 11:14:10 +0000 (11:14 +0000)]
Run Haddock with compacting GC and show RTS statistics.
Simon Marlow [Mon, 20 Oct 2008 12:11:03 +0000 (12:11 +0000)]
FIX (partially) #2703: bug in stack overflow handling when inside block
As a result of a previous ticket (#767) we disabled the generation of
StackOverflow exceptions when inside a Control.Exception.block, on the
grounds that StackOverflow is like an asynchronous exception. Instead
we just increase the stack size. However, the stack size calculation
was wrong, and ended up not increasing the size of the stack, with the
result that the runtime just kept re-allocating the stack and filling
up memory.