- 17 Mar, 2003 1 commit
-
-
simonmar authored
Haskell quiz: what should this program do? main = return undefined answer: run to completion and exit successfully. GHC erroneously evaluates the returned value from main, which causes this example to fail with an uncaught exception (the evaluation is even done outside of the main exception handler!).
-
- 16 Mar, 2003 1 commit
-
-
igloo authored
Support for contexts on data types and records from Derek Elkins.
-
- 14 Mar, 2003 1 commit
-
-
simonmar authored
Fix tryM for GHC 5.00.x and 5.02.x.
-
- 11 Mar, 2003 6 commits
-
-
stolz authored
Add comment about lack of instance-support in .hi-boot
-
simonmar authored
- Remove mention of MutableByteArray and ByteArray - Add section on memory allocation in the FFI, with emphasis on how GHC's implementations of the various kinds of allocation perform.
-
simonpj authored
---------------------------------- Fix a long-standing egregious parser bug ---------------------------------- *** MERGE TO STABLE *** *** NB: the important part of this commit *** got committed by accident with an *** unrelated message. This commit *** should be from rev 1.50 to 1.52 of RdrHsSyn GHC has parsed data T String = T String without complaint, ever since day 1! This led to consequential incomprehensible messages. The fix is easy.
-
simonpj authored
Document external core a bit more
-
simonpj authored
Restructure documentation about undecidable instances
-
simonpj authored
Buglet in external-core parsing
-
- 10 Mar, 2003 3 commits
-
-
simonmar authored
Use STK_CHK_NP rather than STK_CHK_GEN in the entry code for AP and AP_STACK thunks. The reason is that if the check fails, on return the closure might have been blackholed (perhaps due to lazy blackholing, or even because another thread has entered it), so we *must* enter the closure to continue, rather than just continuing at the original entry point. All compiler-generated thunks do this anyway, I think these are the only cases of thunks which don't follow the rule. Thanks to Robert Ennals for spotting, and correctly diagnosing, the bug.
-
stolz authored
Fix typo
-
umuta authored
Fix compilation problem on mingw32
-
- 07 Mar, 2003 4 commits
- 06 Mar, 2003 5 commits
- 05 Mar, 2003 1 commit
-
-
simonmar authored
Duh. hsc2hs should be in $(GhcBinDistShScripts), not $(GhcBinDistBins), otherwise it doesn't get the right directories tacked on the front at installation time. Strange that nobody complained that hsc2hs wasn't working from a binary dist *shrug*.
-
- 04 Mar, 2003 3 commits
-
-
simonmar authored
Make it compile again with 5.04.x
-
simonmar authored
Fix compilation breakage with GHC 4.08.x.
-
sof authored
win32/Ticker.c:startTicker(), win32/IOManager.c:NewIOWorkerThread(): pass in non-NULL pointer to _beginthreadex()'s outgoing thread ID arg. Needed to work with Win9x's impl of CreateThread().
-
- 03 Mar, 2003 5 commits
-
-
simonmar authored
A round of space-leak fixing. - re-instate zapping of the PersistentCompilerState at various points during the compilation cycle in HscMain. This affects one-shot compilation only, since in this mode the information collected in the PCS is not required after creating the final interface file. - Unravel the recursive dependency between MkIface and CoreTidy/CoreToStg. Previously the CafInfo for each binding was calculated by CoreToStg, and fed back into the IdInfo of the Ids generated by CoreTidy (an earlier pass). MkIface then took this IdInfo and the bindings from CoreTidy to generate the interface; but it couldn't do this until *after* CoreToStg, because the CafInfo hadn't been calculated yet. The result was that the CoreTidy output lived until after CoreToStg, and at the same time as the CorePrep and STG syntax, which is wasted space, not to mention the complexity and general ugliness in HscMain. So now we calculate CafInfo directly in CoreTidy. The downside is that we have to predict what CorePrep is going to do to the bindings so we can tell what will turn into a CAF later, but it's no worse than before (it turned out that we were doing this prediction before in CoreToStg anyhow). - The typechecker lazilly typechecks unfoldings. It turns out that this is a good idea from a performance perspective, but it also means that it must hang on to all the information it needs to do the typechecking. Previously this meant holding on to the whole of the typechecker's environment, which includes all sorts of stuff which isn't necessary to typecheck unfoldings. By paring down the environment captured by the lazy unfoldings, we can save quite a bit of space in the phases after typechecking.
-
simonmar authored
Use listArray rather than array in (un)?boxedTupleArr.
-
simonmar authored
Remove unused export.
-
simonmar authored
underscore some variables that aren't used.
-
simonmar authored
Compilation fix after recent addition of environment stuff to System.Posix.
-
- 26 Feb, 2003 1 commit
-
-
simonpj authored
---------------------------------- Improve higher-rank type inference ---------------------------------- Yanling Wang pointed out that if we have f = \ (x :: forall a. a->a). x it would be reasonable to expect that type inference would get the "right" rank-2 type for f. She also found that the plausible definition f :: (forall a. a->a) = \x -> x acutally failed to type check. This commit fixes up TcBinds.tcMonoBinds so that it does a better job. The main idea is that there are three cases to consider in a function binding: a) 'f' has a separate type signature In this case, we know f's type everywhere b) The binding is recursive, and there is no type sig In this case we must give f a monotype in its RHS c) The binding is non-recursive, and there is no type sig Then we do not need to add 'f' to the envt, and can simply infer a type for the RHS, which may be higher ranked.
-
- 24 Feb, 2003 3 commits
-
-
simonmar authored
Remove mention of man pages, which we don't have, and clarify a couple of other things while I'm here.
-
simonpj authored
*** My last commit had a bogus commit message ** *** This is the right one. I've appended the ** *** list of files changed as well. ------------------------------------- Fix up HOST/TARGET_OS ifdefs ------------------------------------- Sigbjorn and Simon helped me to understand when it's appropriate to say 'ifdef mingw32_HOST_OS' and when 'ifdef mingw32_TARGET_OS'. I've documented this in the building guide. I've fixed up the ifdefs I erroneously changed last week, in this commit. I'm not certain about all of them. For examples, in DriverPhases there's an ifdef that deals with filename suffices. Should this be the filename suffices for the system on which GHC runs (HOST), or the system on which the compiled code will run (TARGET)? Currently it's the latter. Similarly, there's some path mangling ('/' vs '\') in DriverState: should this be for the system on which GHC runs (HOST) or the system on which the compiled code will run (TARGET)? Currently the former. I think some of the darwin_TARGET_OS should be darwin_HOST_OS's. Finally, for the GHCi stuff we require that HOST_OS = TARGET_OS. Rather than make an arbitrary choice in (e.g.) Linker.lhs, it's be better to say '#ifdef mingw32_OS', and arrange that this macro is set only in stage-2. I have not done this. I think these are 'right'. But I'm not sure the filename mangling is consistent throughout. [Changes in the original commit, which had a bogus message.] Revision Changes Path 1.46 +30 -0 fptools/docs/building/building.sgml 1.148 +4 -4 fptools/ghc/compiler/ghci/InteractiveUI.hs 1.114 +2 -2 fptools/ghc/compiler/main/DriverFlags.hs 1.23 +3 -1 fptools/ghc/compiler/main/DriverPhases.hs 1.85 +11 -11 fptools/ghc/compiler/main/SysTools.lhs 1.20 +3 -3 fptools/ghc/compiler/utils/Panic.lhs
-
simonpj authored
Three Template Haskell improvements a) Add type synonyms to THSyntax (and DsMeta, Convert) b) Make Q into a newtype instead of a type synonym c) Eliminate tiresome and error prone argument to DsMeta.wrapGenSyms and similarly addTyVarBinds
-
- 22 Feb, 2003 2 commits
-
-
sof authored
bring getourtimeofday() proto into scope
-
sof authored
Clean up code&interfaces that deals with timers and asynchrony: - Timer.{c,h} now defines the platform-independent interface to the timing services needed by the RTS. Itimer.{c,h} + win32/Ticker.{c,h} defines the OS-specific services that creates/destroys a timer. - For win32 plats, drop the long-standing use of the 'multimedia' API timers and implement the ticking service ourselves. Simpler and more flexible. - Select.c is now solely for platforms that use select() to handle non-blocking I/O & thread delays. win32/AwaitEvent.c provides the same API on the Win32 side. - support threadDelay on win32 platforms via worker threads. Not yet compiled up on non-win32 platforms; will do once checked in.
-
- 21 Feb, 2003 4 commits
-
-
simonpj authored
Typos
-
simonpj authored
Fix buglets in new unused-binding story
-
simonpj authored
Use old-style foreign import for bkwd compatibility
-
simonpj authored
------------------------------------- Improve the "unused binding" warnings ------------------------------------- We've had a succession of hacks for reporting warnings for unused bindings. Consider module M( f ) where f x = x g x = g x + h x h x = x Here, g mentions itself and h, but is not itself mentioned. So really both g and h are dead code. We've been getting this wrong for ages, and every hack so far has failed on some simple programs. This commit does a much better job. The renamer applied to a bunch of bindings returns a NameSet.DefUses, which is a dependency-ordered lists of def/use pairs. It's documented in NameSet. Given this, we can work out precisely what is not used, in a nice tidy way. It's less convenient in the case of type and class declarations, because the strongly-connected-component analysis can span module boundaries. So things are pretty much as they were for these. As usual, there was a lot of chuffing around tidying things up. I havn't tested it at all thoroughly yet. Various unrelated import-decl-pruning has been done too.
-