- Dec 20, 1999
-
-
Simon Peyton Jones authored
This commit implements a substantial re-organisation of the Prelude It also fixes a couple of small renamer bugs that were reported recently (notably, Sven pointed out that we weren't reporting unused imports properly) My original goal was to get rid of all "orphan" modules (i.e. ones with instance decls that don't belong either to a tycon or a class defined in the same module). This should reduce the number of interface files that have to be read when compiling small Haskell modules. But like most expeditions into the Prelude Swamp, it spiraled out of control. The result is quite satisfactory, though. GONE AWAY: PrelCCall, PrelNumExtra NEW: PrelReal, PrelFloat, PrelByteArr, PrelNum.hi-boot (The extra PrelNum.hi-boot is because of a tiresome thin-air Id, addr2Integer, which used to be in PrelBase.) Quite a lot of types have moved from one module to another, which entails some changes to part of the compiler (PrelInfo, PrelMods) etc, and there are a few places in the RTS includes and even in the driver that know about these home modules (alas). So the rough structure is as follows, in (linearised) dependency order [this list now appears in PrelBase.lhs] PrelGHC Has no implementation. It defines built-in things, and by importing it you bring them into scope. The source file is PrelGHC.hi-boot, which is just copied to make PrelGHC.hi Classes: CCallable, CReturnable PrelBase Classes: Eq, Ord, Functor, Monad Types: list, (), Int, Bool, Ordering, Char, String PrelTup Types: tuples, plus instances for PrelBase classes PrelShow Class: Show, plus instances for PrelBase/PrelTup types PrelEnum Class: Enum, plus instances for PrelBase/PrelTup types PrelMaybe Type: Maybe, plus instances for PrelBase classes PrelNum Class: Num, plus instances for Int Type: Integer, plus instances for all classes so far (Eq, Ord, Num, Show) Integer is needed here because it is mentioned in the signature of 'fromInteger' in class Num PrelReal Classes: Real, Integral, Fractional, RealFrac plus instances for Int, Integer Types: Ratio, Rational plus intances for classes so far Rational is needed here because it is mentioned in the signature of 'toRational' in class Real Ix Classes: Ix, plus instances for Int, Bool, Char, Integer, Ordering, tuples PrelArr Types: Array, MutableArray, MutableVar Does *not* contain any ByteArray stuff (see PrelByteArr) Arrays are used by a function in PrelFloat PrelFloat Classes: Floating, RealFloat Types: Float, Double, plus instances of all classes so far This module contains everything to do with floating point. It is a big module (900 lines) With a bit of luck, many modules can be compiled without ever reading PrelFloat.hi PrelByteArr Types: ByteArray, MutableByteArray We want this one to be after PrelFloat, because it defines arrays of unboxed floats. Other Prelude modules are much easier with fewer complex dependencies.
-
Simon Peyton Jones authored
wibble
-
Simon Peyton Jones authored
Fix a gotcha in the interface-file post processing that led to bizarre omissions from interface files when working with existential types. That's what you get for using Perl
-
- Dec 17, 1999
-
-
Julian Seward authored
Reorganised object code loader/linker to make it much more modular and cleaner. All the machinery is now in object.[ch]. This stuff is packaged up as close to a standalone library as I can reasonably get it -- in particular, it knows nothing about Hugs -- so that the linker could easily be used in some entirely different application with almost no changes, if we so desire. Minor mods to interface.c & storage.c to use the new linker API.
-
Simon Marlow authored
Add netbsd to the list of platforms supported. ToDo: add info to the User's Guide once the Shiny New Documentation is committed.
-
- Dec 16, 1999
-
-
Julian Seward authored
Add extended version of previous commit message as a comment.
-
Julian Seward authored
Further major improvements in interface processing, mostly in the handling of types. Interfaces can contain references to unboxed types, and these need to be handled carefully. The following is a summary of how the interface loader now works. It is applied to groups of interfaces simultaneously, viz, the entire Prelude at once: 1. Throw away any entity not mentioned in the export lists. 2. Delete type (not data or newtype) definitions which refer to unknown types in their right hand sides. Because Hugs doesn't know of any unboxed types, this has the side effect of removing all type defns referring to unboxed types. Repeat step 2 until a fixed point is reached. 3. Make abstract all data/newtype defns which refer to an unknown type. eg, data Word = MkW Word# becomes data Word, because Word# is unknown. Hugs is happy to know about abstract boxed Words, but not about Word#s. 4. Step 2 could delete types referred to by values, instances and classes. So filter all entities, and delete those referring to unknown types _or_ classes. This could cause other entities to become invalid, so iterate step 4 to a fixed point. After step 4, the interfaces no longer contain anything unpalatable to Hugs. 5. Steps 1-4 operate purely on the iface syntax trees. We now start creating symbol table entries. First, create a module table entry for each interface, and locate and read in the corresponding object file. 6. Traverse all interfaces. For each entity, create an entry in the name, tycon, class or instance table, and fill in relevant fields, but do not attempt to link tycon/class/instance/name uses to their symbol table entries. 7. Revisit all symbol table entries created in step 6. We should now be able to replace all references to tycons/classes/instances/ names with the relevant symbol table entries. 8. Traverse all interfaces. For each iface, examine the export lists and use it to build export lists in the module table. Do the implicit 'import Prelude' thing if necessary. Finally, resolve references in the object code for this module. I'm sure the number of passes could be reduced. For the moment, understandability is of much higher priority. Hugs can now complete stages 1 through 8 for the whole GHC Prelude, excepting doing the object linking, which needs further work.
-
- Dec 15, 1999
-
-
Simon Marlow authored
Add test displaying bug in fixity resolution on lhs of a function binding. We currently fail on this example, but at least putting it in the test suite will make sure we don't forget about it :)
-
Simon Marlow authored
Add NetBSD/x86 support.
-
- Dec 14, 1999
-
-
Simon Marlow authored
Don't set O_NONBLOCK on stdout and stderr. This is a workaround for a combination of bizarre Unix semantics and shells which don't reset the nonblocking flag after running a program.
-
- Dec 13, 1999
-
-
Simon Marlow authored
Include hslibs in a binary-dist.
-
Simon Marlow authored
Add a few minBound::Int tests.
-
Simon Marlow authored
Fix bug in abs::Integer->Integer: result was wrong for minBound::Int.
-
Simon Marlow authored
Correct off-by-one error in bounds checking when converting NoRepIntegers into the real thing. Not a bug, just a cleanup.
-
- Dec 10, 1999
-
-
Simon Marlow authored
bump version to 4.06
-
Julian Seward authored
Major improvements in interface processing, and minor supporting improvements to CT-storage management. * Make the iface parser return the complete interface as a single tree, which is processed later. Added abs syntax tags I_INTERFACE .. I_VALUE to support this. * Add tagged ("z") 2,3,4,5 tuples. Because they are tagged, they can't be confused with lists, etc. Selectors zfst, zsnd ... zsel45, zsel55 check tags first. Iface processing uses z-tuples wherever it can. * Add unap as a safe "inverse" of ap; it checks tags. So unap(TAG1, ap(TAG2,cell)) == cell but only if TAG1==TAG2, else assertion failure. * In interface.c, clean up the startGHC*/endGHC* functions. processInterfaces() is the top-level driver; it makes 4 passes over the supplied iface trees. * Throw away iface symbols not mentioned in export lists. * Use iface export lists to construct both the export and eval environments for a module. * Don't use Texts to refer to things. Instead use ConId and VarId. Added ConId and VarId as synonyms for Cell in storage.h. * Add findSimpleInstance in storage.c.
-
Simon Marlow authored
Unbreak finalization.
-
Simon Peyton Jones authored
I was too enthusiastic about removing empty usage entries from interface files. This commit fixes my errors of yesterday. Simon
-
- Dec 09, 1999
-
-
Simon Marlow authored
allow certain keywords as scc labels.
-
Simon Marlow authored
eliminate recursive defn: HC <--> WithGhcHc
-
Simon Peyton Jones authored
A bunch of small changes in the way that usage information is generated to stuff into interface files. I'm not certain anything was really wrong before, but it's tidier now, and there are slightly fewer dependencies generated. Main differences are in RnIfaces.getImportVersions I also made the check for orphan rules a bit cleverer (Rename.isOrphanDecl) so that we get fewer spurious orphan modules. Simon
-
Simon Marlow authored
Remove bogus #! lines. Obtained-from: Michael Weber <michael.weber@post.rwth-aachen.de>
-
Simon Marlow authored
cleanups & fixes Obtained-from: Michael Weber <michael.weber@post.rwth-aachen.de>
-
Simon Marlow authored
clean sgmlverb.c Obtained-from: Michael Weber <michael.weber@post.rwth-aachen.de>
-
Simon Marlow authored
recurse into libraries. Obtained-from: Michael Weber <michael.weber@post.rwth-aachen.de>
-
Simon Marlow authored
clean PrelGHC.hi in its various flavours. Obtained-from: Michael Weber <michael.weber@post.rwth-aachen.de>
-
- Dec 08, 1999
-
-
Simon Marlow authored
misc ansification and -Wall cleanup
-
Simon Marlow authored
Add Marc Van Dongen's Integer improvements. Specifically: - new primops: gcdInt#, gcdIntegerInt#, divExact#, quotInteger#, remInteger#. - new definitions of quot and rem for Integer in PrelNum (using the new quotInteger# and remInteger# primops instead of quotRemInteger#). Should be slightly faster than before. div & mod aren't likewise optimised (yet). - specialisations of gcd for Int and Integer, and lcm for Integer in PrelNum.
-
Simon Marlow authored
- add test cases for my URI library - add George Russell's tests for the TimeExts library
-
Simon Marlow authored
oops, forgot to initialize bufStart in openStdFile.
-
Simon Marlow authored
Fix bogon in rule for parser/hschooks.c
-
Simon Marlow authored
New make variable: $(WithNofibHc) which defines the Haskell compiler used to build nofib. Define $(GHC_INPLACE) in fptools/mk/config.mk.in. $(WithNofibHc) is set to $(GHC_INPLACE) by default. Fix $(MKDEPENDHS) in ghc/lib/std/Makefile.
-
Simon Marlow authored
remove cut-n-pasteo
-
- Dec 07, 1999
-
-
Simon Marlow authored
Now that $(GHC) refers to an installed haskell compiler, use $(GHC_INPLACE) to refer to the ghc in the build tree.
-
Simon Peyton Jones authored
Remove long-outdated AnalFBWW
-
Simon Marlow authored
Now that $(GHC) means an installed copy of ghc, use $(GHC_INPLACE) to refer to the ghc in the build tree.
-
Simon Peyton Jones authored
Add drvrun008
-
Simon Marlow authored
Automatically detect installed copies of ghc, nhc and hbc and plug them into the Makefile variables $(GHC), $(NHC) and $(HBC) respectively. $(HC) is now supposed to be a generic installed haskell compiler, which defaults to $(GHC) and can be changed via ./configure --with-hc=<blah>. Reorganise and tidy up a few things in config.mk.in.
-
Simon Peyton Jones authored
Derived instances should use *source* types not *representation* types when doing their deriving stuff. This bug prevented data F = F !Int deriving (Eq) from working when -funbox-strict-fields was on Simon
-
chak@cse.unsw.edu.au. authored
Package local configuration scripts allow to modularise the configuration (we start by having one for ghc): * Modularised configuration avoids unnecessary dependencies for individual packages. * Furthermore, package local configuration (such as entering version information into rpm .spec files) is possible.
-