darcs patches and questions
Esa Ilari Vuokko
eivuokko at gmail.com
Sun Aug 13 16:08:11 EDT 2006
Hi,
Attached are few patches, and few related questions.
*** Patches to ghc
Fri Aug 11 21:07:21 FLE Standard Time 2006 Esa Ilari Vuokko <ei at vuokko.info>
* Include ghcplatform.h for primops' benefit in Windows
This patch is needed to generate all the primops for async-stuff under
mingw. One of the recent patches removed the include that had hostos
defines, this adds the minimal (I think) include needed.
Sat Aug 12 05:09:01 FLE Standard Time 2006 Esa Ilari Vuokko <ei at vuokko.info>
* Add few more guesses where to find bits of mingw-gcc
This adds some paths to make install so that it actually generates
usable snapshots on *my mingw*. The gcc paths appear to change between
versions. The old paths stay as well, no harm in having those.
I'd like to submit patch that adds atleast strip and windows resource
compiler to the binary distribution, would that be ok?
In previous binary distros, we have libgcj.a also, it has size of 19 megs
or so, and I am fairly sure it's not needed anything, or even usable, so
I think we could add explicit rm for it after copying all the mingw libs.
That'd cut gcc-lib uncompressed size from 50 megs to 30 megs (roughly).
And few patches to fix warnings:
Sun Aug 13 14:10:29 FLE Standard Time 2006 Esa Ilari Vuokko <ei at vuokko.info>
* Remove few format-warnings by adding casts
Sun Aug 13 03:22:16 FLE Standard Time 2006 Esa Ilari Vuokko <ei at vuokko.info>
* Remove warning: Correct includes for mingw
I hope these are straightforward enough.
*** Testsuite fix
Sun Aug 13 15:46:49 FLE Standard Time 2006 Esa Ilari Vuokko <ei at vuokko.info>
* Fix driver not to normalise output when using platform specific output files
I wanted to fix getDirContents001, in which the test fails because
normalised output differs from (otherwise correct) platform specific output
file. That seemed wrong to me, and hence the patch for the testlib.py.
I'm not sure if it's correct ideologically, but it works for me. Running
full testsuite resulted in no regressions on my mingw build (especially
no framework failures. Except concurrency stuff, which seems flaky anyway,
and I don't think it was because of my changes.
Best regards,
--Esa
-------------- next part --------------
New patches:
[Include ghcplatform.h for primops' benefit in Windows
Esa Ilari Vuokko <ei at vuokko.info>**20060811180721] {
hunk ./compiler/Makefile 611
-SRC_HC_OPTS += '-\#include "cutils.h"'
+SRC_HC_OPTS += '-\#include "cutils.h"' '-\#include "ghcplatform.h"'
}
[Add few more guesses where to find bits of mingw-gcc
Esa Ilari Vuokko <ei at vuokko.info>**20060812020901] {
hunk ./Makefile 150
+ -cp -rp $(GccDir)../lib/gcc/mingw32/$(GccVersion)/* $(prefix)/gcc-lib
+ -cp -rp $(GccDir)../libexec/gcc/mingw32/$(GccVersion)/* $(prefix)/gcc-lib
}
[Remove warning: Correct includes for mingw
Esa Ilari Vuokko <ei at vuokko.info>**20060813002216] {
hunk ./rts/RaiseAsync.c 21
+#if defined(mingw32_HOST_OS)
+#include "win32/IOManager.h"
+#endif
}
[Remove few format-warnings by adding casts
Esa Ilari Vuokko <ei at vuokko.info>**20060813111029] {
hunk ./rts/win32/AsyncIO.c 164
- fprintf(stderr, "startupAsyncIO: CreateSemaphore failed 0x%x\n", rc);
+ fprintf(stderr, "startupAsyncIO: CreateSemaphore failed 0x%x\n", (int)rc);
hunk ./rts/win32/AsyncIO.c 303
- fprintf(stderr, "awaitRequests: failed to signal semaphore (error code=0x%x)\n", dw);
+ fprintf(stderr, "awaitRequests: failed to signal semaphore (error code=0x%x)\n", (int)dw);
}
Context:
[Warning police: Removed overlapped pattern warnings
sven.panne at aedion.de**20060811151353]
[Complete -fmono-pat-binds patch
simonpj at microsoft.com**20060811142842
When adding the experimental -fmono-pat-binds, I forgot to check
for type signatures of the now-monomorphic patterns. This patch
completes the job.
I documented the design too:
http://haskell.galois.com/cgi-bin/haskell-prime/trac.cgi/wiki/MonomorphicPatternBindings
]
[Avoid warning about overlapped pattern for Linux target
sven.panne at aedion.de**20060811140512]
[Improve error message layouts
simonpj at microsoft.com**20060811133317]
[Add type signature
simonpj at microsoft.com**20060811133302]
[Improve the "could not find module" error message
Simon Marlow <simonmar at microsoft.com>**20060811132135
In particular, if we're searching for the profiling version of a
module in another package, then suggest that perhaps it might not have
been installed.
]
[On FreeBSD, use -lthr instead of -pthread for now (see comments)
Simon Marlow <simonmar at microsoft.com>**20060811113453]
[Two more error message indendations
simonpj at microsoft.com**20060811110435]
[Go back to calling type veriables t
simonpj at microsoft.com**20060811110412]
[Indent an error message
simonpj at microsoft.com**20060811110347]
[Improve error message (imported from Prelude at Implicit import declaration)
simonpj at microsoft.com**20060811110301]
[don't qualify module name for importedSrcLoc
Simon Marlow <simonmar at microsoft.com>**20060811101327]
[use "Defined in" rather than "Imported from" when printing ImportedSrcLoc
Simon Marlow <simonmar at microsoft.com>**20060811101159]
[Now that we have an "html" package, put the Haddock docs somewhere else
sven.panne at aedion.de**20060811092609]
[Nuked hschooks.h in favour of cutils.h, which has the prototypes we need
sven.panne at aedion.de**20060810154225]
[Match format strings and arguments for printf-like functions
sven.panne at aedion.de**20060810153624]
[Warning police: Make prototype for LDV_recordDead_FILL_SLOP_DYNAMIC visible
sven.panne at aedion.de**20060810144837]
[Warning police: Make strlen and friends known
sven.panne at aedion.de**20060810144729]
[Tweak GCC's inlining parameters to get thread_obj inlined
sven.panne at aedion.de**20060810144505]
[Add an IAmDead case to postInlineUnconditionally, and comments
simonpj at microsoft.com**20060810142034]
[Do not repeatedly simplify an argument more than once
simonpj at microsoft.com**20060810141526
A very important invariant of the simplifier is that we do not simplify
an arbitrarily large expression more than once in a single pass. If this
can happen, then we can get exponential behaviour, when the large expression
itself has a large sub-expression which is simplified twice, and so on.
GHC has a long-standing bug which allows this repeated simplification to
happen. It shows up when we have a function like this
f d BIG
where f's unfolding looks like
\x -> case x of (a,b) -> a
Of course this is v common for overloaded functions.
Before this patch we simplified all the args (d and BIG) before
deciding to unfold f. Then we push back the simplified BIG onto the
continuation stack, inline f, so now we have
(case d of (a,b) -> a) BIG
After we reduce the case a bit, we'll simplify BIG a second time. And
that's the problem.
The quick-and-dirty solution is to keep a flag in the ApplyTo continuation
to say whather the arg has already been simplified. An alternative would
be to simplify it when first encountered, but that's a bigger change.
]
[Do not call preInlineUnconditionally in simplNonRecX
simonpj at microsoft.com**20060810141340
This looks to me like a long-standing bug. simplNonRecX was calling
preInlineUnconditionally, even though it was given an already-simplified
expression. Exponential behaviour beckons.
]
[Make postInlineUnconditaionally more conservative
simonpj at microsoft.com**20060810141145
I'm being more paranoid about repeatedly simplifying things (to avoid
exponential behaviour.) postInlineUnconditionally looks as if it
could repeated simplify the same expression; this patch stops it doing
so.
The extra lines are all comments!
]
[Control.Exception.unblock wasn't unblocking exceptions
Simon Marlow <simonmar at microsoft.com>**20060810132307]
[remove out of date comment
Simon Marlow <simonmar at microsoft.com>**20060810130154]
[move html before network, for now
Simon Marlow <simonmar at microsoft.com>**20060810121930]
[add html package
Simon Marlow <simonmar at microsoft.com>**20060810113719]
[Egregious bug in tcLHsConResTy
simonpj at microsoft.com**20060810120828
This terrible bug in tcLHsConTy is pretty much guaranteed to show up
on an program involving a GADT with more than one type parameter.
This bug isn't present in the STABLE branch.
Manuel: it is *not* necesary to merge this patch into the FC branch;
just ignore it.
]
[Comments about improvements to SpecConstr
simonpj at microsoft.com**20060810120759]
[Remove HasBounds-instance and implement MArray.getBounds instead
Esa Ilari Vuokko <ei at vuokko.info>**20060809163012]
[Fix Array imports
Esa Ilari Vuokko <ei at vuokko.info>**20060809161341]
[Where we use $(GhcHcOpts), also add $(GhcStage1HcOpts)
Simon Marlow <simonmar at microsoft.com>**20060809144845
This fixes building the compiler with -prof in $(GhcStage1HcOpts)
]
[fixes to the stage2 build following removal of old FFI syntax
Simon Marlow <simonmar at microsoft.com>**20060809143153]
[fix bug in task freeing
Simon Marlow <simonmar at microsoft.com>**20060809141225]
[add some more options to stage 2
Simon Marlow <simonmar at microsoft.com>**20060809141058]
[remove debugging code accidentally left in
Simon Marlow <simonmar at microsoft.com>**20060809102936]
[remember that old FFI syntax has been dropped
Simon Marlow <simonmar at microsoft.com>**20060809101655]
[only define GHCI if $(GhcWithInterpreter)=YES, also add -threaded
Simon Marlow <simonmar at microsoft.com>**20060809101634]
[move altzone test to base package
Ross Paterson <ross at soi.city.ac.uk>**20060809124215]
[remove unused FPTOOLS_CHECK_HTYPE macro
Ross Paterson <ross at soi.city.ac.uk>**20060809124036]
[Remove the artifical cap on the number of workers
Simon Marlow <simonmar at microsoft.com>**20060809095908
See #805. This was here to catch bugs that resulted in an infinite
number of worker threads being created. However, we can't put a
reasonable bound on the number of worker threads, because legitimate
programs may need to create large numbers of (probably blocked) worker
threads. Furthermore, the OS probably has a bound on the number of
threads that a process can create in any case.
]
[Remove old FFI syntax
Simon Marlow <simonmar at microsoft.com>**20060809095201
See #815
]
[make exit() overridable, for use in DLLs
Simon Marlow <simonmar at microsoft.com>**20060809092439
See #753
]
[More fixes to pre-matching and pre-subsumption
simonpj at microsoft.com**20060808224924
Actually this patch fixes two errors. one was a trivial typo in
tha last patch (b_ty should be b_tau), which led to an infinite loop
when compiling Data.Generic.Twins.
Fixing that revealed a more serious error in the same function.
I was sloppy about dealing robsutly with name-capture for nested
quantifiers in pre-subsumption and pre-matching; and sure enough
I got bitten. Sigh. I think it is right now.
]
[Group exports so that all length functions are together; no semantic change
simonpj at microsoft.com**20060808224808]
[Check that lazy patterns are for lifted types
simonpj at microsoft.com**20060808135910
A lazy pattern match must be for a lifted type. This is illegal:
f x = case g x of
~(# x,y #) -> ...
This commit fixes the problem. Trac #845, test is tcfail159
]
[Spelling in a comment
simonpj at microsoft.com**20060808123514]
[Remove srcSpanStartLine/srcSpanEndLine crash
simonpj at microsoft.com**20060808123211
srcSpanStartLine/srcSpanEndLine panic on UnhelpfulLoc. They should not
really be exported by SrcLoc at all, but unfortunately they are used in
Lexer.x, which knows enough to avoid the panic.
However the call in RnEnv didn't know, and the panic was triggered
by Template Haskell spliced code. This patch fixes it by exporting
the predicate RnEnv wanted, namely isOneLineSpan.
]
[Replace deprecated AC_TRY_COMPILE macro with the reccomended replcament
Duncan Coutts <duncan.coutts at worc.ox.ac.uk>**20060706114902
See: http://www.gnu.org/software/autoconf/manual/html_node/Obsolete-Macros.html
]
[Add ghc and version number in .ident directive in NCG
Duncan Coutts <duncan.coutts at worc.ox.ac.uk>**20060706114712
Just because we can and because every other compiler does,
lets stick in an identifier directive: .ident "GHC x.y.z"
into the assembly output of the NCG.
]
[Support the GNU non-exec stack annotation system
Duncan Coutts <duncan.coutts at worc.ox.ac.uk>**20060706114331
On recent GNU ELF systems one can mark an object file as not
requiring an executable stack. If all objects- linked into a
program have this note then the program will not use an executable
stack, which is good for security (and some distros have it as a
QA policy). GHC generated code does not need an executable stack
so add the note to the assembly output of the native code
generator (conditional on a configure test).
]
[Complain more loudly if any of the hsc2hs phases fail
Duncan Coutts <duncan.coutts at worc.ox.ac.uk>**20060703234356
previously hsc2hs just exits with a non-zero exit code, now if any of
the compilation, linking or runing phases fail then we get a message
saying so and the failing command is printed.
]
[Remember to free() memory on exit
Simon Marlow <simonmar at microsoft.com>**20060808103110
Patch mostly from Lennart Augustsson in #803, with additions to
Task.c by me.
]
[Fix pre-subsumption and pre-matching
simonpj at microsoft.com**20060808091108
The pre-subsuption and pre-matching functions should NEVER make bogus
bindings of type variables, although they are free to bale out and make
too few bindings.
I hadn't been thiking carefully enough about this, and there were two
separate bugs.
- Firstly, in pre-subsumption we must ignore the 'theta'
part of any overloaded type.
- Second, in pre-matching, we must return the empty subustition
on a mis-match, rather than returning the substitution so far.
This bug showed up when compiling Data.Generics.Schemes.hs, and is
imortalised in test tc206
]
[Improve error message
simonpj at microsoft.com**20060808080255
Improve a little-used error message. Given
f :: a -> a
f x y = e
the error says
The equations for f have two arguments
but its type `a -> a' has only one
(Before, it said "its type `a' has only one" which is bogus.
]
[Pull out common removal code, and detect does-not-exist correctly
Ian Lynagh <igloo at earth.li>**20060710214308]
[Create our own directory in the temporary directory to avoid various races
Ian Lynagh <igloo at earth.li>**20060710204424]
[Merge SysTools import declarations
Ian Lynagh <igloo at earth.li>**20060709183850]
[Don't freeze the dynamic flags used for filename generation before the pipeline starts
Ian Lynagh <igloo at earth.li>**20060709145101]
[#807: Removed double fclose of prof_file
Ian Lynagh <igloo at earth.li>**20060708152424
prof_file was being fclose'd in both gen_XML_logfile and hs_exit, leading
to glibc complaining of a double free.
]
[Add -fextended-default-rules and -fmono-pat-binds
simonpj at microsoft.com**20060807112107
Add -fextended-deafult-rules (in response to Don Stewart's message below),
and document them.
Also doucument -fmono-pat-binds/-fno-mono-pat-binds, which has been in
GHC a few weeks now.
(The two are in one patch because the diffs were so close together
that Darcs combined them.)
Simon
From: Donald Bruce Stewart [mailto:dons at cse.unsw.edu.au]
Sent: 07 August 2006 10:52
While we're thinking about defaulting, I have a question..
ghci uses an extended defaulting system, to allow things like:
Prelude> reverse []
[]
to work, and to have the right instance of Show found. The manual says:
"..it is tiresome for the user to have to specify the type, so GHCi extends
Haskell's type-defaulting rules (Section 4.3.4 of the Haskell 98 Report
(Revised)) as follows. If the expression yields a set of type constraints
that are all from standard classes (Num, Eq etc.), and at least one is
either a numeric class or the Show, Eq, or Ord class, GHCi will try to use
one of the default types, just as described in the Report. The standard
defaulting rules require that one of the classes is numeric; the difference
here is that defaulting is also triggered at least one is Show, Eq, or Ord."
Currently, there is no way to get at this "extended" defaulting for compiled
modules. However, I have a use case for in fact doing this.
With runtime evaluated Haskell, embedding 'interpreters' (over hs-plugins) is
easy. lambdabot, for example, implements a sandboxed haskell eval system. But
it doesn't have access to the defaulting mechanism of ghci, so we have:
dons:: > reverse []
lambdabot:: Add a type signature
dons:: > reverse [] :: [()]
lambdabot:: []
Which is annoying -- newbies wonder why they have to add these extra
constraints to get a Show instance.
I'm wondering, since the extended defaulting mechanisms are already
implemented, could they be made available to compiled modules as well,
perhaps using a flag, -fextended-defaulting?
]
[add a comment
Simon Marlow <simonmar at microsoft.com>**20060807143102]
[Do pre-subsumption in the main subsumption check
simonpj at microsoft.com**20060804214942
This patch improves the subsumption check (in TcUnify.tc_sub) so that
it does pre-subsumption first. The key code is in the case with
guard (isSigmaTy actual_ty); note the new call to preSubType.
Shorn of details, the question is this. Should this hold?
forall a. a->a <= Int -> (forall b. Int)
Really, it should; just instantiate 'a' to Int. This is just what
the pre-subsumption phase (which used in function applications),
will do.
I did a bit of refactoring to achieve this.
Fixes Trac #821. Test tc205 tests.
]
[Make unification robust to a boxy type variable meeting itself
simonpj at microsoft.com**20060801214302
Previously, the implicit assumption in unification is that a boxy
type variable could never occur on both sides of the unification,
so that we'd never find
bx5 :=: bx5
But the pre-subsumption stuff really means that the same variable
can occur on both sides. Consider
forall a. a->Int <= bx5->Int
Then pre-subumption will find a->bx5; and the full subsumption step
will find bx5:=bx5.
However, I think there is still no possiblity of a full occurs-check
failure; that is,
bx5 :=: Tree bx5
Although I can't quite see how to prove it! So I've added a
DEBUG test in uMetaVar to check for this case.
]
[Added cabal-setup
sven.panne at aedion.de**20060804142149]
[Don't include the package name in a cost centre's module name
Simon Marlow <simonmar at microsoft.com>**20060803093337
This is mainly to restore the old behaviour, but also we shouldn't
normally need the package name in a cost centre because only the
"main" package normally has cost centres.
]
[Add a new section "Getting the Source" to both HACKING and README. But what about win32 users?
shae at ScannedInAvian.com**20060720152929]
[savingOldConfig: add Exception.block for extra paranoia
Simon Marlow <simonmar at microsoft.com>**20060801131027
]
[Refactor ghc-pkg
Ian Lynagh <igloo at earth.li>**20060729192946
This patch fixes a couple of issues with the
Be lazier in user config creation, and don't fail on missing configs.
patch. It puts the createDirectoryIfMissing back in and removes assumptions
that the package.conf file already exists.
]
[No functionality changes
Ian Lynagh <igloo at earth.li>**20060730105256
Consistently used spaces rather than tabs.
Removed trailing whitespace.
Wrapped comments to fit in a standard terminal.
]
[Add notes about unsafeCoerce
simonpj at microsoft.com**20060731080922]
[.hi-boot-5 is obsolete; the earliest GHC we support uses .hi-boot-6
Simon Marlow <simonmar at microsoft.com>**20060728140809
]
[update to match .lhs-boot
Simon Marlow <simonmar at microsoft.com>**20060728140607]
[get ReadP from the right place.
Simon Marlow <simonmar at microsoft.com>**20060728140444
]
[Improve error message for deriving
simonpj at microsoft.com**20060727160832]
[Lazy patterns are like wild-cards for overlap warnings
simonpj at microsoft.com**20060727155009
MERGE TO STABLE
Fixes Trac #827
Test is should_compiler/ds058
]
[fix some problems with wired-in packages
Simon Marlow <simonmar at microsoft.com>**20060727153802]
[oops, remove old packages when updating
Simon Marlow <simonmar at microsoft.com>**20060727150650]
[fix symbols for GHC.PrimopWrappers
Simon Marlow <simonmar at microsoft.com>**20060727134755]
[a couple more symbols need package names
Simon Marlow <simonmar at microsoft.com>**20060727102129]
[Add missing import
simonpj at microsoft.com**20060727085605]
[Make -fcontext-stack into a dynamic flag
simonpj at microsoft.com**20060727080422
This allows you to put -fcontext-stack into an options pragma,
as requested by Trac #829
While I was at it, I added OptIntPrefix to the forms allowed
in CmdLineParser.
]
[Deal correctly with infix type constructors in GADT decls
simonpj at microsoft.com**20060726225304]
[Improve pretty printing of ConDecl
simonpj at microsoft.com**20060726225223]
[fix parse error (merge-o, I think)
Simon Marlow <simonmar at microsoft.com>**20060726103526]
[fix DEBUG build
Simon Marlow <simonmar at microsoft.com>**20060726103433]
[missed one symbol that needs a package name
Simon Marlow <simonmar at microsoft.com>**20060726085844]
[change wired-in Haskell symbols to include the package name
Simon Marlow <simonmar at microsoft.com>**20060726084659]
[Unbox the Unique stored in a Name
Simon Marlow <simonmar at microsoft.com>**20060725141747
I measured that this makes the comiler allocate a bit more, but it
might also make it faster and reduce residency. The extra allocation
is probably just because we're not inlining enough somewhere, so I
think this change is a step in the right direction.
]
[optimisations to newUnique
Simon Marlow <simonmar at microsoft.com>**20060725140816
It turned out that newUnique was wasting one node of the splittable
uniq supply per invocation: it took the current supply, split it, used
the unique from one half and stored the other half in the monad. In
other words, the unique in the supply stored in the monad was never
used.
This optimisation fixes that and adds a bit of strictness, which
together lead to small reduction in allocations by the compiler, and
possibly an improvement in residency (hard to tell for sure when GCs
move around).
]
[tiny bit of extra strictness
Simon Marlow <simonmar at microsoft.com>**20060725131201]
[Make a SplitUniqSupply contain an Int# rather than an Int
Simon Marlow <simonmar at microsoft.com>**20060725120252
The I# constructor is always removed when we make a unique later
anyway, so this just saves a bit of time and allocation.
]
[Use -package-name rather than -ignore-package
Simon Marlow <simonmar at microsoft.com>**20060725130913]
[Remove most of the conflict checking and auto-hiding
Simon Marlow <simonmar at microsoft.com>**20060725130850
Now that the module restriction has been lifted, the auto-hiding is
mostly not required. GHC itself automatically hides old versions of a
package.
]
[Generalise Package Support
Simon Marlow <simonmar at microsoft.com>**20060725130154
This patch pushes through one fundamental change: a module is now
identified by the pair of its package and module name, whereas
previously it was identified by its module name alone. This means
that now a program can contain multiple modules with the same name, as
long as they belong to different packages.
This is a language change - the Haskell report says nothing about
packages, but it is now necessary to understand packages in order to
understand GHC's module system. For example, a type T from module M
in package P is different from a type T from module M in package Q.
Previously this wasn't an issue because there could only be a single
module M in the program.
The "module restriction" on combining packages has therefore been
lifted, and a program can contain multiple versions of the same
package.
Note that none of the proposed syntax changes have yet been
implemented, but the architecture is geared towards supporting import
declarations qualified by package name, and that is probably the next
step.
It is now necessary to specify the package name when compiling a
package, using the -package-name flag (which has been un-deprecated).
Fortunately Cabal still uses -package-name.
Certain packages are "wired in". Currently the wired-in packages are:
base, haskell98, template-haskell and rts, and are always referred to
by these versionless names. Other packages are referred to with full
package IDs (eg. "network-1.0"). This is because the compiler needs
to refer to entities in the wired-in packages, and we didn't want to
bake the version of these packages into the comiler. It's conceivable
that someone might want to upgrade the base package independently of
GHC.
Internal changes:
- There are two module-related types:
ModuleName just a FastString, the name of a module
Module a pair of a PackageId and ModuleName
A mapping from ModuleName can be a UniqFM, but a mapping from Module
must be a FiniteMap (we provide it as ModuleEnv).
- The "HomeModules" type that was passed around the compiler is now
gone, replaced in most cases by the current package name which is
contained in DynFlags. We can tell whether a Module comes from the
current package by comparing its package name against the current
package.
- While I was here, I changed PrintUnqual to be a little more useful:
it now returns the ModuleName that the identifier should be qualified
with according to the current scope, rather than its original
module. Also, PrintUnqual tells whether to qualify module names with
package names (currently unused).
Docs to follow.
]
[comment formatting
Simon Marlow <simonmar at microsoft.com>**20060725110519
]
[unused import
Simon Marlow <simonmar at microsoft.com>**20060706141349]
[unused import
Simon Marlow <simonmar at microsoft.com>**20060706141205]
[remove more Addr bits
Simon Marlow <simonmar at microsoft.com>**20060704151217]
[unused import
Simon Marlow <simonmar at microsoft.com>**20060704141319]
[add default cases
Simon Marlow <simonmar at microsoft.com>**20060704135444]
[redundant import
Simon Marlow <simonmar at microsoft.com>**20060704135435]
[unused imports
Simon Marlow <simonmar at microsoft.com>**20060704135117]
[unused import
Simon Marlow <simonmar at microsoft.com>**20060704134557]
[remove unused bits, mostly to do with the Addr type
Simon Marlow <simonmar at microsoft.com>**20060704124912]
[In interface files, store FastStrings rather than OccNames where possible
Simon Marlow <simonmar at microsoft.com>**20060724154826
In all cases the namespace is known from the context, so this saves 1
byte per variable binding/occurrence (a few percent per iface file).
]
[Add -fmono-pat-binds, and make it the default
simonpj at microsoft.com**20060722102245
In Haskell 98, pattern bindings are generalised. Thus in
(f,g) = (\x->x, \y->y)
both f and g will get polymorphic types. I have become convinced
that generalisation for pattern-bound variables is just a bridge
toof far. It is (I claim) almost never needed, and it adds significant
complication. (All the more so if we add bang patterns.)
So the flag -fmono-pat-binds switches off generalisation for pattern
bindings. (A single variable is treated as a degnerate funtction
binding.)
Furthremore, as an experiment, I'm making it the default. I want
to see how many progarms fail with monomorphic pattern bindings.
You can recover the standard behaviour with -fno-mono-pa-binds.
]
[Fix RULES lossage
simonpj at microsoft.com**20060722101756
Don Stewart and Duncan Coutts encountered the following situation.
f = <rhs>
{-# RULES f ... #-}
where f is not exported, but appears in the inlinings of other
functions that are exported. Then what happened was that the desugarer
produced this:
M.f = f
f = <rhs>
where the rules get attached to the M.f. But since M.f's RHS is trivial
(just f) it was unconditionally inlinined at all its call sites,
thereby losing the RULES attached to it.
This *is* a fragile aspect of rules. However this fix solves the
problem by instead generating
f = M.f
M.f = <rhs>
A pretty small chanage to the desugarer does the job. It still feels
a little fragile, bt it's certainly more robust than before.
]
[Fix broken regex
Simon Marlow <simonmar at microsoft.com>**20060721111144
Don't know how I managed to use this before... maybe a different regex
library.
]
[fix bug in sample code
Simon Marlow <simonmar at microsoft.com>**20060721083200]
[fix eran error message by reordering a couple of tests
simonmar at microsoft.com**20060719111638]
[Use a recursive error handler in case the exception causes more exceptions.
Lemmih <lemmih at gmail.com>**20060717232553]
[Check for overlap-flag differences in hi files
simonpj at microsoft.com**20060714163843
MERGE TO STABLE
I'd forgotten to compare the per-instance overlap flag when
comparing interface files, and that meant that consequential
recompilations weren't being triggered when the only change
was to add -fallow-overlapping-instances
Fixes Trac bug #824
]
[Add a clarification about overlapping instances in the manual
simonpj at microsoft.com**20060714143220]
[Comments and import trimming
simonpj at microsoft.com**20060712153306]
[Experimental flag -fdicts-cheap
simonpj at microsoft.com**20060712153204
This experimental flag, -fdicts-cheap, makes a let-binding that bind a
value of dictionary type look cheap. That in turn leads to more
eta expansion. Instead of
f = /\a. \(d1:Ord a). let d2:Ord [a] = dfOrd a d1 in
\(x:a). <stuff>
which has arity 1, you get
f = /\a. \(d1:Ord a). \(x:a).
let d2:Ord [a] = dfOrd a d1 in <stuff>
Now f has arity 2.
This can cretainly waste dictionary-construction work, if f is
partially applied to its dictionary argument. However it has knock-on
effects. Because f has arity 2, we won't float (f Int d) out of
\x. h (f Int d)
Floating f out of this lambda makes it impossible for an h/f fusion
rule to fire; and this unexpected loss of RULE application was the
immediate reason for implementing this flag. (Roman Leshchinskiy came
across this when working on array fusion.)
I've implemented the change only in CoreUtils.arityType, which
only affects eta expansion. I thought of putting the change in
exprIsCheap, which is a more systematic place (the former calls
the latter) but
a) I wanted this under flag control, and the flags
are not readily available to all callers of exprIsCheap
b) I'm not 100% convinced that this change is a good
idea, so it's reasonable to do the narrowest change
that solves the immediate problem.
]
[document that -fglasgow-exts is needed for RULES to work
Malcolm.Wallace at cs.york.ac.uk**20060712093907]
[do a better job of ignoring unrecognised pragmas
Simon Marlow <simonmar at microsoft.com>**20060712083550]
[Don't z-encode module names in external-core output
Jan Rochel <jan.rochel at stud.uka.de>**20060706131109]
[re-add -fvia-C
Simon Marlow <simonmar at microsoft.com>**20060710081522
There are still some fixes required to get the threaded RTS compilable
with the NCG, and apparently there are problems on 32-bit archs too.
]
[Be lazier in user config creation, and don't fail on missing configs.
Ian Lynagh <igloo at earth.li>**20060624230800]
[Z-Encode external-core output
Jan Rochel <jan.rochel at stud.uka.de>**20060702214438
HEAD doesn't z-encode external-core output (unlike 6.4). I suppose, that
this is unwanted behaviour. It probably results from this patch:
========================================================================
Fri Jan 6 17:30:19 CET 2006 simonmar
* [project @ 2006-01-06 16:30:17 by simonmar]
Add support for UTF-8 source files
[...]
Z-encoding has been moved right to the back end. Previously we
used to Z-encode every identifier on the way in for simplicity,
and only decode when we needed to show something to the user.
Instead, we now keep every string in its UTF-8 encoding, and
Z-encode right before printing it out.
[...]
========================================================================
Greetings
Jan
]
[Add %local-tag to external core output
Jan Rochel <jan.rochel at stud.uka.de>**20060702204559
Hello, this is my first patch contributed to GHC. If there are any
inadequacies about it (maybe like this introductory disclaimer), please
let me know about it.
So, the need for this patch arose, while I was involved with processing
hcr files (external core output) and I noticed, that the output didn't
fully conform to the specification [1].
No %local-tags were used, which turned out to be a real nuisance as it
was not possible to determine which VDEFs can be erased in a further
optimization process and which ones are exported by the module.
Since the specification does not define the meaning of the %local-tag, I
assume, it makes sense, that it tags all functions, that are not
exported by the module.
The patch does not fully comply to the specification, as in my
implementation a local tag may appear before a VDEF but not before a
VDEFG.
[1] An External Representation for the GHC Core Language
(DRAFT for GHC5.02), page 3, line 1
Greetings
Jan
]
[Remove bashisms from darcs-all
Alec Berryman <alec at thened.net>**20060703012911
darcs-all may now be run with any POSIX-compatible /bin/sh.
]
[Fix for warning message (bug #812)
Duncan Coutts <duncan.coutts at worc.ox.ac.uk>**20060704163413
say "{-# SOURCE #-}" rather than "{- SOURCE -}" in warning message.
Fixes http://hackage.haskell.org/trac/ghc/ticket/812
]
[The dict-bindings in an IPBinds need not be in dependency order
simonpj at microsoft.com**20060703151517
This appears to be a long-standing bug, discovered by BlueSpec
(ravi at bluespec.com), Trac bug #795
The problem was that in an IP binding group, the dict bindings
aren't necessarily in dependency order; and if they aren't
we get a core-lint error.
Test tc203 checks this case. (Though whether it shows up at
all depends a bit on accidental factors of binding ordering.)
]
[x86 needs -fno-unit-at-a-time too
Simon Marlow <simonmar at microsoft.com>**20060704083308
Fixes #809
]
[x86-64: fix a problem exposed by negative offsets in vector tables
Simon Marlow <simonmar at microsoft.com>**20060629140608
static relative offsets (eg .long l1-l2) are restricted to 32 bits on
x86-64 due to lack of support in the linker. The codegen, NCG and
runtime work around this, using 32-bit offsets instead of 64.
However, we were missing a workaround for vector tables, and it
happened to work by accident because the offsets were always positive
and resolved by the assembler. The bug was exposed by using the NCG
to compile the RTS, where the offsets became negative, again by
accident.
]
[No longer force -fvia-C for the RTS, it can now be compiled with the NCG
Simon Marlow <simonmar at microsoft.com>**20060629135836]
[Replace inline C functions with C-- macros in .cmm code
Simon Marlow <simonmar at microsoft.com>**20060629134726
So that we can build the RTS with the NCG.
]
[remove conditionals from definition of StgRegTable
Simon Marlow <simonmar at microsoft.com>**20060629134405
so that we can calculate deterministic offsets to some of the fields
of Capability.
]
[mpz_foo() functions are really called __gmpz_foo() in GMP
Simon Marlow <simonmar at microsoft.com>**20060629122217
gmp.h #defines mpz_foo to __gmpz_foo, so the real ABI is __gmpz_foo,
so that is what we must invoke in order to be portable here.
Similarly for mpn --> __gmpn.
]
[use the new "prim %write_barrier()" in .cmm instead of calls to wb()
Simon Marlow <simonmar at microsoft.com>**20060629120526]
[fix some problems with the fixup block code
Simon Marlow <simonmar at microsoft.com>**20060629120210
We weren't handling InBoth properly. InBoth needs to be expanded to
appropriate InReg/InMem locations *before* building the interference
graph, otherwise an InBoth will not be seen to conflict with other
InReg/InMem locations.
]
[small optimisation: eliminate more register-to-register moves
Simon Marlow <simonmar at microsoft.com>**20060629120029]
[new syntax: "prim %OP (args)" for using CallishMachOps in .cmm
Simon Marlow <simonmar at microsoft.com>**20060629115949
]
[add MO_WriteBarrier to CallishMachOps
Simon Marlow <simonmar at microsoft.com>**20060629115837
This will let us express write barriers in C--
]
[Use -fno-strict-aliasing for *all* C files in the runtime
Simon Marlow <simonmar at microsoft.com>**20060629082902
as a precautionary measure. It is definitely required for GC.c,
but it may well become necessary for other files in the future due to
our (mis-)use of the C "type system".
]
[the unlifted kind
Simon Marlow <simonmar at microsoft.com>**20060623152626]
[fix a lint-o
Simon Marlow <simonmar at microsoft.com>**20060620151901]
[fix sloppy conditionals
Simon Marlow <simonmar at microsoft.com>**20060620151758]
[fix sloppy conditionals
Simon Marlow <simonmar at microsoft.com>**20060620151039]
[fix a few sloppy conditionals caught by new test in CmmLint
Simon Marlow <simonmar at microsoft.com>**20060620150618]
[flattenCgStmts: fix a case of empty code blocks being generated
Simon Marlow <simonmar at microsoft.com>**20060620150520]
[improve a panic message
Simon Marlow <simonmar at microsoft.com>**20060620141219]
[check that the argument to CmmCondBranch is really a conditional
Simon Marlow <simonmar at microsoft.com>**20060620141204]
[Generate a new unique for each label
Simon Marlow <simonmar at microsoft.com>**20060620140106]
[Remove long-redundant FieldLabel.lhs
simonpj at microsoft.com**20060629105321]
[Add comments to SpecConstr
simonpj at microsoft.com**20060627161520]
[fix up slop-overwriting for THUNK_SELECTORS in DEBUG mode
Simon Marlow <simonmar at microsoft.com>**20060627123951]
[Make SpecConstr work better for nested functions
simonpj at microsoft.com**20060627094742
In SpecConstr.scBind, we should pass the optimised body (body') to
specialise, not the un-optimised one. In this way we'll benefit from
specialising any nested functions inside body.
Discovered by Roman.
]
[More SpecConstr tuning
simonpj at microsoft.com**20060626201709
For some reason, SpecConstr wasn't taking account of let-bound constructors:
let v = Just 4
in ...(f v)...
Now it does. An easy fix fortunately.
]
[Improve consistency checking for derived instances
simonpj at microsoft.com**20060626100034
This patch arranges that derived instances use the same instance-decl
checking code as user-defined instances. That gives greater consistency
in error messages.
Furthermore, the error description if this consistency check fails is now
much more explicit. For example, drvfail003 now says
Variable occurs more often in a constraint than in the instance head
in the constraint: Show (v (v a))
(Use -fallow-undecidable-instances to permit this)
In the derived instance
instance (Show (v (v a))) => Show (Square_ v w a)
]
[Slight improvement in TH error reporting
simonpj at microsoft.com**20060626095952]
[Improve location info when typechecking interface fiels
simonpj at microsoft.com**20060614114813]
[Fix a bug in the pretty printing of class declarations
davve at dtek.chalmers.se**20060625160826]
[Improve RULE matching a bit more
simonpj at microsoft.com**20060624160421
Consider this example (provided by Roman)
foo :: Int -> Maybe Int -> Int
foo 0 (Just n) = n
foo m (Just n) = foo (m-n) (Just n)
SpecConstr sees this fragment:
case w_smT of wild_Xf [Just A] {
Data.Maybe.Nothing -> lvl_smf;
Data.Maybe.Just n_acT [Just S(L)] ->
case n_acT of wild1_ams [Just A] { GHC.Base.I# y_amr [Just L] ->
$wfoo_smW (GHC.Prim.-# ds_Xmb y_amr) wild_Xf
}};
and correctly generates the rule
RULES: "SC:$wfoo1" [0] __forall {y_amr [Just L] :: GHC.Prim.Int#
sc_snn :: GHC.Prim.Int#}
$wfoo_smW sc_snn (Data.Maybe.Just @ GHC.Base.Int (GHC.Base.I# y_amr))
= $s$wfoo_sno y_amr sc_snn ;]
BUT we must ensure that this rule matches in the original function!
Note that the call to $wfoo is
$wfoo_smW (GHC.Prim.-# ds_Xmb y_amr) wild_Xf
During matching we expand wild_Xf to (Just n_acT). But then we must also
expand n_acT to (I# y_amr). And we can only do that if we look up n_acT
in the in-scope set, because in wild_Xf's unfolding it won't have an unfolding
at all.
Happily, fixing the bug is easy: add a call to 'lookupRnInScope' in the
(Var v2) case of 'match'.
]
[--enable-src-tree-haddock and friends are no longer required
Simon Marlow <simonmar at microsoft.com>**20060623113303
Happy, Alex and Haddock are built separately using Cabal now.
]
[fix a couple of bugs in markSparkQueue (#799)
Simon Marlow <simonmar at microsoft.com>**20060623092044]
[pull in STABLE(!) tweaks
sof at galois.com**20060622202734]
[fix for when path to GHC contains spaces, from #695
Simon Marlow <simonmar at microsoft.com>**20060622131700]
[Comment only
simonpj at microsoft.com**20060621223940]
[Transfer INLINE to specialised functions
simonpj at microsoft.com**20060621223637
When the Specialise pass generates a specialised copy of a function,
it should transfer the INLINE information to the specialised function.
Otherwise, whether or not the INLNE happens can depend on whether
specialisation happens, which seems wrong. See Note [Inline specialisation]
in Specialise.lhs
Here's the example Roman reported
primWriteMU :: UAE e => MUArr e s -> Int -> e -> ST s ()
{-# INLINE primWriteMU #-}
primWriteMU = writeMBU . unMUAPrim
------
The problem is that primWriteMU doesn't get inlined *sometimes*, which
results in code like
case Data.Array.Parallel.Unlifted.Flat.UArr.$sprimWriteMU
@ s11_X1nJ
marr_s25s
(GHC.Base.I# sc_s27F)
GHC.Base.False
new_s_a1Db
of wild3_a1Dd { (# new_s1_X1F9, r_a1Dc #) -> ...
Note the fact that we have a call to the *specialised* $sprimWriteMU.
]
[Arity and eta-expansion tuning
simonpj at microsoft.com**20060621205855
Roman found that
loop :: STRef s a -> Int -> ST s Int
loop ref n = case n of
0 -> return n
n -> loop ref (n-1)
wasn't eta-expanding nicely, despite the 'state hack'
(see Id.isStateHackType). The reason was two-fold:
a) a bug in CoreUtils.arityType (the Var case)
b) the arity of a recursive function was not being
exposed in its RHS (see commments with
SimplEnv.addLetIdInfo
The commit fixes both.
]
[documentation for TH w/ profiling
Simon Marlow <simonmar at microsoft.com>**20060621112523]
[Allow Template Haskell to be used with -prof
Simon Marlow <simonmar at microsoft.com>**20060621110436
In order for this to work, you need to build the program first in the
normal way (without -prof), and then again with -prof and a suitable
-osuf (eg. -osuf p_o). The compiler will pick up the object files
from the normal way for running TH expressions, when it sees -prof
together with -osuf. If you omit the -osuf, you get an error message:
TH_genEx.hs:12:2:
Dynamic linking required, but this is a non-standard build (eg. prof).
You need to build the program twice: once the normal way, and then
in the desired way using -osuf to set the object file suffix.
If you use -osuf, but haven't built the program the normal way first,
then you see:
TH_genEx.hs:12:2:
cannot find normal object file `TH_genExLib.o'
while linking an interpreted expression
Documentation to follow.
Fixes: #651
]
[add decl for stg_block_throwto_ret
Simon Marlow <simonmar at microsoft.com>**20060620083410]
[comment out a non-true assertion
Simon Marlow <simonmar at microsoft.com>**20060616140750]
[make compilation a little less noisy
Simon Marlow <simonmar at microsoft.com>**20060616140652]
[allow the max number of workers to scale with +RTS -N
Simon Marlow <simonmar at microsoft.com>**20060616140633]
[fix one-character error in stack check
Simon Marlow <simonmar at microsoft.com>**20060616135621]
[add STM support to the new throwTo mechanism
Simon Marlow <simonmar at microsoft.com>**20060616111937]
[remove duplicate way names (-debug -debug didn't work)
Simon Marlow <simonmar at microsoft.com>**20060616110258]
[Asynchronous exception support for SMP
Simon Marlow <simonmar at microsoft.com>**20060616103342
This patch makes throwTo work with -threaded, and also refactors large
parts of the concurrency support in the RTS to clean things up. We
have some new files:
RaiseAsync.{c,h} asynchronous exception support
Threads.{c,h} general threading-related utils
Some of the contents of these new files used to be in Schedule.c,
which is smaller and cleaner as a result of the split.
Asynchronous exception support in the presence of multiple running
Haskell threads is rather tricky. In fact, to my annoyance there are
still one or two bugs to track down, but the majority of the tests run
now.
]
[make rmp_tmp_w an StgWord instead of StgInt
Simon Marlow <simonmar at microsoft.com>**20060616102311]
[__compat_long_path_size(): have proto and defn agree on return type
sof at galois.com**20060614164650]
[call wakeUpRts() in the correct place
Simon Marlow <simonmar at microsoft.com>**20060614134728]
[readerProc: split up text output using host's line termination convention
sof at galois.com**20060613232605]
[Improve pretty-printing for bags
simonpj at microsoft.com**20060612114020]
[Make scoped type variables work for default methods
simonpj at microsoft.com**20060612113855
Consider
class C a where
op :: forall b. a -> b -> b
op = <rhs>
Then 'b' should be in scope in <rhs>. I had omitted this case.
This patch fixes it.
]
[And move 'Chasing ...' messages into verbosity 2 as well
Don Stewart <dons at cse.unsw.edu.au>**20060612084656]
[Emit 'linking not required' messages only with -v 2 or above.
Don Stewart <dons at cse.unsw.edu.au>**20060611071041
Similar in philosophy to the 'Skipping' patch, this is another case of
printing noisy messages when no work is being done. This patch makes the
building-when-nothing-to-do case smoother.
]
[Don't emit 'Skipping' messages unless -v2 or higher is on
Don Stewart <dons at cse.unsw.edu.au>**20060610145713
Following GNU make, this patch makes GHC not emit messages about modules
its skipping. This makes builds much quieter, and its a lot easier to
work out what effects a change had on the code.
The current behaviour can be recovered with -v2
]
[fix the stage3 build
Simon Marlow <simonmar at microsoft.com>**20060612084114]
[oops, undo accidental commit of version number
Simon Marlow <simonmar at microsoft.com>**20060612083520]
[Move readline configuration into the readline package
Simon Marlow <simonmar at microsoft.com>**20060609135840]
[fix possible ^C problems
Simon Marlow <simonmar at microsoft.com>**20060608144457
Calling prodAllCapabilities() from interruptStgRts() was wrong, for
the same reasons that we stopped doing it in handle_tick(). We now
use the same mechanism (send a byte down the pipe to the IO manager
thread), but abstract it in a wakeUpRts() function in the scheduler.
]
[New tracing interface
Simon Marlow <simonmar at microsoft.com>**20060608144210
A simple interface for generating trace messages with timestamps and
thread IDs attached to them. Most debugging output goes through this
interface now, so it is straightforward to get timestamped debugging
traces with +RTS -vt. Also, we plan to use this to generate
parallelism profiles from the trace output.
]
[fix warnings
Simon Marlow <simonmar at microsoft.com>**20060608143635]
[fix warnings
Simon Marlow <simonmar at microsoft.com>**20060608143520]
[Make it so that StgWord/StgInt are longs
Simon Marlow <simonmar at microsoft.com>**20060608143438
This means we can use a %ld format specifier for StgWord/StgInt with
printf and not get shouted at by gcc.
]
[more warning fixage
Simon Marlow <simonmar at microsoft.com>**20060608142844]
[fix a warning
Simon Marlow <simonmar at microsoft.com>**20060608141903]
[fix some warnings
Simon Marlow <simonmar at microsoft.com>**20060608140201]
[Add new RTS flags for tracing:
Simon Marlow <simonmar at microsoft.com>**20060608130101
-vs Trace scheduler events (see also -Ds with -debug)
-vt Time-stamp trace messages
the intention is that we will pipe the -vs output into a
profile-generating tool. This commit includes the flags only,
functionality to follow.
]
[codegen debug flag (+RTS -Dc) was unused; remove it
Simon Marlow <simonmar at microsoft.com>**20060607145848]
[add 'const' modifiers to types where appropriate
Simon Marlow <simonmar at microsoft.com>**20060607145800]
[rearrange casts to avoid gcc warnings
Simon Marlow <simonmar at microsoft.com>**20060607145626]
[warning fix
Simon Marlow <simonmar at microsoft.com>**20060607141013]
[remove //@ stuff
Simon Marlow <simonmar at microsoft.com>**20060607134553]
[Gather timing stats for a Task when it completes.
Simon Marlow <simonmar at microsoft.com>**20060607124407
Previously we did this just for workers, now we do it for the main
thread and for forkOS threads too.
]
[Remove unnecessary SCHED_INTERRUPTED scheduler state
Simon Marlow <simonmar at microsoft.com>**20060607115105
]
[fix a warning
Simon Marlow <simonmar at microsoft.com>**20060427130048]
[re-enable time package on Windows
simonmar at microsoft.com**20060606124656]
[fix a case of "naughty I386 byte reg"
Simon Marlow <simonmar at microsoft.com>**20060606112357
The fix is a little hacky, because we don't have support for register
classes in general, but it's an improvement.
]
[A better icon for GHCi
Neil Mitchell <http://www.cs.york.ac.uk/~ndm/>**20060602145913]
[markSignalHandlers(): implementation was unnecessary, and had a bug
simonmar at microsoft.com**20060606085805
There's no need to mark the signal handler here, because it is stored
in a StablePtr and hence is a root anyway. Furthermore, the call to
evac() was passing the address of a local variable, which turned out
to be harmless for copying GC, but fatal for compacting GC: compacting
GC assumes that the addresses of the roots are the same each time.
Fixes: possibly #783, possibly #776, definitely #787
]
[disable time package on mingw to unblock builds.
sof at galois.com**20060605165125]
[Remove one more IfaceInlineCall
simonpj at microsoft.com**20060605154305]
[Remove InlinePlease and add inline function and RULE
simonpj at microsoft.com**20060605114900
For a long time GHC has had some internal mechanism designed to support
a call-site inline directive, thus
inline f xs
makes f be inlined at the call site even if f is big.
However, the surface syntax seems to have gone, and in any case it
can be done more neatly using a RULE.
This commit:
* Removes the InlineCall constructor for Note
and InlinePlease for SimplCont
* Adds a new known-key Id called 'inline', whose definition in
GHC.Base is just the identity function
* Adds a built-in RULE in PrelRules that rewrites (inline f) to
the body of f, if possible
* Adds documentation
NOTE: I have not tested this (aeroplane work). Give it a try!
]
[Fix typo
simonpj at microsoft.com**20060605114719]
[fix type of allocateExec
Simon Marlow <simonmar at microsoft.com>**20060601125406]
[stgMallocBytesRWX --> allocateExec
Simon Marlow <simonmar at microsoft.com>**20060601123314]
[fix non-Windows build
Simon Marlow <simonmar at microsoft.com>**20060601121435]
[Win32: set up the console code pages
simonmar at microsoft.com**20060601115423
This may help with entering non-ASCII characters at the GHCi prompt,
but as usual with Unicode there's no simple solution that just works.
See commentary in InteractiveUI.hs for more details.
]
[add a type signature
simonmar at microsoft.com**20060601115335]
[improvements to lexical error reporting
simonmar at microsoft.com**20060601115306]
[commented-out debugging code
simonmar at microsoft.com**20060601115247]
[understand Latin-1 symbols
simonmar at microsoft.com**20060601115149]
[stgMallocBytesRWX --> allocateExec
Simon Marlow <simonmar at microsoft.com>**20060531091202
Not sure how I left this out of the previous patch, oh well.
]
['time' depends on 'Win32' when Windows=YES; mirror that
sof at galois.com**20060530223009
when setting up SUBDIRS.
]
[Win32: add _imp__tzname
simonmar at microsoft.com**20060530101452]
[fix Win32 build
simonmar at microsoft.com**20060530101418]
[replace stgMallocBytesRWX() with our own allocator
Simon Marlow <simonmar at microsoft.com>**20060530100211
See bug #738
Allocating executable memory is getting more difficult these days. In
particular, the default SELinux policy on Fedora Core 5 disallows
making the heap (i.e. malloc()'d memory) executable, although it does
apparently allow mmap()'ing anonymous executable memory by default.
Previously, stgMallocBytesRWX() used malloc() underneath, and then
tried to make the page holding the memory executable. This was rather
hacky and fails with Fedora Core 5.
This patch adds a mini-allocator for executable memory, based on the
block allocator. We grab page-sized blocks and make them executable,
then allocate small objects from the page. There's a simple free
function, that will free whole pages back to the system when they are
empty.
]
[add time subdir
Simon Marlow <simonmar at microsoft.com>**20060530070721]
[Make rule-matching robust to lets
simonpj at microsoft.com**20060525154447
Consider a RULE like
forall arr. splitD (joinD arr) = arr
Until now, this rule would not match code of form
splitD (let { d = ... } in joinD (...d...))
because the 'let' got in the way.
This patch makes the rule-matcher robust to lets. See comments with
the Let case of Rules.match.
This improvement is highly desirable in the fusion rules for NDP
stuff that Roman is working on, where we are doing fusion of *overloaded*
functions (which may look lazy). The let expression that Roman tripped
up on was a dictioary binding.
]
[Improve error reporting in interface typechecking
simonpj at microsoft.com**20060525094545]
[Fix egregious and long-standing tidying bug
simonpj at microsoft.com**20060525094300
A typo in tidyAlt meant that we could get shadowing of occurrence names
in the output of tidying. (Specifically, of existentially bound type
variables.) That in turn meant that an IfaceExpr could have shadowing, so
when the IfaceExpr was read in, it meant something different.
That in turn led to an obscure crash like:
Panic: tcIfaceTyVar
Anyway, this fixes it. MERGE into 6.4.3.
]
[Prune imports
simonpj at microsoft.com**20060525094251]
[performGC_(): don't use the existing Task, always grab a new one
Simon Marlow <simonmar at microsoft.com>**20060525090035]
[Better control of the IO manager thread; improvements to deadlock checking
Simon Marlow <simonmar at microsoft.com>**20060524122839
In the threaded RTS on *nix platforms:
- we now start the IO manager thread eagerly at startup time
(previously was started on demand).
- we now ask the IO manager thread to stop at shutdown
- In Timer.c:handle_tick, if it looks like we might be in a
deadlock, instead of calling prodOneCapability() which was known to be
wrong, we now send a byte down the IO manager's pipe to wake it up.
This also avoids a case of double-acquisition of a mutex, which
happened if prodOneCapability() was called while the current thread
was holding a mutex.
]
[TARGET_OS ==> HOST_OS
Simon Marlow <simonmar at microsoft.com>**20060524122103]
[fix a _TARGET_ARCH that should be _HOST_ARCH
Simon Marlow <simonmar at microsoft.com>**20060524122022]
[we don't need OutOfHeapHook(), and the version in the RTS has a better message
Simon Marlow <simonmar at microsoft.com>**20060524112007]
[Bug-fix to patch "Run simplifier before SpecConstr"
simonpj at microsoft.com**20060523130022]
[Run simplifier before SpecConstr
simonpj at microsoft.com**20060523085546
Arrange to run the simplifier before SpecConstr, to (almost entirely)
eliminate shadowing.
Reason: otherwise SpecConstr can generate a RULE that never
files; and LiberateCase specifically *does* generate lots of shadowing.
See Note [Shadowing] in SpecConstr.lhs
]
[Prune imports
simonpj at microsoft.com**20060522192532]
[Add deShadowBinds
simonpj at microsoft.com**20060522192404
Add CoreSubst.deShadowBinds, which removes shadowing from
a Core term. I thought we wanted it for SpecConstr, but in
fact decided not to use it. Nevertheless, it's a useful sort
of function to have around, and it has a particularly simple
definition!
]
[Inline in a call argument if the caller has RULES
simonpj at microsoft.com**20060522163255
This is an experimental change suggested by Roman. Consider
{-# INLINE f #-}
f x y = ...
....(g (f a b))...
where g has RULES. Then we'd like to inline f, even though the context of
the call is otherwise 100% boring -- g is lazy and we know nothing about
x and y.
This patch just records in the continuation that f has rules. And does so
somewhat recursively...e.g.
...(g (h (f a b)))...
where g has rules.
]
[Add idHasRules
simonpj at microsoft.com**20060522163109
Add Id.idHasRules :: Id -> Bool, with the obvious semantics.
This patch makes sense by itself, but it's just a tidy-up.
]
[Transmit inline pragmas faithfully
simonpj at microsoft.com**20060522110256
*** WARNING: you will need to recompile your libraries
*** when you pull this patch (make clean; make)
The inline pragma on wrapper-functions was being lost; this patch
makes it be transmitted faithfully.
The reason is that we don't write the full inlining for a wrapper into
an interface file, because it's generated algorithmically from its strictness
info. But previously the inline pragma as being written out only when we
wrote out an unfolding, and hence it was lost for a wrapper.
This makes a particular difference when a function has a NOINLINE[k] pragma.
Then it may be w/w'd, and we must retain the pragma. It's the only consistent
thing to do really.
The change does change the binary format of interface files, slightly.
So you need to recompile all your libraries.
]
[Improved RULE lhs typechecking; less dictionary sharing
simonpj at microsoft.com**20060519103433
See long comment with Simplify.tcSimplifyRuleLhs.
Here's the key example:
RULE "g" forall x y z. g (x == y) (y == z) = ...
Here, the two dictionaries are *identical*, but we do NOT WANT to
generate the rule
RULE forall x::a, y::a, z::a, d1::Eq a
f ((==) d1 x y) ((>) d1 y z) = ...
Instead we want
RULE forall x::a, y::a, z::a, d1::Eq a, d2:Eq a
f ((==) d1 x y) ((>) d2 y z) = ...
]
[Bug-fix for infix function definitions (parse/rename)
simonpj at microsoft.com**20060519095022
Fix a crash provoked by
x `op` y = x
op = True
The trouble was that there is currently a single 'infix' flag for the
whole group; and RnTypes.checkPrecMatch was therefore expecting the
second eqn to have two args.
This fixes the crash, and also or-s the infix flags for the various
eqns together; previously it was just taken from the first eqn, which
was wrong.
]
[Remove misleading comments
simonpj at microsoft.com**20060519094936]
[Fix a nasty continuation-duplication bug
simonpj at microsoft.com**20060518163617
For a long-time mkDupableCont has had a bug that allows it to duplicate
an arbitrary continuation, which it should not do, of course.
The bug was that in the Select case of mkDupableCont we were calling
prepareCaseCont, which did not duplicate the continuation if there is
but a single alternative. This is quite right in the case of the call
in rebuildCase, but quite wrong in mkDupableCont.
The bug manifest as follows. In the expression
f (case ... of { ..several alts.. })
(when f is strict), we should transform to
f (...transformed arg...)
The application of f should not be pushed down (see notes with the
ArgOf case of mkDupableCont. But that was not happening in an example
like this (see how the call to f is pushed inwards).
f (a `div` abs (b::Int))
--->
case b_afT of wild_aHa { GHC.Base.I# x_aHc ->
let {
$j_sIe :: GHC.Prim.Int# -> GHC.Base.Int
[]
$j_sIe =
\ (ds1_aHr [Nothing OneShot] :: GHC.Prim.Int#) ->
Foo7.f
(case ds1_aHr of ds2_aHq {
__DEFAULT ->
case a_afS of wild1_aHM { GHC.Base.I# x_aHO ->
GHC.Base.I# (GHC.Base.divInt# x_aHO ds2_aHq)
};
0 -> GHC.Err.divZeroError @ GHC.Base.Int
})
} in
case GHC.Prim.>=# x_aHc 0 of wild1_aHe [Dead Nothing] {
GHC.Base.False ->
let {
ds1_aHr :: GHC.Prim.Int#
[]
ds1_aHr = GHC.Prim.negateInt# x_aHc
} in $j_sIe ds1_aHr;
GHC.Base.True -> $j_sIe x_aHc
}
}
]
[Make simplifier report which phase it is doing in -ddump output
simonpj at microsoft.com**20060518163448]
[Comments only
simonpj at microsoft.com**20060518163425]
[take parsec out of $(GhcBootLibs)
Simon Marlow <simonmar at microsoft.com>**20060518131506]
[Improve documentation of INLINE pragmas
simonpj at microsoft.com**20060518113212]
[a couple of additions
Simon Marlow <simonmar at microsoft.com>**20060518104025]
[#define _REENTRANT 1 (needed to get the right errno on some OSs)
Simon Marlow <simonmar at microsoft.com>**20060518103715
Partial fix for hanging problems on Solaris and possibly *BSD.
A similar fix is also required to libraries/base/includes/HsBase.h.
]
[Declare this file to be POSIX
Simon Marlow <simonmar at microsoft.com>**20060518102858
This is simpler than using _POSIX_THREAD_SEMANTICS on Solaris to get
the right version of ctime_r().
]
[somewhere to keep track of release notes for 6.6
Simon Marlow <simonmar at microsoft.com>**20060518074415]
[Newtype data constructors get a compulsory unfolding
simonpj at microsoft.com**20060517155009
With this change, newtype data constructors get a "compulsory" unfolding,
which means that they *must* be inlined, and no top-level definition of
the constructor is provided at all. Since these constructors are no-ops,
I'm not sure why this wasn't the case all along.
]
[White space only
simonpj at microsoft.com**20060517154936]
[Retain InlinePragInfo on wrappers
simonpj at microsoft.com**20060517154725
For some reason, when doing the worker/wrapper split, we transferred the
InlinePragInfo from the original function, but expunging it from the wrapper.
This meant, for example, that a NOINLINE function would have its wrapper
inlined, which isn't sensible.
For a change, fixing a bug involves only deleting code!
]
[Spelling correction
simonpj at microsoft.com**20060517154710]
[Retain INLINE pragma information during indirection-shorting
simonpj at microsoft.com**20060517154449
During indirection-shorting, we were dropping the InlinePragInfo,
although were were carefully retaining strictness info etc.
I think this is a long-standing bug.
]
[Improve pretty-printing
simonpj at microsoft.com**20060517154349]
[Comments only
simonpj at microsoft.com**20060517154304]
[Improve pretty-printing slightly
simonpj at microsoft.com**20060517154204]
[Let GHCi work with with Sparc32+/V8+ .o files
Duncan Coutts <duncan.coutts at worc.ox.ac.uk>**20060516090430
Currently the GHCi linker looks exclusively for V7 ABI .o files.
You can generate V8+ ABI .o files using flags to gcc such as:
-optc-mcpu=ultrasparc -opta-mcpu=ultrasparc
Note that this allows gcc to generate hardware integer division and
hardware floating point instructions rather than using software emulation.
All recent sparc hardware is V8+ or later. Perhaps we should check for the
cpu generation in configure and use the later ABI if possible.
Tested briefly on a SunBlade 100 (TI UltraSparc IIe) sparc-unknown-linux
]
[match up more closely with compiler/main/DynFlags.hs:machdepCCOpts
Simon Marlow <simonmar at microsoft.com>**20060515090031
In particular, add -fno-builtin to x86 and x86_64, which was missing.
]
[set $(GhcVersion) and $(GhcPatchLevel) correctly when $(UseStage1)==YES
Simon Marlow <simonmar at microsoft.com>**20060510124621]
[.raw_s and .s live in $(odir), not the source dir
Simon Marlow <simonmar at microsoft.com>**20060510121524]
[additions from Reilly Hayes
Simon Marlow <simonmar at microsoft.com>**20060510120000]
[some tweaks to the HC bootstrapping instructions
Simon Marlow <simonmar at microsoft.com>**20060510115236]
[Ignore unboxed values in breakpoints.
Lemmih <lemmih at gmail.com>**20060510072722]
[Don't read ~/.ghci on breakpoints.
Lemmih <lemmih at gmail.com>**20060509223455]
[make it possible to define an alias for :quit
Simon Marlow <simonmar at microsoft.com>**20060509083124]
[Do not put wired-in things in interface files
simonpj at microsoft.com**20060508142946
There is no need for wired-in things to go into interface files; the compiler
knows about them anyway. Worse, it turns ou that if they are in an interface
file, they may get read in with not-quite-right type info (e.g. GHC.Err.error),
and the not-quite-right thing gets into the type envt. Than it gets used
instead of the wired in thing.
Best all round never to put them into interface files. This is the way
it used to be, but it looks as if it rotted away some time ago.
(I noticed this when fixing unsafePerformIO stuff, becuase 'lazy' was getting
an unfolding when it shouldn't.)
]
[Remove NOINLINE strictness hack
simonpj at microsoft.com**20060508142834
The stricteness analyser used to have a HACK which ensured that NOINLNE things
were not strictness-analysed. The reason was unsafePerformIO. Left to itself,
the strictness analyser would discover this strictness for unsafePerformIO:
unsafePerformIO: C(U(AV))
But then consider this sub-expression
unsafePerformIO (\s -> let r = f x in
case writeIORef v r s of (# s1, _ #) ->
(# s1, r #)
The strictness analyser will now find that r is sure to be eval'd,
and may then hoist it out. This makes tests/lib/should_run/memo002
deadlock.
Solving this by making all NOINLINE things have no strictness info is overkill.
In particular, it's overkill for runST, which is perfectly respectable.
Consider
f x = runST (return x)
This should be strict in x.
So the new plan is to define unsafePerformIO using the 'lazy' combinator:
unsafePerformIO (IO m) = lazy (case m realWorld# of (# _, r #) -> r)
Remember, 'lazy' is a wired-in identity-function Id, of type a->a, which is
magically NON-STRICT, and is inlined after strictness analysis. So
unsafePerformIO will look non-strict, and that's what we want.
Now we don't need the hack in the strictness analyser.
]
[Trim imports
simonpj at microsoft.com**20060508141804]
[Trim imports
simonpj at microsoft.com**20060508141713]
[GHC_MANGLER-->MANGLER
Simon Marlow <simonmar at microsoft.com>**20060508111206]
[Fix bug #763: Breakpoint mechanism crashes when there's a type error.
Lemmih <lemmih at gmail.com>**20060505232158]
[breakpointCond
Lemmih <lemmih at gmail.com>**20060502174340]
[Preserve type variable names during type inference
simonpj at microsoft.com**20060505153753
During unification we attempt to preserve the print-names of type variables,
so that type error messages tend to mention type variables using the
programmer's vocabulary.
This had bit-rotted a bit when I added impredicative polymorphism; especially
when unBoxing a boxy type variable we should not gratuitously lose its name.
]
[Trim imports
simonpj at microsoft.com**20060505150506]
[fixup for new source tree layout
Simon Marlow <simonmar at microsoft.com>**20060505114100]
[FPTOOLS_TOP-->GHC_TOP, and remove some references to "fptools"
Simon Marlow <simonmar at microsoft.com>**20060505110520]
[$(FPTOOLS_TOP) is now known as $(GHC_TOP)
Simon Marlow <simonmar at microsoft.com>**20060505110127
I kept $(FPTOOLS_TOP) as an alias for $(GHC_TOP) while we switch
]
[update the build system documentation
Simon Marlow <simonmar at microsoft.com>**20060505105843]
[update for new source tree layout
Simon Marlow <simonmar at microsoft.com>**20060505102903]
[partial update for new source tree layout
Simon Marlow <simonmar at microsoft.com>**20060505030218]
[update for new source tree layout (untested)
Simon Marlow <simonmar at microsoft.com>**20060505081549]
[Print a more helpful error for find_thing
simonpj at microsoft.com**20060504153337]
[Fix a bug in rule matching
simonpj at microsoft.com**20060504112430
The rule matcher uses a "rough-match" pre-filter, which was being too
aggressive. The case looked like this:
rule: f True
expr: case e of x { True -> f x }
Jues because x doesn't immediately look like True, we shouldn't say
"can't match", but that is exactly what ruleCantMatch was doing.
]
[Fix constructor-specialisation bug
simonpj at microsoft.com**20060504112131
The constructor-specialisation optimisation was not dealing with the case
of
(letrec ... in f) a1 a2
We need to apply constructor specialisation in the letrec; previously
we were leaving it untouched on the grounds that the function part of
an application is almost always a variable.
But in fact, float-in immediately precedes SpecConstr, so we can get
these odd-looking applications.
]
[Fix precedence for records in derived Read
simonpj at microsoft.com**20060504111804
The derived instance for Read of records wasn't quite right.
Consider
data T = T1 T | T2 { x::Int }
The string "T1 T2 { x=2 }" should parse correctly as
T1 (T2 {x=2})
because of Haskell's odd precedence rules (record construction binds
even more tightly than application), but the derived Read didn't take
account of that.
drvrun020 is the regression test
]
[Make rules available in RHS
simonpj at microsoft.com**20060504111500
After some earlier re-factoring, the code that was carefully trying
to make RULES available in a function's own RHS was plain wrong.
This commit fixes it. Some programs should go faster!
]
[Pretty printing instance for Unfolding
simonpj at microsoft.com**20060504111429]
[small clarification
Simon Marlow <simonmar at microsoft.com>**20060504103414]
[small fix to booting instructions from #762
Simon Marlow <simonmar at microsoft.com>**20060504083104]
[$(ProjectNameShort) => ghc
Simon Marlow <simonmar at microsoft.com>**20060503102419]
[only pass -fno-unit-at-a-time to gcc if it is supported
Simon Marlow <simonmar at microsoft.com>**20060503093614]
[Arrange that -fth is no longer implied by -fglasgow-exts
simonpj at microsoft.com**20060426182114
Messages involving Template Haskell are deeply puzzling
if you don't know about TH, so it seems better to make
-fth an explicit flag. It is no longer switched on
by -fglasgow-exts.
]
[remove code not required in the new source tree layout
Simon Marlow <simonmar at microsoft.com>**20060502114235]
[move "compat" earlier in the build for .hc bootstrapping
Simon Marlow <simonmar at microsoft.com>**20060502112001]
[fix ctime_r problem on Solaris (I hope)
Simon Marlow <simonmar at microsoft.com>**20060502111231]
[fix whitespace problem that shows up on Solaris (x86)
Simon Marlow <simonmar at microsoft.com>**20060502110001]
[libraries/time is boring
Simon Marlow <simonmar at microsoft.com>**20060502105524]
[add time package to libraries Makefile
Ashley Yakeley <ashley at semantic.org>**20060501092241]
[add time package to default-packages
Ashley Yakeley <ashley at semantic.org>**20060426070445]
[Fix stage2 segfault on openbsd.
dons at cse.unsw.edu.au**20060428074811
Somewhere along the 6.5 branch, gcc started compiling the rts such that
it triggers the stack smash handler, causing stage2 to by kill'd
immediately. This turns off the stack protector, which will do for now.
]
[fix quoting around ${FPTOOLS_TOP_ABS} (fixes #749)
Simon Marlow <simonmar at microsoft.com>**20060428085252]
[Fix bug shown in the mod77 test.
Lemmih <lemmih at gmail.com>**20060427113313]
[Don't init root pointers if they aren't gonna be used.
Lemmih <lemmih at gmail.com>**20060426111143]
[Fix recompilation checking.
Simon Marlow <simonmar at microsoft.com>**20060425140932
One-shot compilation was throwing away the old iface read by
checkOldIface, with the result that version numbers were never being
incremented. Fixes the recomp001 test too.
]
[Solaris needs -lrt for the threaded RTS
Simon Marlow <simonmar at microsoft.com>**20060425082823]
[fix problem with binary-dist docs
Simon Marlow <simonmar at microsoft.com>**20060424090159]
[Enable breakpoint support.
Lemmih <lemmih at gmail.com>**20060421113112]
[Fixing some lexer errors with extcore
Josef Svenningsson <josef.svenningsson at gmail.com>**20060420222625]
[Extcore can now handle data types without constructors
Josef Svenningsson <josef.svenningsson at gmail.com>**20060420213622]
[Comments only
Josef Svenningsson <josef.svenningsson at gmail.com>**20060420213555]
[Resurrect ProjectName
sven.panne at aedion.de**20060421085125]
[Remove the section on platform support, link to the wiki page
Simon Marlow <simonmar at microsoft.com>**20060420125555
The section in the building guide was becoming out of date, a wiki
page is much more likely to be kept fresh.
]
[Fix workaround for a GHC 6.4 bug
rl at cse.unsw.edu.au**20060420044223]
[hslibs is dead, Jim...
sven.panne at aedion.de**20060419144609]
[Synched .spec file with reality
sven.panne at aedion.de**20060419143138]
[Add .spec file to source distribution
sven.panne at aedion.de**20060419103725]
[remove paragraph about mutable objects that doesn't apply now
Simon Marlow <simonmar at microsoft.com>**20060419082038]
[HsBool should be HsInt, not StgBool
Simon Marlow <simonmar at microsoft.com>**20060418144214
StgBool is mapped to C's int type. GHC doesn't currently know the
size of a C int on the target arch, it's easier to use StgInt instead.
I guess nobody ever uses Bool arguments to foreign imports/exports.
]
[handle Bool arg to foreign import "wrapper"
Simon Marlow <simonmar at microsoft.com>**20060418143936
Fixes #746
]
[update commentry for foreign import "wrapper" handling
Simon Marlow <simonmar at microsoft.com>**20060418143714]
[remove vestiges of ByteArray and MutableByteArray, which are no more
Simon Marlow <simonmar at microsoft.com>**20060418143641]
[Comment only
simonpj at microsoft.com**20060418125624]
[Fix rank-validity testing
simonpj at microsoft.com**20060418125350
GHC does not now do "hoisting" as it used to. Instead, it allows
foralls to the right of fuction arrows, as well as to the left.
But the type-validity tester hadn't caught up. This commit fixes
it. The test is tc203.
Incidentally, GHC still doesn't let you write
forall a. Eq a => forall b. b -> b
because we get a zillion reduce/reduce errors if we allow that. I'm
sure it's fixable. But meanwhile you have to use an auxiliary type
synonym, which is a bit stupid.
]
[Make the initial rdr and type scope available in the ghc-api.
Lemmih <lemmih at gmail.com>**20060418023606]
[Fix minor bug in Linker.withExtendedLinkEnv
Lemmih <lemmih at gmail.com>**20060418023518]
[Export 'insertSymbol' and 'insertStableSymbol'.
Lemmih <lemmih at gmail.com>**20060418021806
'insertStableSymbol' is used for exporting closures that are affected by the GC.
]
[Allow $x, as well as $(x), at top level in TH
simonpj at microsoft.com**20060414121907
Bulat pointed out that in Template Haskell
$x
is allowed instead of
$(x)
in expressions, but not at the top level of modules.
This commit fixes the omission. Now you can say
f x = x
$h
data T = T
and the $h will run Template Haskell just as you'd expect.
]
[Fix TH erorr recovery (test is TH_recover)
simonpj at microsoft.com**20060414120411]
[Comments only
simonpj at microsoft.com**20060414120359]
[Recover gracefully from a Template Haskell programmers error
simonpj at microsoft.com**20060414115831
If a TH programmer uses a type constructor as a data constructor,
GHC simply crashed. This commit makes it report the error in a
graceful way.
]
[Document newtype-unwrapping for IO in FFI
simonpj at microsoft.com**20060414105212]
[Cosmetics in SpecConstr
simonpj at microsoft.com**20060412152721
SpecConstr currently uses substExpr for tiresome reasons to do with
GADTs. Unfortunately the substExpr generates some WARNINGS (when DEBUG)
is on, because we aren't adding all the in-scope Ids to the in-scope
set of the substitution.
When we move to FC these substExprs will go away, so I'm not going to
worry about this now.
]
[Improve pruning of case alternatives to account for GADTs
simonpj at microsoft.com**20060412152327
Consider
data T a where
T1 :: T Int
T2 :: T Bool
T3 :: T Char
f :: T Bool -> Int
f x = case x of
DEFAULT -> ...
T2 -> 3
Here the DEFAULT case covers multiple constructors (T1,T3), but none
of them can match a scrutinee of type (T Bool). So we can prune away
the default case altogether.
In implementing this, I re-factored this bit of the simplifier, elminiating
prepareAlts from SimplUtils, and putting all the work into simplAlts in
Simplify
The proximate cause was a program written by Manuel using PArrays
]
[Fix a bug in optimising division to shift right
Simon Marlow <simonmar at microsoft.com>**20060412144247
Division by an integral log2 can't be directly optimised to a shift
right, because shift right behaves like a division that rounds to
negative infinity, whereas we want one that rounds to zero. Fix this
by adding (divisor-1) to the dividend when it is negative before
shifting. We do this without jumps, generating very slightly worse
code than gcc, which uses conditional moves on CPUs that support it.
]
[Omit lndir on Windows, as it used to be
simonpj at microsoft.com**20060411135334]
[remove a trace
Simon Marlow <simonmar at microsoft.com>**20060411131531]
[Allow IO to be wrapped in a newtype in foreign import/export
simonpj at microsoft.com**20060411120441
Up to now, the silent unwrapping of newtypes in foreign import/export
has been limited to data values. But it's useful for the IO monad
itself:
newtype MyIO a = MIO (IO a)
foreign import foo :: Int -> MyIO Int
This patch allows the IO monad to be
wrapped too. This applies to foreign import "dynamic" and "wrapper",
thus
foreign import "wrapper" foo :: MyIO () -> HisIO (FunPtr (MyIO ()))
Warning: I did on the plane, and I'm no longer sure if its 100%
complete, so needs more testing. In particular the wrapper/dynamic bit.
]
[Improve newtype deriving
simonpj at microsoft.com**20060402215911
Ross Paterson pointed out a useful generalisation of GHC's
newtype-deriving mechanism. This implements it. The idea
is to allow
newtype Wrap m a = Wrap (m a) deriving (Monad, Eq)
where the representation type doesn't start with a type
constructor.
Actually GHC already *did* implement this, but the eta-ok
check in TcDeriv missed a case, so there was a lurking bug.
This patches fixes the documentation too. drvrun019 tests.
]
[add take to the list of functions deforestable
Simon Marlow <simonmar at microsoft.com>**20060411090131]
[avoid versionitis in Numeric.showHex (should fix tcrun007)
Simon Marlow <simonmar at microsoft.com>**20060411085009]
[add a note about full-laziness
Simon Marlow <simonmar at microsoft.com>**20060410093824]
[robustify the test for the top of the tree a little
Simon Marlow <simonmar at microsoft.com>**20060410082224]
[Make darcs-all work without a ghc toplevel directory
Josef Svenningsson <josef.svenningsson at gmail.com>**20060407161738]
[Fix typo in darcsall warning
Josef Svenningsson <josef.svenningsson at gmail.com>**20060407161335]
[fix source dists
Simon Marlow <simonmar at microsoft.com>**20060407150045]
[add a README for binary dists
Simon Marlow <simonmar at microsoft.com>**20060407143832]
[fix binary dists
Simon Marlow <simonmar at microsoft.com>**20060407143822]
[remove the last bits of the ghc/ subdir
Simon Marlow <simonmar at microsoft.com>**20060407085219]
[TAG 07.04.06
Lemmih <lemmih at gmail.com>**20060407130411]
Patch bundle hash:
82eef0356b3ea890952ad0609b27f1957e6e7e50
-------------- next part --------------
New patches:
[Fix driver not to normalise output when using platform specific output files
Esa Ilari Vuokko <ei at vuokko.info>**20060813124649] {
hunk ./driver/testlib.py 521
- expected_stderr_file = platform_wordsize_qualify(name, 'stderr')
+ (platform_specific, expected_stderr_file) = platform_wordsize_qualify(name, 'stderr')
hunk ./driver/testlib.py 890
- expected_stdout_file = platform_wordsize_qualify(name, 'stdout')
+ (platform_specific, expected_stdout_file) = platform_wordsize_qualify(name, 'stdout')
hunk ./driver/testlib.py 899
- actual_stdout = normalise_output(open(actual_stdout_file).read())
+ actual_stdout = open(actual_stdout_file).read()
+ if not platform_specific:
+ actual_stdout = normalise_output(actual_stdout)
hunk ./driver/testlib.py 913
- expected_stderr_file = platform_wordsize_qualify(name, 'stderr')
+ (platform_specific, expected_stderr_file) = platform_wordsize_qualify(name, 'stderr')
hunk ./driver/testlib.py 922
- actual_stderr = normalise_output(open(actual_stderr_file).read())
+ actual_stderr = open(actual_stderr_file).read()
+ if not platform_specific:
+ actual_stderr = normalise_output(actual_stderr)
hunk ./driver/testlib.py 1040
- return platform_path
+ return (1,platform_path)
hunk ./driver/testlib.py 1042
- return compiler_type_path
+ return (0,compiler_type_path)
hunk ./driver/testlib.py 1044
- return wordsize_path
+ return (0,wordsize_path)
hunk ./driver/testlib.py 1046
- return path
+ return (0,path)
}
Context:
[Add flag to test
simonpj at microsoft.com**20060811142744]
[More upated output
simonpj at microsoft.com**20060811133858]
[More updated output
simonpj at microsoft.com**20060811133233]
[Update test outpuot
simonpj at microsoft.com**20060811131132]
[Remove typecheck.testeq1.run.stdout
simonpj at microsoft.com**20060811125001]
[Comments in Makefile
simonpj at microsoft.com**20060811123001]
[This test now compiles without errors
Simon Marlow <simonmar at microsoft.com>**20060811102354]
[accept output
Simon Marlow <simonmar at microsoft.com>**20060811101931]
[base-1.0 ==> base-2.0
Simon Marlow <simonmar at microsoft.com>**20060811101925]
[base-1.0 ==> base-2.0
Simon Marlow <simonmar at microsoft.com>**20060811101619]
[accept output
Simon Marlow <simonmar at microsoft.com>**20060811101428]
[update FFI syntax
Simon Marlow <simonmar at microsoft.com>**20060811100321]
[expect fail for threaded2 way, fork isn't supported in SMP mode (yet)
Simon Marlow <simonmar at microsoft.com>**20060811100315]
[fix FFI syntax
Simon Marlow <simonmar at microsoft.com>**20060811095918]
[accept output
Simon Marlow <simonmar at microsoft.com>**20060811095501]
[Fix some Array.bounds calls to Array.getBounds
Esa Ilari Vuokko <ei at vuokko.info>**20060809220653]
[Add tests for incomplete-pattern warnings
simonpj at microsoft.com**20060808144017]
[Lazy patterns can't be unboxed (Trac 845)
simonpj at microsoft.com**20060808135821]
[Test error message (Trac 844)
simonpj at microsoft.com**20060808133927]
[Add tc206; edit a couple of others
simonpj at microsoft.com**20060808091517]
[Add test for overlapping pattern warnings for lazy patterns
simonpj at microsoft.com**20060727154926]
[Add a test for infix type constructors
simonpj at microsoft.com**20060727154247]
[Add test for unboxed fields in GADT record selectors
kevind at bu.edu**20060802125121]
[add new cabal test
Simon Marlow <simonmar at microsoft.com>**20060727140657]
[test fixes and new tests for package support
Simon Marlow <simonmar at microsoft.com>**20060727140436]
[accept output (improved error messages due to PrintUnqual changes)
Simon Marlow <simonmar at microsoft.com>**20060727140124]
[accept output
Simon Marlow <simonmar at microsoft.com>**20060727134921]
[add test for Ix bug
Simon Marlow <simonmar at microsoft.com>**20060721100303]
[document stage=2, and clean up a little.
Simon Marlow <simonmar at microsoft.com>**20060710153547]
[remove unused imports
Simon Marlow <simonmar at microsoft.com>**20060616105302]
[Test Trac bug #795
simonpj at microsoft.com**20060703151859]
[encorporate rest of property checks for Data.ByteString
Don Stewart <dons at cse.unsw.edu.au>**20060702093816]
[Add regress tests for fusion rules. Makes sure they fire, and rewrite to correct result
Don Stewart <dons at cse.unsw.edu.au>**20060702090703]
[Add model-based tests for ByteString.Lazy<=>ByteString<=>Data.list
Don Stewart <dons at cse.unsw.edu.au>**20060702055523]
[Accept output change
simonpj at microsoft.com**20060626111936]
[Add test for infix function definitions
simonpj at microsoft.com**20060519103259]
[Test for pattern type sigs in do-notation
simonpj at microsoft.com**20060504142058]
[add test from #799
Simon Marlow <simonmar at microsoft.com>**20060623094712]
[omit conc039 for threaded2
Simon Marlow <simonmar at microsoft.com>**20060622092716]
[robustify the test a little
Simon Marlow <simonmar at microsoft.com>**20060622092148]
[omit conc036 for GHCi
Simon Marlow <simonmar at microsoft.com>**20060622091811]
[add a prof/TH test
Simon Marlow <simonmar at microsoft.com>**20060622090109]
[accept output
Simon Marlow <simonmar at microsoft.com>**20060622085217]
[re-enable various tests with -threaded that now work
Simon Marlow <simonmar at microsoft.com>**20060614144922]
[fix this test to work propertly with -threaded
Simon Marlow <simonmar at microsoft.com>**20060614144256]
[Fix this test to work properly with -threaded
Simon Marlow <simonmar at microsoft.com>**20060614144219]
[test for NCG bug
Simon Marlow <simonmar at microsoft.com>**20060606112614]
[accept output
Simon Marlow <simonmar at microsoft.com>**20060601123936
NOTE: I made a slight tweak to Alex to improve the lexical error messages,
to get correct output for these tests you need an updated Alex from darcs.
]
[disable ffi016 for GHCi
Simon Marlow <simonmar at microsoft.com>**20060530095146]
[first attempt at being boring
Ashley Yakeley <ashley at semantic.org>**20060526070327]
[Update expected output
Don Stewart <dons at cse.unsw.edu.au>**20060525071135]
[update expected output. tougher replicate test.
Don Stewart <dons at cse.unsw.edu.au>**20060517020540]
[accept output
Simon Marlow <simonmar at microsoft.com>**20060508073357]
[More QC tests. Update output
Don Stewart <dons at cse.unsw.edu.au>**20060507042341]
[More QC properties. Update output
Don Stewart <dons at cse.unsw.edu.au>**20060506043305]
[Add test for newtypes in FFI
simonpj at microsoft.com**20060426183636
The standard FFI says that newtypes are automatically unwrapped in
argument and result types. This test checks that it also happens
for newtype-wrapping of the IO monad itself, a recent change to
GHC.
]
[And add QC test for group/groupBy
Don Stewart <dons at cse.unsw.edu.au>**20060501065658]
[More QC properties, for fold{lr}1. Update expected output
Don Stewart <dons at cse.unsw.edu.au>**20060430084252]
[Import Data.ByteString regression tests
Don Stewart <dons at cse.unsw.edu.au>**20060428122838]
[avoid running out of stack
Simon Marlow <simonmar at microsoft.com>**20060428083855]
[test Bool arguments too
Simon Marlow <simonmar at microsoft.com>**20060418144834]
[Test for foralls to the right of =>
simonpj at microsoft.com**20060418125116]
[Test for error recovery in TH
simonpj at microsoft.com**20060414120213]
[forgot to add this file
Simon Marlow <simonmar at microsoft.com>**20060413080300]
[Add a test for SpecConstr + GADTs
simonpj at microsoft.com**20060412153402]
[Memo-function test
simonpj at microsoft.com**20060410164304
Checks that preInlineUnconditionally isn't to eager!
(If it is, this test goes exponential.)
]
[add a test for a division bug in the NCG
Simon Marlow <simonmar at microsoft.com>**20060412144627]
[Add test for newtype deriving (thanks to Ross)
simonpj at microsoft.com**20060402215709]
[update for new source tree layout
Simon Marlow <simonmar at microsoft.com>**20060410091202]
[add a test for a blackhole GC bug
Simon Marlow <simonmar at microsoft.com>**20060407101628]
[the "threaded" way was renamed to "threaded1"/"threaded2"
Simon Marlow <simonmar at microsoft.com>**20060407101619]
[Track the GHC source tree reorganisation
Simon Marlow <simonmar at microsoft.com>**20060407041720]
[omit asm ways for this test on x86
Simon Marlow <simonmar at microsoft.com>**20060407080546]
[avoid running out of stack for non-optimised ways
Simon Marlow <simonmar at microsoft.com>**20060407080032]
[add test for ForeignPtrEnv
Simon Marlow <simonmar at microsoft.com>**20060405160129]
[omit ffi007 and ffi008 for GHCi (see comment for details)
Simon Marlow <simonmar at microsoft.com>**20060405133421]
[fix tests for Windows
Simon Marlow <simonmar at microsoft.com>**20060404153133]
[unnecessary mingw-specific output
Simon Marlow <simonmar at microsoft.com>**20060404150047]
[windows output
Simon Marlow <simonmar at microsoft.com>**20060404145525]
[crummy fix for Windows
Simon Marlow <simonmar at microsoft.com>**20060404145128]
[fix the expect_fail_if_windows macro
Simon Marlow <simonmar at microsoft.com>**20060404144611]
[Add scoped tyvar test
simonpj at microsoft.com**20060327123134]
[attempt to work around restrictions with fork() & pthreads
Simon Marlow <simonmar at microsoft.com>**20060323134034
In the child process, call exec() directly instead of using
System.Cmd.system, which involves another fork()/exec() and a
non-blocking wait. The problem is that in a forked child of a
threaded process, it isn't safe to do much except exec() according to
POSIX. In fact calling pthread_create() in the child causes the
pthread library to fail with an error on FreeBSD.
]
[accept output (better error locations)
Simon Marlow <simonmar at microsoft.com>**20060323102719]
[fix to previous
Simon Marlow <simonmar at microsoft.com>**20060323102523]
[fcntl-FreeBSD
stolz at i2.informatik.rwth-aachen.de**20060321165137
Expect failure of queryfdoption01 on FreeBSD (6/7): /dev/null
can't be switched to non-blocking i/o, so fcntl() will throw an error.
Unfortunately this went to the old CVS first.
]
[fix for GHCi tests that raise exceptions or exit
Simon Marlow <simonmar at microsoft.com>**20060320124648
We need to call GHC.TopHandler.runIOFastExit instead of
GHC.TopHandler.runIO. Recent fixes to the shutdown code have meant
that when a thread invokes shutdownHaskellAndExit(), other main
threads get a chance to exit (as they should), but this means that we
might have a race between the child thread trying to exit the program
and the main thread doing the same. In the case of GHCi, if we're
running an interpreted computation that needs to exit (as some tests
do), then we really want this child thread to exit the program rather
than the main thread.
]
[sort the keys when outputting the summary
Simon Marlow <simonmar at microsoft.com>**20060320114811]
[fix a regex that was too slow
Simon Marlow <simonmar at microsoft.com>**20060316163903]
[ignore ".exe" in program output, for Windows
Simon Marlow <simonmar at microsoft.com>**20060316155440]
[fix for Win32
Simon Marlow <simonmar at microsoft.com>**20060316154734]
[remove some dead code
Simon Marlow <simonmar at microsoft.com>**20060315114645]
[Tidy up the testsuite output by combinding failures for multiple ways
Simon Marlow <simonmar at microsoft.com>**20060315112501
Before:
tc056(normal)
tc056(opt)
tc056(optasm)
tc056(prof)
tc056(profasm)
tc056(unreg)
After:
tc056(normal,opt,optasm,prof,profasm,unreg)
]
[patch up this test again
Simon Marlow <simonmar at microsoft.com>**20060314151844]
[process003 doesn't work with GHCi, omit it
Simon Marlow <simonmar at microsoft.com>**20060314151657]
[fix clean target
Simon Marlow <simonmar at microsoft.com>**20060314124525]
[add test for #713
Simon Marlow <simonmar at microsoft.com>**20060314121232]
[Require -fallow-undecidable-instances
simonpj at microsoft.com**20060223141727]
[Test for deprecated constructors
simonpj at microsoft.com**20060223141701]
[Update output
simonpj at microsoft.com**20060223135107]
[Update output and add -fallow-undecidable-instances where necesssary
simonpj at microsoft.com**20060223133629]
[Add -fallow-undecidable-instances to reflect more accurate termination test in fundeps
simonpj at microsoft.com**20060223133113]
[Remove dependence on haskell98 package in expected output
simonpj at microsoft.com**20060223130208]
[Accept output
simonpj at microsoft.com**20060223125845]
[Add expected output for rn049
simonpj at microsoft.com**20060223124018]
[Accept (slightly mysterious) output formatting changes
simonpj at microsoft.com**20060223123611]
[Update output
simonpj at microsoft.com**20060223123516]
[Update output (TH no longer depends on haskell98 package)
simonpj at microsoft.com**20060223123331]
[Add a fundep loop test
simonpj at microsoft.com**20060222101347]
[add expected output for x86_64
Simon Marlow <simonmar at microsoft.com>**20060223121322]
[accept output
Simon Marlow <simonmar at microsoft.com>**20060210151137]
[remove smp way, replace threaded with threaded1/threaded2
Simon Marlow <simonmar at microsoft.com>**20060210123325
threaded1 = -threaded -debug
threaded2 = -O -threaded, and +RTS -N2 -RTS at runtime
]
[Add test for bug 685
simonpj at microsoft.com**20060208160511]
[Add test from Markus Lauer
simonpj at microsoft.com**20060206084209]
["s" is in GhcRTSWays now
Simon Marlow <simonmar at microsoft.com>**20060208150646]
[allow setting stage=N variable to select compiler in the testsuite
Simon Marlow <simonmar at microsoft.com>**20060208140219]
[Eta expand gzip test to match new higher-rank-type story
simonpj at microsoft.com**20060202131654]
[Fix GADT tests
simonpj at microsoft.com**20060202130236]
[New GADT desugaring test
simonpj at microsoft.com**20060202124603]
[Remove package lang reqt
simonpj at microsoft.com**20060202102030]
[Update to track improvements in typechecker
simonpj at microsoft.com**20060201171451]
[Update to track new scoped-tyvar story
simonpj at microsoft.com**20060201171415]
[Eta expansion and scoped type variables in generic code
simonpj at microsoft.com**20060201171238
The new story on higher-rank types requires a few functions to be
eta-expanded. And the new scoped-type-variable story also forces
a few changes.
]
[Add CPR test
simonpj at microsoft.com**20060131164801]
[remove old docs
Simon Marlow <simonmar at microsoft.com>**20060201163734]
[add test for bug #661
Simon Marlow <simonmar at microsoft.com>**20060201130720]
[fix recently-introduced breakage in 'make accept'
Simon Marlow <simonmar at microsoft.com>**20060201115729]
[Add a higher-kinded test
simonpj at microsoft.com**20060131123016]
[Add fundep test
simonpj at microsoft.com**20060131115806]
[Module import test
simonpj at microsoft.com**20060131115404]
[Wibble
simonpj at microsoft.com**20060125140817]
[Add test for bogus unusued-import message
simonpj at microsoft.com**20060125090704]
[[project @ 2006-01-19 09:47:11 by simonmar]
simonmar**20060119094711
Test tryPutMVar on empty MVars too
]
[[project @ 2006-01-18 16:31:10 by simonmar]
simonmar**20060118163112
Add a fast version of the testsuite
The idea is to have a way to run as much of the testsuite as possible
in a short time, so that we'll run it more often (such as just before
checking in a change, for example). 'make fast' tries for good
coverage without using too many cycles. Currently it takes about 4
minutes on a fast machine with an optimised GHC build; I think this
might still be a little on the slow side.
When you say 'make fast' in testsuite/tests/ghc-regress, we run each
test only one way, and all of the long-running tests are omitted.
Also, to get the runtime down further, I arbitrarily omitted many of
the should_run tests (because these tend to take a lot longer than
should_compile or should_fail tests). I tried to keep a
representative few in each category.
]
[[project @ 2006-01-18 15:25:45 by simonpj]
simonpj**20060118152545
Add test for data con in class sig
]
[[project @ 2006-01-12 16:10:41 by simonmar]
simonmar**20060112161041
Add test from ticket #488
]
[[project @ 2006-01-12 16:03:21 by simonmar]
simonmar**20060112160321
add test from ticket #441
]
[[project @ 2006-01-10 14:39:50 by simonmar]
simonmar**20060110143950
accept output
]
[[project @ 2006-01-10 14:11:53 by simonmar]
simonmar**20060110141153
comment update
]
[[project @ 2006-01-10 14:11:24 by simonmar]
simonmar**20060110141124
recode this file in UTF-8 from Latin-1
]
[[project @ 2006-01-10 13:41:48 by simonmar]
simonmar**20060110134148
accept output (improved lexer error messages)
]
[[project @ 2006-01-09 12:49:28 by simonmar]
simonmar**20060109124928
Add test case that causes a core-lint failure (cut down from
Encoding.hs in HEAD).
]
[[project @ 2006-01-09 10:29:44 by simonmar]
simonmar**20060109102944
add a cmm lint failure
]
[[project @ 2006-01-09 10:27:33 by simonmar]
simonmar**20060109102733
Add -dcmm-lint when compiling
]
[[project @ 2006-01-06 16:34:56 by simonmar]
simonmar**20060106163456
Unicode source tests
]
[[project @ 2006-01-06 16:15:19 by simonpj]
simonpj**20060106161519
Add another synonym-performance test (but comment it out of the test file; too slow!)
]
[[project @ 2006-01-06 16:14:45 by simonpj]
simonpj**20060106161445
Better type signature for higher-rank
]
[[project @ 2006-01-06 16:12:42 by simonpj]
simonpj**20060106161242
Add tests for boxy types
]
[[project @ 2006-01-06 16:08:57 by simonpj]
simonpj**20060106160857
Add GADT tests
]
[[project @ 2006-01-06 16:03:25 by simonpj]
simonpj**20060106160325
Cosmetic
]
[[project @ 2006-01-05 13:08:14 by simonpj]
simonpj**20060105130814
Add a nasty multiple-instantiation test
]
[[project @ 2006-01-05 10:06:30 by simonpj]
simonpj**20060105100630
Add test for newtype existential
]
[[project @ 2006-01-05 09:16:28 by simonmar]
simonmar**20060105091628
Add test for "scavenge_stack" bug fixed in rev 1.16 of Exception.cmm
]
[[project @ 2006-01-04 11:50:44 by simonpj]
simonpj**20060104115044
Add test for data con returning wrong type
]
[[project @ 2006-01-02 19:36:50 by jpbernardy]
jpbernardy**20060102193650
minor cleanups
]
[[project @ 2006-01-01 21:46:31 by jpbernardy]
jpbernardy**20060101214631
More tests for:
* Sets
* Non-structural equality
* Left-Bias
* Performance
]
[[project @ 2005-12-26 19:54:32 by jpbernardy]
jpbernardy**20051226195432
Infrastructure for testing Data structures.
+ some tests
]
[[project @ 2005-12-19 09:47:49 by simonpj]
simonpj**20051219094749
Add test for trailing parens in GADT signatures
]
[[project @ 2005-12-16 16:03:02 by simonpj]
simonpj**20051216160302
Add deriving for infix constructors
]
[[project @ 2005-12-16 14:56:50 by simonpj]
simonpj**20051216145650
Add repeated-type-variable tests for instance constexts
]
[[project @ 2005-12-16 10:54:50 by simonmar]
simonmar**20051216105450
TimeExts has gone away
]
[[project @ 2005-12-16 10:53:24 by simonmar]
simonmar**20051216105324
update to not use hslibs
]
[[project @ 2005-12-16 10:50:31 by simonmar]
simonmar**20051216105031
-package lang isn't required.
]
[[project @ 2005-12-16 10:46:05 by simonmar]
simonmar**20051216104605
Now that we aren't building hslibs, keep the memo tests alive by
bringing Memo.hs into the testsuite. These tests are a useful
shakedown for StableNames.
]
[[project @ 2005-12-13 16:04:25 by simonmar]
simonmar**20051213160425
Add nested atomically test
]
[[project @ 2005-12-13 16:04:09 by simonmar]
simonmar**20051213160409
fix comments
]
[[project @ 2005-12-09 19:17:57 by simonpj]
simonpj**20051209191757
add output file
]
[[project @ 2005-12-09 19:16:58 by simonpj]
simonpj**20051209191658
A minor, probably redundant, test
]
[[project @ 2005-12-05 11:43:51 by simonmar]
simonmar**20051205114351
add newTVarIO test
]
[[project @ 2005-12-05 10:08:53 by simonpj]
simonpj**20051205100853
Add an expected-failure test
]
[[project @ 2005-12-05 09:13:07 by simonpj]
simonpj**20051205091307
Update expected output
]
[[project @ 2005-12-05 09:08:51 by simonpj]
simonpj**20051205090851
Fix test
]
[[project @ 2005-12-02 10:56:34 by simonmar]
simonmar**20051202105634
add this test that I had lying around
]
[[project @ 2005-12-02 10:54:05 by simonmar]
simonmar**20051202105405
conc053 only works in threaded & smp ways at the moment.
]
[[project @ 2005-12-02 10:51:15 by simonmar]
simonmar**20051202105115
accept output
]
[[project @ 2005-12-01 08:54:57 by simonpj]
simonpj**20051201085457
Another GADT test
]
[[project @ 2005-11-30 14:17:35 by simonpj]
simonpj**20051130141735
Add mkName test
]
[[project @ 2005-11-30 12:25:20 by simonmar]
simonmar**20051130122520
Add test for Control.Concurrent.STM.registerDelay
]
[TAG Last rev before making ghc-6-4 branch
John Goerzen <jgoerzen at complete.org>**20051128164635]
[TAG Initial conversion from CVS complete
John Goerzen <jgoerzen at complete.org>**20051128163910]
Patch bundle hash:
e0ca5092145f53db655d55db5e3054cdbbb49f83
More information about the Cvs-ghc
mailing list