ghc-hetmet.git
20 years ago[project @ 2004-02-12 02:01:54 by mthomas]
mthomas [Thu, 12 Feb 2004 02:01:54 +0000 (02:01 +0000)]
[project @ 2004-02-12 02:01:54 by mthomas]
Rejig haddock and alex.

20 years ago[project @ 2004-02-11 09:19:01 by simonmar]
simonmar [Wed, 11 Feb 2004 09:19:01 +0000 (09:19 +0000)]
[project @ 2004-02-11 09:19:01 by simonmar]
Happy 1.14 is needed to compile the HEAD these days.

20 years ago[project @ 2004-02-10 17:55:24 by simonpj]
simonpj [Tue, 10 Feb 2004 17:55:24 +0000 (17:55 +0000)]
[project @ 2004-02-10 17:55:24 by simonpj]
Always expose newtypes, at least for now (see comments)

20 years ago[project @ 2004-02-10 17:54:50 by simonpj]
simonpj [Tue, 10 Feb 2004 17:54:50 +0000 (17:54 +0000)]
[project @ 2004-02-10 17:54:50 by simonpj]
Comments only

20 years ago[project @ 2004-02-09 17:23:20 by ross]
ross [Mon, 9 Feb 2004 17:23:20 +0000 (17:23 +0000)]
[project @ 2004-02-09 17:23:20 by ross]
only uses FFI, not glasgow-exts.  also updated ffi syntax

20 years ago[project @ 2004-02-09 17:21:33 by ross]
ross [Mon, 9 Feb 2004 17:21:33 +0000 (17:21 +0000)]
[project @ 2004-02-09 17:21:33 by ross]
the H98 Report no longer says Char is 16 bits, plus a typo

20 years ago[project @ 2004-02-09 15:04:19 by malcolm]
malcolm [Mon, 9 Feb 2004 15:04:20 +0000 (15:04 +0000)]
[project @ 2004-02-09 15:04:19 by malcolm]
Some hints about compiling hsc2hs with nhc98.

20 years ago[project @ 2004-02-07 16:37:06 by panne]
panne [Sat, 7 Feb 2004 16:37:07 +0000 (16:37 +0000)]
[project @ 2004-02-07 16:37:06 by panne]
Simplifications + small steps towards a stand-alone hsc2hs:

 * Replaced Config module by a simple CPP macro
 * Don't #include configuration header
 * Bumped version number
 * Warning police

20 years ago[project @ 2004-02-07 14:08:57 by panne]
panne [Sat, 7 Feb 2004 14:08:57 +0000 (14:08 +0000)]
[project @ 2004-02-07 14:08:57 by panne]
Fixed ingenious sed magic for package configuration files.
Do we really need any sed mangling with gcc's -P option???

20 years ago[project @ 2004-02-05 14:35:44 by panne]
panne [Thu, 5 Feb 2004 14:35:44 +0000 (14:35 +0000)]
[project @ 2004-02-05 14:35:44 by panne]
* (Hopefully) made the recursive nature of autoreconf clear
* We don't need automake
* configure doesn't create a cache by default

20 years ago[project @ 2004-02-05 09:46:22 by simonpj]
simonpj [Thu, 5 Feb 2004 09:46:22 +0000 (09:46 +0000)]
[project @ 2004-02-05 09:46:22 by simonpj]
Mention autoreconf, not autoconf

20 years ago[project @ 2004-02-04 15:12:41 by simonmar]
simonmar [Wed, 4 Feb 2004 15:12:41 +0000 (15:12 +0000)]
[project @ 2004-02-04 15:12:41 by simonmar]
Remove $(SCRIPT_OBJS) from $(MOSTLY_CLEAN_FILES) (added in
prev. commit).  It turns out that we put actual sources in
$(SCRIPT_OBJS) in several places, so it does not consist of entirely
re-buildable things.

20 years ago[project @ 2004-02-04 10:00:43 by simonmar]
simonmar [Wed, 4 Feb 2004 10:00:43 +0000 (10:00 +0000)]
[project @ 2004-02-04 10:00:43 by simonmar]
Use parsec package when bootstrapping.

20 years ago[project @ 2004-02-03 16:46:33 by simonpj]
simonpj [Tue, 3 Feb 2004 16:46:33 +0000 (16:46 +0000)]
[project @ 2004-02-03 16:46:33 by simonpj]
Add comments about Template Haskell

20 years ago[project @ 2004-02-03 10:50:46 by simonmar]
simonmar [Tue, 3 Feb 2004 10:50:46 +0000 (10:50 +0000)]
[project @ 2004-02-03 10:50:46 by simonmar]
Go back to using $(OBJS) to build $(HS_PROG).

20 years ago[project @ 2004-02-03 10:49:17 by simonmar]
simonmar [Tue, 3 Feb 2004 10:49:17 +0000 (10:49 +0000)]
[project @ 2004-02-03 10:49:17 by simonmar]
Remove $(SCRIPT_OBJS) from $(OBJS) - it can't be serving any useful
purpose there.

20 years ago[project @ 2004-02-02 10:49:20 by simonmar]
simonmar [Mon, 2 Feb 2004 10:49:20 +0000 (10:49 +0000)]
[project @ 2004-02-02 10:49:20 by simonmar]
Accept '-}' at the end of a LINE pragma, in addition to '#-}', for
compatibility with GHC <= 4.08(!).

20 years ago[project @ 2004-02-02 10:07:37 by simonmar]
simonmar [Mon, 2 Feb 2004 10:07:37 +0000 (10:07 +0000)]
[project @ 2004-02-02 10:07:37 by simonmar]
Fix build

20 years ago[project @ 2004-02-01 23:43:02 by dons]
dons [Sun, 1 Feb 2004 23:43:02 +0000 (23:43 +0000)]
[project @ 2004-02-01 23:43:02 by dons]
typo in comment only: 'Browing' -> 'Browsing'

20 years ago[project @ 2004-01-30 09:35:20 by simonmar]
simonmar [Fri, 30 Jan 2004 09:35:20 +0000 (09:35 +0000)]
[project @ 2004-01-30 09:35:20 by simonmar]
On second thoughts, just use $(HS_OBJS) and $(C_OBJS) in the HS_PROG
rule.  We don't want SCRIPT_OBJS in there too.

20 years ago[project @ 2004-01-28 17:26:48 by igloo]
igloo [Wed, 28 Jan 2004 17:26:48 +0000 (17:26 +0000)]
[project @ 2004-01-28 17:26:48 by igloo]
Import getPrimRepSize, isFloatingRep, typePrimRep for alpha.

20 years ago[project @ 2004-01-28 10:27:26 by simonmar]
simonmar [Wed, 28 Jan 2004 10:27:26 +0000 (10:27 +0000)]
[project @ 2004-01-28 10:27:26 by simonmar]
Build $(HS_PROG) from $(OBJS), not $(HS_OBJS).  In general a Haskell
program might have C bits too, and we don't want to have to hack this
into the Makefile each time.

20 years ago[project @ 2004-01-28 10:22:27 by simonmar]
simonmar [Wed, 28 Jan 2004 10:22:27 +0000 (10:22 +0000)]
[project @ 2004-01-28 10:22:27 by simonmar]
Don't add C_OBJS to HS_OBJS.

20 years ago[project @ 2004-01-28 10:04:25 by simonpj]
simonpj [Wed, 28 Jan 2004 10:04:25 +0000 (10:04 +0000)]
[project @ 2004-01-28 10:04:25 by simonpj]
---------------------------------------
    Fix the WinME/98/95 double-backslash bug
  ---------------------------------------

Merge to stable branch, at least
once we are sure it's right

Backslashes should not be escaped in command-line arguments for rawSystem,
on Win32.  This only actually causes failures on WinME/98/95, and we can't
test that since we don't have it.  But this fix seems right regardless.

There are extensive new comments in libraries/base/System/Cmd.hs which
describe the issues.

20 years ago[project @ 2004-01-27 14:41:22 by simonmar]
simonmar [Tue, 27 Jan 2004 14:41:22 +0000 (14:41 +0000)]
[project @ 2004-01-27 14:41:22 by simonmar]
error message sorting wibble

20 years ago[project @ 2004-01-27 09:16:27 by simonpj]
simonpj [Tue, 27 Jan 2004 09:16:27 +0000 (09:16 +0000)]
[project @ 2004-01-27 09:16:27 by simonpj]
Comments only

20 years ago[project @ 2004-01-26 11:47:16 by simonmar]
simonmar [Mon, 26 Jan 2004 11:47:16 +0000 (11:47 +0000)]
[project @ 2004-01-26 11:47:16 by simonmar]
GHC 5.x is required for bootstrapping GHC these days.

20 years ago[project @ 2004-01-26 10:04:42 by simonmar]
simonmar [Mon, 26 Jan 2004 10:04:42 +0000 (10:04 +0000)]
[project @ 2004-01-26 10:04:42 by simonmar]
Fix error message printing

20 years ago[project @ 2004-01-26 09:56:29 by simonmar]
simonmar [Mon, 26 Jan 2004 09:56:30 +0000 (09:56 +0000)]
[project @ 2004-01-26 09:56:29 by simonmar]
unbreak the build

20 years ago[project @ 2004-01-23 14:30:34 by simonmar]
simonmar [Fri, 23 Jan 2004 14:30:34 +0000 (14:30 +0000)]
[project @ 2004-01-23 14:30:34 by simonmar]
For building GHC as a package, we need package.conf.in.

20 years ago[project @ 2004-01-23 13:55:28 by simonmar]
simonmar [Fri, 23 Jan 2004 13:55:30 +0000 (13:55 +0000)]
[project @ 2004-01-23 13:55:28 by simonmar]
Some small steps in the direction of making GHC useable as a library:

  - The ErrMsg type is now richer: we keep the location info and the
    PrintUnqualified separate until the message is printed out, and
    messages have a short summary and "extra info", where the extra
    info is used for things like the context info in the typechecker
    (stuff that you don't normally want to see in a more visual setting,
    where the context is obvious because you're looking at the code).

  - hscMain now takes an extra argument of type (Messages -> IO ()),
    which says what to do with the error messages.  In normal usage,
    we just pass ErrUtils.printErrorsAndWarnings, but eg. a development
    environment will want to do something different.  The direction we
    need to head in is for hscMain to *never* do any output to
    stdout/stderr except via abstractions like this.

20 years ago[project @ 2004-01-23 13:46:49 by simonmar]
simonmar [Fri, 23 Jan 2004 13:46:49 +0000 (13:46 +0000)]
[project @ 2004-01-23 13:46:49 by simonmar]
typo

20 years ago[project @ 2004-01-23 13:44:52 by simonmar]
simonmar [Fri, 23 Jan 2004 13:44:52 +0000 (13:44 +0000)]
[project @ 2004-01-23 13:44:52 by simonmar]
Changes to support building GHC as a package(!!)

20 years ago[project @ 2004-01-23 13:42:40 by simonmar]
simonmar [Fri, 23 Jan 2004 13:42:40 +0000 (13:42 +0000)]
[project @ 2004-01-23 13:42:40 by simonmar]
Small simplification

20 years ago[project @ 2004-01-23 13:37:40 by simonmar]
simonmar [Fri, 23 Jan 2004 13:37:40 +0000 (13:37 +0000)]
[project @ 2004-01-23 13:37:40 by simonmar]
Some tweaks for standalone packages

20 years ago[project @ 2004-01-15 18:04:45 by ross]
ross [Thu, 15 Jan 2004 18:04:47 +0000 (18:04 +0000)]
[project @ 2004-01-15 18:04:45 by ross]
The haskell-src package is no longer needed for bootstrapping.

20 years ago[project @ 2004-01-15 14:43:17 by igloo]
igloo [Thu, 15 Jan 2004 14:43:25 +0000 (14:43 +0000)]
[project @ 2004-01-15 14:43:17 by igloo]
Split Template Haskell out to its own package and update docs and tests.

20 years ago[project @ 2004-01-12 15:47:50 by simonpj]
simonpj [Mon, 12 Jan 2004 15:47:53 +0000 (15:47 +0000)]
[project @ 2004-01-12 15:47:50 by simonpj]
Wibble to kind inference; add zipWithM, zipWithM_ and use them

20 years ago[project @ 2004-01-12 14:36:28 by simonpj]
simonpj [Mon, 12 Jan 2004 14:36:31 +0000 (14:36 +0000)]
[project @ 2004-01-12 14:36:28 by simonpj]
Wibbles to exporting types abstractly

20 years ago[project @ 2004-01-12 12:13:26 by simonpj]
simonpj [Mon, 12 Jan 2004 12:13:26 +0000 (12:13 +0000)]
[project @ 2004-01-12 12:13:26 by simonpj]
Use PolyAlt when we dont know constructors

20 years ago[project @ 2004-01-12 10:02:51 by simonpj]
simonpj [Mon, 12 Jan 2004 10:02:51 +0000 (10:02 +0000)]
[project @ 2004-01-12 10:02:51 by simonpj]
Elaborate depreceated-pragma docs

20 years ago[project @ 2004-01-11 14:43:14 by panne]
panne [Sun, 11 Jan 2004 14:43:14 +0000 (14:43 +0000)]
[project @ 2004-01-11 14:43:14 by panne]
Fixed the previous commit: All lists of Strings in package configuration files
were split at commas to allow list-based variables, but this broke perfectly
sensible things like

   ["-Wl,-rpath,/usr/lib/jvm-bridge/lib/"]

into

   ["-Wl","-rpath","/usr/lib/jvm-bridge/lib/"]

which is plainly wrong. Now we do this *only* when a variable occurs on its own,
like:

   ["${deps}","foo"] => ["base","haskell98","network","foo"]

I have slight doubts about this obscure feature, but Sigbjorn seems to want
it...

Merge to STABLE

20 years ago[project @ 2004-01-09 12:43:37 by simonmar]
simonmar [Fri, 9 Jan 2004 12:43:37 +0000 (12:43 +0000)]
[project @ 2004-01-09 12:43:37 by simonmar]
Interesting - I'm not sure why the .lhs -> .raw-hs rule had an
explicit -cpp option in it, but the .hs -> .raw-hs rule didn't.
Remove it.

20 years ago[project @ 2004-01-09 12:42:15 by simonmar]
simonmar [Fri, 9 Jan 2004 12:42:15 +0000 (12:42 +0000)]
[project @ 2004-01-09 12:42:15 by simonmar]
Use gcc's -P option to avoid CPP #line droppings in the .hs -> .raw-hs rule.

20 years ago[project @ 2004-01-09 12:41:12 by simonmar]
simonmar [Fri, 9 Jan 2004 12:41:13 +0000 (12:41 +0000)]
[project @ 2004-01-09 12:41:12 by simonmar]
Add (missing?) -pgmdll option.  Remove duplicate -pgmP option.

20 years ago[project @ 2004-01-09 12:37:27 by simonmar]
simonmar [Fri, 9 Jan 2004 12:37:27 +0000 (12:37 +0000)]
[project @ 2004-01-09 12:37:27 by simonmar]
Comment previous commit.

20 years ago[project @ 2004-01-09 12:36:54 by simonmar]
simonmar [Fri, 9 Jan 2004 12:36:54 +0000 (12:36 +0000)]
[project @ 2004-01-09 12:36:54 by simonmar]
ooh, I didn't know about gcc's -P option.  Use it instead of hacky sed
script in .pp suffix rule.

20 years ago[project @ 2004-01-09 12:09:23 by simonmar]
simonmar [Fri, 9 Jan 2004 12:09:23 +0000 (12:09 +0000)]
[project @ 2004-01-09 12:09:23 by simonmar]
Remove extra space in 'Not in scope' error message.

20 years ago[project @ 2004-01-08 15:26:44 by simonmar]
simonmar [Thu, 8 Jan 2004 15:26:44 +0000 (15:26 +0000)]
[project @ 2004-01-08 15:26:44 by simonmar]
delayzh: Round *up* to nearest tick, not down

20 years ago[project @ 2004-01-08 11:53:29 by simonpj]
simonpj [Thu, 8 Jan 2004 11:53:29 +0000 (11:53 +0000)]
[project @ 2004-01-08 11:53:29 by simonpj]
---------------------------------------
Fix a long-standing CSE bug with unboxed tuples
  ---------------------------------------

Merge to stable

Consider
        case f x of
  (# a,b #) -> if a>0
       then f x -- CSE opportunity
       else (# b,a #)

 GHC 6.2's CSE pass wrongly optimised this to:

case f x of t
  (# a,b #) -> if a>0 then
  t -- WRONG
else (# b,a #)

(Wrong because we aren't allowed to mention a case binder for
an unboxed-tuple case.)

This commit fixes the problem.

20 years ago[project @ 2004-01-08 10:45:33 by simonmar]
simonmar [Thu, 8 Jan 2004 10:45:33 +0000 (10:45 +0000)]
[project @ 2004-01-08 10:45:33 by simonmar]
Fix warning message about missing Main module to refer to take into
account the -main-is flag.

20 years ago[project @ 2004-01-08 10:34:02 by simonmar]
simonmar [Thu, 8 Jan 2004 10:34:02 +0000 (10:34 +0000)]
[project @ 2004-01-08 10:34:02 by simonmar]
If a -main-is flag was given, with a module name, use *that* module
name rather than Main when deciding whether to link in batch mode or
not.

MERGE TO STABLE

20 years ago[project @ 2004-01-06 18:50:22 by panne]
panne [Tue, 6 Jan 2004 18:50:22 +0000 (18:50 +0000)]
[project @ 2004-01-06 18:50:22 by panne]
Removed unused macros

20 years ago[project @ 2004-01-06 18:39:12 by panne]
panne [Tue, 6 Jan 2004 18:39:13 +0000 (18:39 +0000)]
[project @ 2004-01-06 18:39:12 by panne]
Cleaned up libm detection

20 years ago[project @ 2004-01-06 17:20:51 by panne]
panne [Tue, 6 Jan 2004 17:20:52 +0000 (17:20 +0000)]
[project @ 2004-01-06 17:20:51 by panne]
Use new FP_CHECK_FUNC macro instead of the slightly obscure FPTOOLS_TRY_LINK_NOWARN

20 years ago[project @ 2004-01-06 10:45:22 by simonmar]
simonmar [Tue, 6 Jan 2004 10:45:22 +0000 (10:45 +0000)]
[project @ 2004-01-06 10:45:22 by simonmar]
Replace -ddump-all and -ddump-most with -v5 and -v4 respectively.

20 years ago[project @ 2004-01-05 17:32:35 by simonmar]
simonmar [Mon, 5 Jan 2004 17:32:35 +0000 (17:32 +0000)]
[project @ 2004-01-05 17:32:35 by simonmar]
Instead of grabbing the handle to the executable by calling
dlopen(NULL,...), use RTLD_DEFAULT as the handle to lookup symbols if
it is available.  It seems that RTLD_DEFAULT may be required on
certain systems, although I'm not sure it is available everywhere, so
I've left the old code as fallback in case it isn't available.

20 years ago[project @ 2004-01-05 15:15:26 by igloo]
igloo [Mon, 5 Jan 2004 15:15:27 +0000 (15:15 +0000)]
[project @ 2004-01-05 15:15:26 by igloo]
Use pprint rather than show . ppr to get String representations of TH
datastructures. Also moved pprint out of the class as we never want to
override it.

20 years ago[project @ 2004-01-05 14:54:06 by simonmar]
simonmar [Mon, 5 Jan 2004 14:54:06 +0000 (14:54 +0000)]
[project @ 2004-01-05 14:54:06 by simonmar]
Fix bug in genOutputFilenameFunc: the -keep-blah-files options weren't
being considered for the final phase.  Upshot: -keep-hc-files wasn't
working in --make mode (see driver060 & driver061 tests).

MERGE TO STABLE

20 years ago[project @ 2004-01-05 12:11:42 by simonpj]
simonpj [Mon, 5 Jan 2004 12:11:44 +0000 (12:11 +0000)]
[project @ 2004-01-05 12:11:42 by simonpj]
---------------------------------------
  Don't expose constructors as vigorously
  ---------------------------------------

GHC used to expose the constructors of a data type in the interface file,
even if (a) we were not optimising, and (b) the constructors are not exported.

In practice this isn't really necessary, and it's bad because it forces too
much recompilation.  I've been meaning to fix this for some while.

Now the data cons are hidden, even in the interface file, if both (a) and (b)
are true.  That means less interface file wobbling.

Mind you, the interface file still changes, because the to/from functions for
generic type classes change their types.  But provided you don't use them, you'll
get "compilation not required".

We could play the same game for classes (by hiding their class ops) but that'd
mean we'd have to change the data type for IfaceClassDecl, and I can't be
bothered to do that today.  It's unusual to have a class which exports none
of its methods anyway.

On the way, I changed the representation of tcg_exports and mg_exports (from
Avails to NameSet), but that should be externally invisible.

20 years ago[project @ 2004-01-05 10:41:04 by simonpj]
simonpj [Mon, 5 Jan 2004 10:41:05 +0000 (10:41 +0000)]
[project @ 2004-01-05 10:41:04 by simonpj]
Fix globaliseId wibble which was killing ghci

20 years ago[project @ 2004-01-05 10:40:41 by simonpj]
simonpj [Mon, 5 Jan 2004 10:40:41 +0000 (10:40 +0000)]
[project @ 2004-01-05 10:40:41 by simonpj]
Trim imports

20 years ago[project @ 2004-01-05 09:35:39 by simonpj]
simonpj [Mon, 5 Jan 2004 09:35:39 +0000 (09:35 +0000)]
[project @ 2004-01-05 09:35:39 by simonpj]
Buglet in desugaring instance declarations

20 years ago[project @ 2004-01-05 09:35:00 by simonpj]
simonpj [Mon, 5 Jan 2004 09:35:00 +0000 (09:35 +0000)]
[project @ 2004-01-05 09:35:00 by simonpj]
Pretty-print wibbles following Ians changes to TH libs

20 years ago[project @ 2004-01-05 08:20:39 by simonpj]
simonpj [Mon, 5 Jan 2004 08:20:40 +0000 (08:20 +0000)]
[project @ 2004-01-05 08:20:39 by simonpj]
Dont report deprecations arising from uses in the export list

20 years ago[project @ 2004-01-04 01:48:04 by igloo]
igloo [Sun, 4 Jan 2004 01:48:07 +0000 (01:48 +0000)]
[project @ 2004-01-04 01:48:04 by igloo]
Split the pretty-printer out - pprint will now give you pretty much
anything you are likely to want to pretty-print as a String. For a Doc
you need (to_HPJ_Doc . ppr), which could be made nicer if it is widely
used.

Also took the opportunity to do a bit of module renaming and fixed the
odd typo here and there.

20 years ago[project @ 2003-12-31 16:55:17 by simonpj]
simonpj [Wed, 31 Dec 2003 16:55:17 +0000 (16:55 +0000)]
[project @ 2003-12-31 16:55:17 by simonpj]
point to bash, not sh

20 years ago[project @ 2003-12-31 08:23:25 by simonpj]
simonpj [Wed, 31 Dec 2003 08:23:27 +0000 (08:23 +0000)]
[project @ 2003-12-31 08:23:25 by simonpj]
-----------------------------
        Improve deprecation reporting
-----------------------------

[PS: the 1.31 commit of basicTypes/RdrName.lhs
 also belongs in this commit.]

Up to now, deprecated functions are only reported when imported
from the module defining them, but not when re-exporting.  This
seems wrong -- often a "root" module gathers exports from sub-modules.

It turned out that there was a structural problem: the deprectaions
were getting put in the GlobalRdrEnv, and it simply doesn't have
the defining-module's interface to hand.

So this commit removes gre_deprec from GRE, and moves deprecation
reporting from the individual occurrences (RnEnv.lookupGreRn) to
RnNames.reportUnusedNames.  In many ways this is a better place for it,
because there we get a global view of the entire module.  For example,
repeated use of a single deprecated thing will only give rise to one
warning instead of multiple warnings.

So here's what we now get:

  Foo.hs:3:0:
    Warning: Deprecated use of Variable `withObject'
     (imported from Foreign.Marshal, but defined in Foreign.Marshal.Utils)
     use `with' instead

20 years ago[project @ 2003-12-31 08:21:52 by simonpj]
simonpj [Wed, 31 Dec 2003 08:22:36 +0000 (08:22 +0000)]
[project @ 2003-12-31 08:21:52 by simonpj]
Trim imports

20 years ago[project @ 2003-12-30 20:51:24 by simonpj]
simonpj [Tue, 30 Dec 2003 20:51:24 +0000 (20:51 +0000)]
[project @ 2003-12-30 20:51:24 by simonpj]
Fix imports

20 years ago[project @ 2003-12-30 20:24:21 by simonpj]
simonpj [Tue, 30 Dec 2003 20:24:21 +0000 (20:24 +0000)]
[project @ 2003-12-30 20:24:21 by simonpj]
Typo

20 years ago[project @ 2003-12-30 16:29:17 by simonpj]
simonpj [Tue, 30 Dec 2003 16:29:27 +0000 (16:29 +0000)]
[project @ 2003-12-30 16:29:17 by simonpj]
----------------------------
        Re-do kind inference (again)
----------------------------

   [WARNING: interface file binary representation has
   (as usual) changed slightly; recompile your libraries!]

Inspired by the lambda-cube, for some time GHC has used
type Kind = Type
That is, kinds were represented by the same data type as types.

But GHC also supports unboxed types and unboxed tuples, and these
complicate the kind system by requiring a sub-kind relationship.
Notably, an unboxed tuple is acceptable as the *result* of a
function but not as an *argument*.  So we have the following setup:

 ?
/ \
       /   \
      ??   (#)
     /  \
            *   #

where *    [LiftedTypeKind]   means a lifted type
#    [UnliftedTypeKind] means an unlifted type
(#)  [UbxTupleKind]     means unboxed tuple
??   [ArgTypeKind]      is the lub of *,#
?    [OpenTypeKind] means any type at all

In particular:

  error :: forall a:?. String -> a
  (->)  :: ?? -> ? -> *
  (\(x::t) -> ...) Here t::?? (i.e. not unboxed tuple)

All this has beome rather difficult to accommodate with Kind=Type, so this
commit splits the two.

  * Kind is a distinct type, defined in types/Kind.lhs

  * IfaceType.IfaceKind disappears: we just re-use Kind.Kind

  * TcUnify.unifyKind is a distinct unifier for kinds

  * TyCon no longer needs KindCon and SuperKindCon variants

  * TcUnify.zapExpectedType takes an expected Kind now, so that
    in TcPat.tcMonoPatBndr we can express that the bound variable
    must have an argTypeKind (??).

The big change is really that kind inference is much more systematic and
well behaved.  In particular, a kind variable can unify only with a
"simple kind", which is built from * and (->).  This deals neatly
with awkward questions about how we can combine sub-kinding with type
inference.

Lots of small consequential changes, especially to the kind-checking
plumbing in TcTyClsDecls.  (We played a bit fast and loose before, and
now we have to be more honest, in particular about how kind inference
works for type synonyms.  They can have kinds like (* -> #), so

This cures two long-standing SourceForge bugs

* 753777 (tcfail115.hs), which used erroneously to pass,
  but crashed in the code generator
      type T a = Int -> (# Int, Int #)
      f :: T a -> T a
      f t = \x -> case t x of r -> r

* 753780 (tc167.hs), which used erroneously to fail
      f :: (->) Int# Int#

Still, the result is not entirely satisfactory.  In particular

* The error message from tcfail115 is pretty obscure

* SourceForge bug 807249 (Instance match failure on openTypeKind)
  is not fixed.  Alas.

20 years ago[project @ 2003-12-30 14:05:46 by simonpj]
simonpj [Tue, 30 Dec 2003 14:05:47 +0000 (14:05 +0000)]
[project @ 2003-12-30 14:05:46 by simonpj]
Import trimming

20 years ago[project @ 2003-12-28 13:09:43 by panne]
panne [Sun, 28 Dec 2003 13:09:43 +0000 (13:09 +0000)]
[project @ 2003-12-28 13:09:43 by panne]
Added prototype for initAdjustor

20 years ago[project @ 2003-12-28 13:02:46 by panne]
panne [Sun, 28 Dec 2003 13:02:46 +0000 (13:02 +0000)]
[project @ 2003-12-28 13:02:46 by panne]
Warning police + a little cleanup of #ifdefs relating to execPage. Added two
TODOs on the way (an adjustor spanning two pages + calling initAdjustor at RTS
startup). Note that execPage is still disabled (why?).

20 years ago[project @ 2003-12-23 10:10:53 by simonmar]
simonmar [Tue, 23 Dec 2003 10:10:53 +0000 (10:10 +0000)]
[project @ 2003-12-23 10:10:53 by simonmar]
Add performMajorGC

20 years ago[project @ 2003-12-22 16:27:10 by simonmar]
simonmar [Mon, 22 Dec 2003 16:27:10 +0000 (16:27 +0000)]
[project @ 2003-12-22 16:27:10 by simonmar]
Fix threaded RTS problem that is currently causing the conc007 test to
loop indefinitely.  Comment from the source regarding this change:

/* Major bogosity:
 *
 * In the threaded RTS, we can't set the virtual timer because the
 * thread which has the virtual timer might be sitting waiting for a
 * capability, and the virtual timer only ticks in CPU time.
 *
 * So, possible solutions:
 *
 * (1) tick in realtime.  Not very good, because this ticker is used for
 *     profiling, and this will give us unreliable time profiling
 *     results.  Furthermore, this requires picking a single OS thread
 *     to be the timekeeper, which is a bad idea because the thread in
 *     question might just be making a temporary call into Haskell land.
 *
 * (2) save/restore the virtual timer around excursions into STG land.
 *     Sounds great, but I tried it and the resolution of the virtual timer
 *     isn't good enough (on Linux) - most of our excursions fall
 *     within the timer's resolution and we never make any progress.
 *
 * (3) have a virtual timer in every OS thread.  Might be reasonable,
 *     because most of the time there is only ever one of these
 *     threads running, so it approximates a single virtual timer.
 *     But still quite bogus (and I got crashes when I tried this).
 *
 * For now, we're using (1), but this needs a better solution. --SDM
 */

20 years ago[project @ 2003-12-19 10:41:14 by simonmar]
simonmar [Fri, 19 Dec 2003 10:41:14 +0000 (10:41 +0000)]
[project @ 2003-12-19 10:41:14 by simonmar]
Fix DEBUG & !RTS_SUPPORTS_THREADS build (bogus assertion failure)

20 years ago[project @ 2003-12-19 10:39:54 by simonpj]
simonpj [Fri, 19 Dec 2003 10:39:54 +0000 (10:39 +0000)]
[project @ 2003-12-19 10:39:54 by simonpj]
Accept unboxed tuples in type signatures

20 years ago[project @ 2003-12-19 10:34:51 by simonpj]
simonpj [Fri, 19 Dec 2003 10:34:52 +0000 (10:34 +0000)]
[project @ 2003-12-19 10:34:51 by simonpj]
---------------------------------------
  Precise locations for duplicate imports
  ---------------------------------------

As a displacment activity I added reporting for duplicate imports
And more precise locations for the imports themselves.  For example:

  module T where

  import Maybe (isJust,isJust)
  import Maybe (isJust)

gives

Foo.hs:
    Warning: `isJust' is imported more than once:
       imported from Maybe at Foo.hs:4:16-21
       imported from Maybe at Foo.hs:3:23-28
       imported from Maybe at Foo.hs:3:16-21

20 years ago[project @ 2003-12-18 21:37:56 by panne]
panne [Thu, 18 Dec 2003 21:37:56 +0000 (21:37 +0000)]
[project @ 2003-12-18 21:37:56 by panne]
Patch from Andres Loeh: Generate the *.raw-hs files with the inplace
GHC, otherwise one runs into a "fixed-point" problem where only
documentation known to the bootstrapping GHC could be built.

20 years ago[project @ 2003-12-18 21:34:31 by panne]
panne [Thu, 18 Dec 2003 21:34:31 +0000 (21:34 +0000)]
[project @ 2003-12-18 21:34:31 by panne]
Synched with latest changes in Hugs' aclocal.m4 (wglGetProcAddress
fiddling)

20 years ago[project @ 2003-12-18 13:29:23 by simonmar]
simonmar [Thu, 18 Dec 2003 13:29:23 +0000 (13:29 +0000)]
[project @ 2003-12-18 13:29:23 by simonmar]
Optimisation in awaitEvent(): reset the abandonRequestWait() signal if
it isn't needed (compensates for not using PulseEvent() in
abandonRequestWait(), see AsyncIO.c for details).

Code cleanup in awaitEvent(): don't test the various exit conditions twice.

20 years ago[project @ 2003-12-18 13:27:27 by simonmar]
simonmar [Thu, 18 Dec 2003 13:27:27 +0000 (13:27 +0000)]
[project @ 2003-12-18 13:27:27 by simonmar]
Fix some threaded RTS bugs:

 - in awaitRequests(), it was possible to return immediately even
   though wait was set to rtsTrue.  This lead to a busy wait loop,
   so I've disabled that case (see code for details).

 - using PulseEvent in abandonRequestWait() wasn't the right thing,
   because it exposed a race condition.  Again, see the comment in
   the code for details.

20 years ago[project @ 2003-12-18 12:24:59 by simonmar]
simonmar [Thu, 18 Dec 2003 12:24:59 +0000 (12:24 +0000)]
[project @ 2003-12-18 12:24:59 by simonmar]
Add missing 'continue' after 'passCapability'

20 years ago[project @ 2003-12-18 10:46:49 by simonmar]
simonmar [Thu, 18 Dec 2003 10:46:49 +0000 (10:46 +0000)]
[project @ 2003-12-18 10:46:49 by simonmar]
- make --disable-foo work for each of the --enable options
- tidyup: use AC_HELP_STRING everywhere

20 years ago[project @ 2003-12-18 09:55:17 by simonmar]
simonmar [Thu, 18 Dec 2003 09:55:17 +0000 (09:55 +0000)]
[project @ 2003-12-18 09:55:17 by simonmar]
no_glu is spelled no_GLU, and similarly for no_GLUT

20 years ago[project @ 2003-12-18 09:32:07 by simonmar]
simonmar [Thu, 18 Dec 2003 09:32:07 +0000 (09:32 +0000)]
[project @ 2003-12-18 09:32:07 by simonmar]
Undo part of previous merge: the HEAD doesn't export saved_termios (it
is accessed by functions in RtsStartup instead).

20 years ago[project @ 2003-12-17 17:29:28 by sof]
sof [Wed, 17 Dec 2003 17:29:28 +0000 (17:29 +0000)]
[project @ 2003-12-17 17:29:28 by sof]
merge rev. 1.106.2.3

20 years ago[project @ 2003-12-17 17:18:27 by sof]
sof [Wed, 17 Dec 2003 17:18:27 +0000 (17:18 +0000)]
[project @ 2003-12-17 17:18:27 by sof]
merge rev. 1.128.2.11

20 years ago[project @ 2003-12-17 12:17:18 by simonmar]
simonmar [Wed, 17 Dec 2003 12:17:18 +0000 (12:17 +0000)]
[project @ 2003-12-17 12:17:18 by simonmar]
Fix up following changes to the Capability API.  (strange, I'm *sure*
I tested this stuff...)

20 years ago[project @ 2003-12-17 11:43:13 by simonpj]
simonpj [Wed, 17 Dec 2003 11:43:13 +0000 (11:43 +0000)]
[project @ 2003-12-17 11:43:13 by simonpj]
---------------------------------
  Gate in a few more instance decls
  ---------------------------------

When we have
instance T a where...

we need to suck in the instance decl rather more aggressively than we
were.  (A case I hadn't thought of because it only happens with
undecideable instances.)

20 years ago[project @ 2003-12-17 11:29:40 by simonpj]
simonpj [Wed, 17 Dec 2003 11:29:42 +0000 (11:29 +0000)]
[project @ 2003-12-17 11:29:40 by simonpj]
-----------------------------------------------------
  Fix a subtle loop in the context-reduction machinery
  ----------------------------------------------------

This bug was provoked by a recent change: when trying to prove
a constraint C, TcSimplify.reduce now adds C to the database before
trying to prove C, thus building recursive dictionaries.

Two bugs
a) If we add C's superclasses (which we were) we can now build a
   bogusly-recursive dictionary (see Note [SUPERCLASS-LOOP]).
   Solution: in reduce, add C only (via addIrred NoSCs) and then
   later use addWanted to add its definition plus SCs.

b) Since we can have recursive definitions, the superclass-loop
   handling machinery (findAllDeps) must carry its visited-set
   with it (which it was not doing before)

The main file is TcSimplify; but I modified a bunch of others to
take advantage of new function extendVarSetList

20 years ago[project @ 2003-12-17 08:38:14 by panne]
panne [Wed, 17 Dec 2003 08:38:14 +0000 (08:38 +0000)]
[project @ 2003-12-17 08:38:14 by panne]
To get wglGetProcAddress on Windows, we have to link with
opengl32.dll, too, even when we are using Cygwin with X11.

20 years ago[project @ 2003-12-16 16:24:55 by simonpj]
simonpj [Tue, 16 Dec 2003 16:25:16 +0000 (16:25 +0000)]
[project @ 2003-12-16 16:24:55 by simonpj]
--------------------
Towards type splices
--------------------

Starts the move to supporting type splices, by making
HsExpr.HsSplice a separate type of its own, and adding
HsSpliceTy constructor to HsType.

20 years ago[project @ 2003-12-16 16:24:42 by simonpj]
simonpj [Tue, 16 Dec 2003 16:24:42 +0000 (16:24 +0000)]
[project @ 2003-12-16 16:24:42 by simonpj]
Trim exports

20 years ago[project @ 2003-12-16 16:24:24 by simonpj]
simonpj [Tue, 16 Dec 2003 16:24:24 +0000 (16:24 +0000)]
[project @ 2003-12-16 16:24:24 by simonpj]
Typo in comment

20 years ago[project @ 2003-12-16 16:23:25 by simonpj]
simonpj [Tue, 16 Dec 2003 16:23:25 +0000 (16:23 +0000)]
[project @ 2003-12-16 16:23:25 by simonpj]
Fix newtype deriving for Enum

20 years ago[project @ 2003-12-16 16:21:42 by simonpj]
simonpj [Tue, 16 Dec 2003 16:21:42 +0000 (16:21 +0000)]
[project @ 2003-12-16 16:21:42 by simonpj]
Remove unused parameter to groupAvails

20 years ago[project @ 2003-12-16 16:19:29 by simonpj]
simonpj [Tue, 16 Dec 2003 16:19:29 +0000 (16:19 +0000)]
[project @ 2003-12-16 16:19:29 by simonpj]
Dont report bindings beginning with _ as unused