1. 20 Dec, 1999 1 commit
    • simonpj's avatar
      [project @ 1999-12-20 10:12:50 by simonpj] · ed974e41
      simonpj 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
      ed974e41
  2. 17 Dec, 1999 2 commits
    • sewardj's avatar
      [project @ 1999-12-17 16:34:08 by sewardj] · 3e47ab23
      sewardj 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.
      3e47ab23
    • simonmar's avatar
      [project @ 1999-12-17 15:25:02 by simonmar] · b711838e
      simonmar authored
      Add netbsd to the list of platforms supported.
      
      ToDo: add info to the User's Guide once the Shiny New Documentation is
      committed.
      b711838e
  3. 16 Dec, 1999 2 commits
    • sewardj's avatar
      [project @ 1999-12-16 16:42:56 by sewardj] · a8bf3684
      sewardj authored
      Add extended version of previous commit message as a comment.
      a8bf3684
    • sewardj's avatar
      [project @ 1999-12-16 16:34:40 by sewardj] · 0c97d649
      sewardj 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.
      0c97d649
  4. 15 Dec, 1999 2 commits
  5. 14 Dec, 1999 1 commit
    • simonmar's avatar
      [project @ 1999-12-14 14:26:14 by simonmar] · 406aa1d7
      simonmar 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.
      406aa1d7
  6. 13 Dec, 1999 4 commits
  7. 10 Dec, 1999 4 commits
    • simonmar's avatar
      [project @ 1999-12-10 16:24:50 by simonmar] · b90964e2
      simonmar authored
      bump version to 4.06
      b90964e2
    • sewardj's avatar
      [project @ 1999-12-10 15:59:41 by sewardj] · 51c33894
      sewardj 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.
      51c33894
    • simonmar's avatar
      [project @ 1999-12-10 15:50:10 by simonmar] · 0491574d
      simonmar authored
      Unbreak finalization.
      0491574d
    • simonpj's avatar
      [project @ 1999-12-10 12:33:12 by simonpj] · 5204750a
      simonpj authored
      I was too enthusiastic about removing empty usage entries
      from interface files.  This commit fixes my errors of yesterday.
      
      Simon
      5204750a
  8. 09 Dec, 1999 8 commits
  9. 08 Dec, 1999 7 commits
  10. 07 Dec, 1999 9 commits
    • simonmar's avatar
      [project @ 1999-12-07 15:52:40 by simonmar] · f9716798
      simonmar authored
      Now that $(GHC) refers to an installed haskell compiler, use
      $(GHC_INPLACE) to refer to the ghc in the build tree.
      f9716798
    • simonpj's avatar
      [project @ 1999-12-07 15:50:13 by simonpj] · 4cf0f63b
      simonpj authored
      Remove long-outdated AnalFBWW
      4cf0f63b
    • simonmar's avatar
      [project @ 1999-12-07 15:49:52 by simonmar] · bf33ba3a
      simonmar authored
      Now that $(GHC) means an installed copy of ghc, use $(GHC_INPLACE) to
      refer to the ghc in the build tree.
      bf33ba3a
    • simonpj's avatar
      [project @ 1999-12-07 15:48:02 by simonpj] · 15ce62ca
      simonpj authored
      Add drvrun008
      15ce62ca
    • simonmar's avatar
      [project @ 1999-12-07 15:43:40 by simonmar] · 747bac96
      simonmar 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.
      747bac96
    • simonpj's avatar
      [project @ 1999-12-07 15:03:08 by simonpj] · 368eac75
      simonpj 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
      368eac75
    • chak's avatar
      [project @ 1999-12-07 14:46:31 by chak] · 6fb805e5
      chak 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.
      6fb805e5
    • chak's avatar
      [project @ 1999-12-07 14:38:58 by chak] · 1a9c9949
      chak authored
      Of course, I had to get the name wrong - this has to be mangled by configure
      (eg, to set the version number).
      
      Also added dependency on gmp-devel (see discussion on glasgow-haskell-bugs).
      1a9c9949
    • panne's avatar
      [project @ 1999-12-07 13:04:31 by panne] · 60464668
      panne authored
      OK, don't say you haven't been warned: Sven "Larry W." Panne waved his
      Perl-wand and changed a / / into /\s+/. This fixes the problem with
      multiple spaces between {-# OPTIONS ... -#}, but still fails miserably
      when quotes are used, e.g. {-# OPTIONS -#include "My Own Header.h" #-}.
      60464668