simonpj [Tue, 18 May 1999 15:17:58 +0000 (15:17 +0000)]
[project @ 1999-05-18 15:17:58 by simonpj]
SMALL TYPECHECKER FIXES
[The real commit preceded this, but had the stupid message "RULES-NOTES"
because I used "cvs commit -m" instead of "cvs commit -F"]
1. Allow type synonyms with kind other than '*'
2. Check that the default methods declared in a class decl are
from that class decl
simonpj [Tue, 18 May 1999 15:16:33 +0000 (15:16 +0000)]
[project @ 1999-05-18 15:16:33 by simonpj]
SIMON's MASSIVE COMMIT
[The real commit preceded this, but had the stupid message "RULES-NOTES"
because I used "cvs commit -m" instead of "cvs commit -F"]
Module reorganisation
~~~~~~~~~~~~~~~~~~~~~~~~~~~
coreSyn/CoreFVs replaces coreSyn/FreeVars
coreSyn/CoreTidy is new (was code in simplCore/SimplCore)
coreSyn/Subst is new (implements substitution incl
dealing with name clashes
main/CodeOutput is new (was gruesome code in main/Main)
parser/rulevar.ugn Ugen file for rules
prelude/ThinAir.lhs is new (defns for "thin air" ids; was in
prelude/PrelVals)
specialise/Rules is new (implements rewrite rule matching)
typecheck/TcRules is new (typechecks rewrite rules)
types/InstEnv is new (implements the instance env in Class;
replaces SpecEnv)
specialise/SpecEnv has gone
simplCore/MagicUFs has gone (hurrah)
Rewrite rules
~~~~~~~~~~~~~
This major commit adds the ability to specify transformation rules.
E.g.
{-# RULES
forall f,g,xs. map f (map g xs) = map (f . g) xs
#-}
The rules are typechecked, and survive across separate compilation.
* specialise/SpecEnv.lhs has gone, replaced by specialise/Rules.lhs.
Rules.lhs implements transformation-rule matching.
* Info about class instances is no longer held in a SpecEnv in the class;
instead classes have their own thing, typecheck/InstEnv.lhs
* Specialisations are held in list of rules, held inside an Id.
So although specialisations arise from SPECIALISE pragmas and
uses of overloaded functions, they are still expressed as transformation
rules. However these rules are held inside the relevant Id, as
before. The RULES ones are held globally.
Cloning
~~~~~~~
I've removed -fplease-clone as a simplifier flag. It complicates the
plumbing quite a bit. The simplifier now simply ensures that there's
no shadowing in its output.
It's up to other passes to solve their own cloning problems. It turned
out to be easy:
- SetLevels clones where necessary, so that floating out
doesn't cause a problem.
- CoreToStg clones so that the code generator can use uniques
for labels
Instead, the simplifier clones by using VarSet.uniqAway to find a unique
that doesn't conflict with any that are in scope. If you say -dppr-debug
you get a trace of how many times uniqAway had to loop before finding a
suitable unique. It's too much at present; something to improve.
Flags
~~~~~
* I have stopped -fcase-of-case and friends being 'per-simplfication'
flags, and instead made them global 'opt_' things. This is simpler
and more efficient, and the extra expressiveness was never used anyway.
* -dsimplifier-stats has been renamed to -ddump-simpl-stats
and prints much more coherent info than before.
If you add -dppr-debug you get much more detailed information.
* -ddump-inlinings is more or less as before, but a bit improved.
Inlining and inline phase
~~~~~~~~~~~~~~~~~~~~~~~~~
I've moved the crucial inline-control function (now called callSiteInline)
to CoreUnfold from Simplify, so that all the key inlining decisions are
made in CoreUnfold.
I've removed IWantToBeINLINEd as an InlinePragInfo on an Id. Instead, I've
added a new Note on expressions, InlineMe. This is much more robust to
program transformations than the old way. Essentially, an expression
wrapped in an InlineMe note looks small to the inliner.
In order to prevent variables on the LHS of transformation rules being inlined
prematurely, the simplifier maintains a "black list" of variables that should
not be inlined. Before each run of the simplifier, it constructs its black
list based on the "inline phase number", controlled by the per-simplification
flag -finline-phase1, -finline-phase2 etc. Details of what happens in the
different phases are defined by the function CoreUnfold.blackListed.
Function and primop arguments
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
I've improved the way that the simplifier deals with strict arguments of functions
and primops. These are now both dealt with by Simplify.prepareArgs. As as result
strict arguments are no longer case-ifyd in Core. That happens in the core-to-stg
transformation. This is important so that transformation rules work easily.
We want to see foldr k z (build g)
and not case build g of { x -> foldr k z x }
CoreToStg now takes accouunt of the strictness of functions and primops, to
ensure that strict arguments are done with case.
Cheap primops
~~~~~~~~~~~~~
Primops that are cheap and can't fail (i.e not divide!) reply True to primOpOkForSpeculation.
Applications of such primops are now allowed to appear in lets (rather than cases),
so that they are easier to float. They are honorary lets, in the sense that they can
float out or in without damage. Again core-to-stg turns them into cases.
Class op selectors
~~~~~~~~~~~~~~~~~~
Generate bindings for class-op selectors. The immediate reason for doing this
is so we can write transformation rules involving them; black-listing won't
work if they have to be inlined! The longer-term reason is because Hugs will
need these bindings. Also there's no point in inling them if the dictionary
is lambda bound.
Simplifier
~~~~~~~~~~
I've made a number of detailed changes to the innards of the simplifier.
Result is (a bit) less code, and fewer iterations. Only the biggest modules
provoke the "more than 4 iterations" complaint.
... And tons of other minor stuff ...
simonpj [Tue, 18 May 1999 15:05:18 +0000 (15:05 +0000)]
[project @ 1999-05-18 15:03:54 by simonpj]
RULES-NOTES
simonpj [Tue, 18 May 1999 15:03:53 +0000 (15:03 +0000)]
[project @ 1999-05-18 15:03:53 by simonpj]
Driver updates for Simons main commit; rewrite rules and flaggery
simonpj [Tue, 18 May 1999 15:03:51 +0000 (15:03 +0000)]
[project @ 1999-05-18 15:03:33 by simonpj]
RULES-NOTES
simonpj [Tue, 18 May 1999 14:59:24 +0000 (14:59 +0000)]
[project @ 1999-05-18 14:59:04 by simonpj]
../compiler/msg_prel
simonpj [Tue, 18 May 1999 14:56:15 +0000 (14:56 +0000)]
[project @ 1999-05-18 14:56:06 by simonpj]
msg_rn
simonpj [Tue, 18 May 1999 14:55:48 +0000 (14:55 +0000)]
[project @ 1999-05-18 14:55:47 by simonpj]
msg_tc
simonm [Tue, 18 May 1999 09:19:23 +0000 (09:19 +0000)]
[project @ 1999-05-18 09:19:23 by simonm]
Another sparc/egcs fix.
simonm [Mon, 17 May 1999 16:22:14 +0000 (16:22 +0000)]
[project @ 1999-05-17 16:22:14 by simonm]
Fix for egcs on sparc.
simonm [Mon, 17 May 1999 14:48:30 +0000 (14:48 +0000)]
[project @ 1999-05-17 14:48:30 by simonm]
Workarond apparent bug in FreeBSD 'sh'.
sof [Fri, 14 May 1999 19:49:23 +0000 (19:49 +0000)]
[project @ 1999-05-14 19:49:22 by sof]
Added (yield :: IO ()) - the underlying bits were already there, really.
simonm [Fri, 14 May 1999 11:23:47 +0000 (11:23 +0000)]
[project @ 1999-05-14 11:23:47 by simonm]
Tmp fix: compile HsBasic with -fno-prune-tydecls.
simonm [Thu, 13 May 1999 17:31:14 +0000 (17:31 +0000)]
[project @ 1999-05-13 17:30:50 by simonm]
Support for "unregisterised" builds. An unregisterised build doesn't
use the assembly mangler, doesn't do tail jumping (uses the
mini-interpreter), and doesn't use global register variables.
Plenty of cleanups and bugfixes in the process.
Add way 'u' to GhcLibWays to get unregisterised libs & RTS.
[ note: not *quite* working fully yet... there's still a bug or two
lurking ]
sof [Thu, 13 May 1999 13:08:24 +0000 (13:08 +0000)]
[project @ 1999-05-13 13:08:24 by sof]
Added documentation for (yield :: IO ())
sof [Thu, 13 May 1999 11:03:11 +0000 (11:03 +0000)]
[project @ 1999-05-13 11:03:10 by sof]
Testing the Random library (not complete).
sof [Thu, 13 May 1999 11:00:07 +0000 (11:00 +0000)]
[project @ 1999-05-13 11:00:07 by sof]
randomIvalInteger: The difference between '1' and 'l' is rather slight
at the level of pixels. At the level of Haskell programs however, the
difference is rather more pronounced :)
sof [Thu, 13 May 1999 10:52:55 +0000 (10:52 +0000)]
[project @ 1999-05-13 10:52:55 by sof]
wibble
sof [Thu, 13 May 1999 10:45:05 +0000 (10:45 +0000)]
[project @ 1999-05-13 10:45:03 by sof]
Fised & improved lexing of escaped numeric character literals + a regression
test.
keithw [Wed, 12 May 1999 12:24:16 +0000 (12:24 +0000)]
[project @ 1999-05-12 12:23:53 by keithw]
Fix some tests, mainly to deal with new dictionary format in interface files.
keithw [Tue, 11 May 1999 17:05:49 +0000 (17:05 +0000)]
[project @ 1999-05-11 17:05:43 by keithw]
Remove some comments left in by mistake.
keithw [Tue, 11 May 1999 16:49:44 +0000 (16:49 +0000)]
[project @ 1999-05-11 16:49:44 by keithw]
Whoops, forgot to mention the following change:
Various ticky counters have changed:
- TICK_ALLOC_THK is now TICK_ALLOC_{UP,SE}_THK (updatable versus
single-entry).
- TICK_UPD_{NEW,OLD}_IND is now TICK_UPD_{NEW,OLD}_{,PERM_}IND.
- UPD_{CAF_,}BH_{UPDATABLE,SINGLE_ENTRY}_ctr added, counting the
creation of various flavours of black holes.
- ENT_PERM_IND, UPD_{NEW,OLD}_PERM_IND are only dumped if update
squeezing is off; see comment in Ticky.c
Some documentation for ticky-ticky has been added to the user guide.
keithw [Tue, 11 May 1999 16:48:00 +0000 (16:48 +0000)]
[project @ 1999-05-11 16:47:39 by keithw]
(this is number 9 of 9 commits to be applied together)
Usage verification changes / ticky-ticky changes:
We want to verify that SingleEntry thunks are indeed entered at most
once. In order to do this, -ticky / -DTICKY_TICKY turns on eager
blackholing. We blackhole with new blackholes: SE_BLACKHOLE and
SE_CAF_BLACKHOLE. We will enter one of these if we attempt to enter
a SingleEntry thunk twice. Note that CAFs are dealt with in by
codeGen, and ordinary thunks by the RTS.
We also want to see how many times we enter each Updatable thunk.
To this end, we have modified -ticky. When -ticky is on, we update
with a permanent indirection, and arrange that when we enter a
permanent indirection we count the entry and then convert the
indirection to a normal indirection. This gives us a means of
counting the number of thunks entered again after the first entry.
Obviously this screws up profiling, and so you can't build a ticky
and profiling compiler any more.
Also a few other changes that didn't make it into the previous 8
commits, but form a part of this set.
keithw [Tue, 11 May 1999 16:46:20 +0000 (16:46 +0000)]
[project @ 1999-05-11 16:46:20 by keithw]
(this is number 8 of 9 commits to be applied together)
The CPP flag LAZY_BLACKHOLING has been moved up from options.h into
Stg.h, so GHC can see it as well as the interpreter, and
EAGER_BLACKHOLING has been added. The default is still
LAZY_BLACKHOLING && !EAGER_BLACKHOLING.
keithw [Tue, 11 May 1999 16:44:07 +0000 (16:44 +0000)]
[project @ 1999-05-11 16:44:02 by keithw]
(this is number 7 of 9 commits to be applied together)
The code generator now incorporates the update avoidance
optimisation: a thunk of __o type is now made SingleEntry rather
than Updatable.
We want to verify that SingleEntry thunks are indeed entered at most
once. In order to do this, -ticky turns on eager blackholing.
Ordinary thunks will be dealt with by the RTS, but CAFs are
blackholed by the code generator. We blackhole with new blackholes:
SE_CAF_BLACKHOLE. We will enter one of these if we attempt to enter
a SingleEntry thunk twice.
keithw [Tue, 11 May 1999 16:42:54 +0000 (16:42 +0000)]
[project @ 1999-05-11 16:42:54 by keithw]
(this is number 6 of 9 commits to be applied together)
It is useful to know the usage of a lambda outside the usage
inference (specifically, in the simplifier); thus as a temporary
hack to make this information available without undue modification
to the rest of the compiler, the information is copied into the
IdInfo field of the binder.
The new information is LBVarInfo, which can be either NoLBVarInfo or
IsOneShotLambda, corresponding to __m/no info and __o respectively.
LBVarInfo is not intended to be printed in interface files; to
enforce this ppLBVarInfo is defined to print nothing.
keithw [Tue, 11 May 1999 16:42:32 +0000 (16:42 +0000)]
[project @ 1999-05-11 16:42:29 by keithw]
(this is number 5b of 9 commits to be applied together)
The major purpose of this commit is to introduce usage information
and usage analysis into the compiler, per the paper _Once Upon a
Polymorphic Type_ (Keith Wansbrough and Simon Peyton Jones, POPL'99,
and Glasgow TR-1998-19).
An analysis is provided that annotates a Core program with optimal
usage annotations. This analysis is performed by -fusagesp
(=CoreDoUSPInf), and requires -fusagesp-on (=opt_UsageSPOn). This
latter performs an analysis in tidyCorePgm, immediately before
CoreToStg is done. The driver flag -fusagesp currently provides hsc
with -fusagesp-on, and if -O is on does a single -fusagesp early on
in the Core-to-Core sequence. Please change this as desired.
*NB*: For now, -fusagesp with -O requires -fno-specialise. Sorry.
The flags -ddump-usagesp (=opt_D_dump_usagesp) and -dusagesp-lint
(=opt_DoUSPLinting) (also -dnousagesp-lint to the driver) have been
added and are documented in the User Guide.
keithw [Tue, 11 May 1999 16:41:59 +0000 (16:41 +0000)]
[project @ 1999-05-11 16:41:56 by keithw]
(this is number 5a of 9 commits to be applied together)
The major purpose of this commit is to introduce usage information
and usage analysis into the compiler, per the paper _Once Upon a
Polymorphic Type_ (Keith Wansbrough and Simon Peyton Jones, POPL'99,
and Glasgow TR-1998-19).
An analysis is provided that annotates a Core program with optimal
usage annotations. This analysis is performed by -fusagesp
(=CoreDoUSPInf), and requires -fusagesp-on (=opt_UsageSPOn). This
latter performs an analysis in tidyCorePgm, immediately before
CoreToStg is done. The driver flag -fusagesp currently provides hsc
with -fusagesp-on, and if -O is on does a single -fusagesp early on
in the Core-to-Core sequence. Please change this as desired.
*NB*: For now, -fusagesp with -O requires -fno-specialise. Sorry.
The flags -ddump-usagesp (=opt_D_dump_usagesp) and -dusagesp-lint
(=opt_DoUSPLinting) (also -dnousagesp-lint to the driver) have been
added and are documented in the User Guide.
keithw [Tue, 11 May 1999 16:38:04 +0000 (16:38 +0000)]
[project @ 1999-05-11 16:37:29 by keithw]
(this is number 4 of 9 commits to be applied together)
The major purpose of this commit is to introduce usage information
and usage analysis into the compiler, per the paper _Once Upon a
Polymorphic Type_ (Keith Wansbrough and Simon Peyton Jones, POPL'99,
and Glasgow TR-1998-19).
Usage information has been added to types, in the form of a new kind
of NoteTy: (UsgNote UsageAnn(UsOnce|UsMany|UsVar UVar)). Usages
print as __o (once), __m (many, usually omitted), or (not in
interface files) __uvxxxx. Usage annotations should only appear at
certain places in a type (see the paper). The `default' annotation
is __m, and so an omitted annotation implies __m. Utility functions
for handling usage annotations are provided in Type.
If the compiler is built with -DUSMANY (a flag intended for use in
debugging by KSW only), __m are *required* and may not be omitted.
The major constraint is that type arguments (eg to mkAppTy) must be
unannotated on top. To maintain this invariant, many functions
required the insertion of Type.unUsgTy (removing annot from top of a
type) or UsageSPUtils.unannotTy (removing all annotations from a
type). A function returning usage-annotated types for primops has
been added to PrimOp.
A new kind of Note, (TermUsg UsageAnn), has been added to annotate
Terms. This note is *not* printed in interface files, and for the
present does not escape the internals of the usage inference engine.
keithw [Tue, 11 May 1999 16:33:35 +0000 (16:33 +0000)]
[project @ 1999-05-11 16:33:35 by keithw]
(this is number 3 of 9 commits to be applied together)
Following Haskell 98, if the module declaration is omitted it now
defaults to "module Main(main) where", rather than the previous
default of exporting everything.
Furthermore, "module Main where" also defaults to exporting just
Main.main rather than everything in the module (modules other than
Main behave as normal). This permits the usage inference to give
better results for the Main module, since exported functions get
worse types than nonexported functions.
keithw [Tue, 11 May 1999 16:33:11 +0000 (16:33 +0000)]
[project @ 1999-05-11 16:33:06 by keithw]
(this is number 2 of 9 commits to be applied together)
Type constructors now carry information on the variance (positive
and/or negative) of each of their type arguments (tyConArgVrcs).
This information is provided for primitive types and computed for
others. If a tycon has been imported abstractly and this variance
information is subsequently demanded, we make a pessimistic
assumption and warn that -fno-prune-tydecls should be used.
keithw [Tue, 11 May 1999 16:31:33 +0000 (16:31 +0000)]
[project @ 1999-05-11 16:31:33 by keithw]
(this is number 1 of 9 commits to be applied together)
Dictionaries now appear in interface files explicitly, rather than
as contexts: __forall [a] => {Show a} -> ... rather than __forall
[a] {Show a} => ... .
sof [Tue, 11 May 1999 14:38:47 +0000 (14:38 +0000)]
[project @ 1999-05-11 14:38:47 by sof]
myThreadId doc'ed
sof [Tue, 11 May 1999 09:15:19 +0000 (09:15 +0000)]
[project @ 1999-05-11 09:15:19 by sof]
couple of fixes (courtesy of MPJ)
sof [Mon, 10 May 1999 19:49:16 +0000 (19:49 +0000)]
[project @ 1999-05-10 19:49:15 by sof]
minor updates
sof [Mon, 10 May 1999 17:54:00 +0000 (17:54 +0000)]
[project @ 1999-05-10 17:53:59 by sof]
Assuming that the TC sometime in the future will want to start looking
at infix decls (right, Simon?), the renamer currently passes them on
rather than filter.
Couple of TC tweaks to have it non-burpingly handle such FixSigs
inside class decls.
sof [Mon, 10 May 1999 16:55:43 +0000 (16:55 +0000)]
[project @ 1999-05-10 16:55:43 by sof]
The implementation of hGetLine, as given in the report, doesn't handle
partial lines on unbuffered handles that well (not at all, as it turns
out). Fixed.
sof [Mon, 10 May 1999 16:52:11 +0000 (16:52 +0000)]
[project @ 1999-05-10 16:52:10 by sof]
PrelHandle.withHandle: don't catch IO exceptions.
sof [Mon, 10 May 1999 13:13:18 +0000 (13:13 +0000)]
[project @ 1999-05-10 13:13:18 by sof]
yet another bugfix to the 'deriving Read' code
simonm [Mon, 10 May 1999 10:12:28 +0000 (10:12 +0000)]
[project @ 1999-05-10 10:12:25 by simonm]
Test fixes.
sof [Mon, 10 May 1999 10:06:24 +0000 (10:06 +0000)]
[project @ 1999-05-10 10:06:24 by sof]
oops, args to startupHaskell() wrong way around
sof [Mon, 10 May 1999 09:56:50 +0000 (09:56 +0000)]
[project @ 1999-05-10 09:56:50 by sof]
extend cleanup to integer2Word#
simonm [Mon, 10 May 1999 09:50:49 +0000 (09:50 +0000)]
[project @ 1999-05-10 09:50:49 by simonm]
integer2Int# take 4: cleaned up a little.
sof [Mon, 10 May 1999 09:26:41 +0000 (09:26 +0000)]
[project @ 1999-05-10 09:26:41 by sof]
integer2Int#, take 3
sof [Mon, 10 May 1999 08:23:57 +0000 (08:23 +0000)]
[project @ 1999-05-10 08:23:55 by sof]
Added a DllMain() which starts up RTS upon DLL load.
sof [Fri, 7 May 1999 15:42:49 +0000 (15:42 +0000)]
[project @ 1999-05-07 15:42:49 by sof]
integer2Int# again: don't flip sign unless outside [minInt,maxInt]
simonm [Fri, 7 May 1999 14:52:53 +0000 (14:52 +0000)]
[project @ 1999-05-07 14:52:49 by simonm]
some test updates
simonm [Fri, 7 May 1999 13:44:00 +0000 (13:44 +0000)]
[project @ 1999-05-07 13:44:00 by simonm]
Fix bug in tagToEnum#: if the amode of the tag overlapped with node,
bogus code would be generated. Now load the tag into a temporary
before doing the table lookup.
sof [Fri, 7 May 1999 13:41:14 +0000 (13:41 +0000)]
[project @ 1999-05-07 13:41:14 by sof]
Fixed two showstopping bugs in 'deriving Read' code (mea culpa).
simonm [Fri, 7 May 1999 11:31:12 +0000 (11:31 +0000)]
[project @ 1999-05-07 11:31:12 by simonm]
Don't try to make a tag2con function if we're deriving Ix on a
single-constructor datatype (it isn't needed, and will probably be
type-incorrect anyway).
simonm [Fri, 7 May 1999 11:16:37 +0000 (11:16 +0000)]
[project @ 1999-05-07 11:16:37 by simonm]
Ignore exceptions in the spawned threads.
simonm [Fri, 7 May 1999 11:10:45 +0000 (11:10 +0000)]
[project @ 1999-05-07 11:10:45 by simonm]
Don't test for CLOSURE_SHOULD_SPARK in forkzh, because forkzh's argument
is an IO action and we're about to apply it to the state anyway.
simonm [Thu, 6 May 1999 08:41:10 +0000 (08:41 +0000)]
[project @ 1999-05-06 08:41:10 by simonm]
s/finalis/finaliz/g
sof [Thu, 6 May 1999 08:32:51 +0000 (08:32 +0000)]
[project @ 1999-05-06 08:32:51 by sof]
Add -lwsock32 to linker command line, if needs be
keithw [Wed, 5 May 1999 11:39:09 +0000 (11:39 +0000)]
[project @ 1999-05-05 11:39:09 by keithw]
Add a space to panic message from zipWith*Equal.
sof [Wed, 5 May 1999 10:48:06 +0000 (10:48 +0000)]
[project @ 1999-05-05 10:48:03 by sof]
DLL config added
sof [Wed, 5 May 1999 10:39:25 +0000 (10:39 +0000)]
[project @ 1999-05-05 10:39:25 by sof]
Improved the splitting of the std. generator
sof [Wed, 5 May 1999 10:36:31 +0000 (10:36 +0000)]
[project @ 1999-05-05 10:36:29 by sof]
switch over to using Winsock on the _WIN32 side
sof [Wed, 5 May 1999 10:34:55 +0000 (10:34 +0000)]
[project @ 1999-05-05 10:34:53 by sof]
stubs for starting & stopping Winsock
sof [Wed, 5 May 1999 10:33:17 +0000 (10:33 +0000)]
[project @ 1999-05-05 10:33:13 by sof]
Winsock support
sof [Wed, 5 May 1999 08:35:02 +0000 (08:35 +0000)]
[project @ 1999-05-05 08:35:02 by sof]
Empty rec pattern test
sof [Wed, 5 May 1999 08:31:00 +0000 (08:31 +0000)]
[project @ 1999-05-05 08:31:00 by sof]
Allow record pattern "F{}" on any old constructor, not just with those
that have labelled fields.
sof [Tue, 4 May 1999 19:31:53 +0000 (19:31 +0000)]
[project @ 1999-05-04 19:31:51 by sof]
Check for presence of winsock.h
sof [Tue, 4 May 1999 10:19:19 +0000 (10:19 +0000)]
[project @ 1999-05-04 10:19:14 by sof]
Misc tweaks to Win32 DLL setup
sof [Tue, 4 May 1999 10:16:51 +0000 (10:16 +0000)]
[project @ 1999-05-04 10:16:51 by sof]
Module defn files for RTS + the bits that the RTS need from the Prelude
sof [Tue, 4 May 1999 08:58:18 +0000 (08:58 +0000)]
[project @ 1999-05-04 08:58:18 by sof]
integer2Int# isn't sign preserving any longer, but modulo maxBound
sof [Tue, 4 May 1999 08:52:23 +0000 (08:52 +0000)]
[project @ 1999-05-04 08:52:22 by sof]
Moved DLL-related macros out of Stg.h and into separate .h file
sof [Tue, 4 May 1999 08:50:43 +0000 (08:50 +0000)]
[project @ 1999-05-04 08:50:43 by sof]
Removed last vestiges of PrelBase_Bool_closure_tbl (yes\!)
sof [Tue, 4 May 1999 08:47:32 +0000 (08:47 +0000)]
[project @ 1999-05-04 08:47:32 by sof]
* Added option --mk-dll (and -optdll<foo>) to ease the creation of DLLs containing
ghc-compiled code (see docs for details).
* Fixed bug which caused non-std ways to pick up the std way's interface files
when compiling the prelude.
sof [Tue, 4 May 1999 08:40:07 +0000 (08:40 +0000)]
[project @ 1999-05-04 08:40:07 by sof]
a rule or two for building DLLs
sof [Tue, 4 May 1999 08:38:53 +0000 (08:38 +0000)]
[project @ 1999-05-04 08:38:53 by sof]
Added support for dllwrap options
sof [Tue, 4 May 1999 08:37:55 +0000 (08:37 +0000)]
[project @ 1999-05-04 08:37:55 by sof]
added a new way (dll) to use when building Prelude DLLs
sof [Tue, 4 May 1999 08:36:30 +0000 (08:36 +0000)]
[project @ 1999-05-04 08:36:29 by sof]
added HAVE_WIN32_DLL_SUPPORT
sof [Tue, 4 May 1999 08:35:12 +0000 (08:35 +0000)]
[project @ 1999-05-04 08:35:12 by sof]
New option: --enable-win32-dlls
sof [Tue, 4 May 1999 08:31:53 +0000 (08:31 +0000)]
[project @ 1999-05-04 08:31:51 by sof]
Updated _casm_ example
sof [Tue, 4 May 1999 08:30:44 +0000 (08:30 +0000)]
[project @ 1999-05-04 08:30:44 by sof]
a howto on Win32 DLLs
sof [Mon, 3 May 1999 13:22:29 +0000 (13:22 +0000)]
[project @ 1999-05-03 13:22:29 by sof]
Win32'ified
simonpj [Thu, 29 Apr 1999 12:21:50 +0000 (12:21 +0000)]
[project @ 1999-04-29 12:21:50 by simonpj]
Document Olaf Chitils point about pattern matching against a polymoprhic argument
simonpj [Thu, 29 Apr 1999 11:53:34 +0000 (11:53 +0000)]
[project @ 1999-04-29 11:53:12 by simonpj]
Minor fixes to tests
simonm [Thu, 29 Apr 1999 10:38:33 +0000 (10:38 +0000)]
[project @ 1999-04-29 10:38:33 by simonm]
indexArray# fix.
sewardj [Wed, 28 Apr 1999 12:59:51 +0000 (12:59 +0000)]
[project @ 1999-04-28 12:59:51 by sewardj]
Nano-fixes to make it work on sparc-solaris.
sewardj [Wed, 28 Apr 1999 12:42:45 +0000 (12:42 +0000)]
[project @ 1999-04-28 12:42:45 by sewardj]
Change PK_DBL and ASSIGN_DBL macros for sparc so they only reference their
arguments once.
simonm [Wed, 28 Apr 1999 08:30:58 +0000 (08:30 +0000)]
[project @ 1999-04-28 08:30:58 by simonm]
merge --> mergeIO
sof [Tue, 27 Apr 1999 18:30:26 +0000 (18:30 +0000)]
[project @ 1999-04-27 18:30:26 by sof]
When installing, append to entries in PACKAGE_BINS list
sof [Tue, 27 Apr 1999 17:44:27 +0000 (17:44 +0000)]
[project @ 1999-04-27 17:44:26 by sof]
For a forkIO'ed process, report uncaught exceptions on stderr.
sof [Tue, 27 Apr 1999 17:41:20 +0000 (17:41 +0000)]
[project @ 1999-04-27 17:41:17 by sof]
* Added toplevel exception handler:
topHandler :: Bool -- bomb on exception caught
-> Exception
-> IO ()
for PrelMain.mainIO and Concurrent.forkIO to use
* moved forkIO out of PrelConc and into Concurrent.
sof [Tue, 27 Apr 1999 17:34:00 +0000 (17:34 +0000)]
[project @ 1999-04-27 17:33:49 by sof]
Renamer changes:
- for a toplevel type signature
f :: ty
the name 'f' refers to a local definition of 'f' - i.e., don't
report 'f' as clashing with any imported 'f's.
- tidied up the handling of fixity declarations - misplaced fixity
declarations inside class decls, e.g.,
class F a where
infix 9 `f`
g :: a -> Int
are now caught and reported as errors. Robustified the renaming
of class decls.
keithw [Tue, 27 Apr 1999 17:26:15 +0000 (17:26 +0000)]
[project @ 1999-04-27 17:26:09 by keithw]
glasgow-haskell-{bugs,users} has moved.
simonm [Tue, 27 Apr 1999 15:50:07 +0000 (15:50 +0000)]
[project @ 1999-04-27 15:50:07 by simonm]
unboxed 1-tuples are legal.
simonm [Tue, 27 Apr 1999 15:23:29 +0000 (15:23 +0000)]
[project @ 1999-04-27 15:23:29 by simonm]
Mark PrimOp arguments as lazy. This stops the simplifier throwing
away cases, and is consistent with the way applications work. We
could probably do better by using the information from
primOpStrictness.
simonm [Tue, 27 Apr 1999 15:21:32 +0000 (15:21 +0000)]
[project @ 1999-04-27 15:21:32 by simonm]
off-by-one in folding of tagToEnum#.
simonm [Tue, 27 Apr 1999 15:20:22 +0000 (15:20 +0000)]
[project @ 1999-04-27 15:20:20 by simonm]
deriving fixes.
simonm [Tue, 27 Apr 1999 15:03:20 +0000 (15:03 +0000)]
[project @ 1999-04-27 15:03:20 by simonm]
indexArray# changes.
simonm [Tue, 27 Apr 1999 14:35:25 +0000 (14:35 +0000)]
[project @ 1999-04-27 14:35:25 by simonm]
indexArray# now returns an unboxed 1-tuple.
sewardj [Tue, 27 Apr 1999 14:13:01 +0000 (14:13 +0000)]
[project @ 1999-04-27 14:13:01 by sewardj]
Firstified a few common fns for a modest performance gain,
ie, elem = any . (==) ===> directly recursive version.
sewardj [Tue, 27 Apr 1999 14:07:55 +0000 (14:07 +0000)]
[project @ 1999-04-27 14:07:53 by sewardj]
Further fixes to make -DDEBUG work right from mk/build.mk.
simonm [Tue, 27 Apr 1999 12:34:59 +0000 (12:34 +0000)]
[project @ 1999-04-27 12:34:49 by simonm]
- Fix the tagToEnum# support in the code generator
- Make isDeadBinder work on case binders
- Fix compiling of
case x `op` y of z {
True -> ... z ...
False -> ... z ...
- Clean up CgCase a little.
- Don't generate specialised tag2con functions for derived Enum/Ix
instances; use tagToEnum# instead.
simonm [Tue, 27 Apr 1999 12:32:15 +0000 (12:32 +0000)]
[project @ 1999-04-27 12:32:15 by simonm]
Remove declaration of PrelBase_Bool_closure_tbl.
simonm [Tue, 27 Apr 1999 12:31:40 +0000 (12:31 +0000)]
[project @ 1999-04-27 12:31:40 by simonm]
Add macros for declaring closure tables.
simonm [Tue, 27 Apr 1999 12:30:26 +0000 (12:30 +0000)]
[project @ 1999-04-27 12:30:26 by simonm]
Remove PrelBase_Bool_closure_tbl; this is now generated automatically.