1. 27 Jan, 2005 1 commit
    • simonpj's avatar
      [project @ 2005-01-27 10:45:47 by simonpj] · e27d450b
      simonpj authored
      --------------------------------------------
                Replace hi-boot files with hs-boot files
        	--------------------------------------------
      
      This major commit completely re-organises the way that recursive modules
      are dealt with.
      
        * It should have NO EFFECT if you do not use recursive modules
      
        * It is a BREAKING CHANGE if you do
      
      ====== Warning: .hi-file format has changed, so if you are
      ======		updating into an existing HEAD build, you'll
      ======		need to make clean and re-make
      
      
      The details:  [documentation still to be done]
      
      * Recursive loops are now broken with Foo.hs-boot (or Foo.lhs-boot),
        not Foo.hi-boot
      
      * An hs-boot files is a proper source file.  It is compiled just like
        a regular Haskell source file:
      	ghc Foo.hs		generates Foo.hi, Foo.o
      	ghc Foo.hs-boot		generates Foo.hi-boot, Foo.o-boot
      
      * hs-boot files are precisely a subset of Haskell. In particular:
      	- they have the same import, export, and scoping rules
      	- errors (such as kind errors) in hs-boot files are checked
        You do *not* need to mention the "original" name of something in
        an hs-boot file, any more than you do in any other Haskell module.
      
      * The Foo.hi-boot file generated by compiling Foo.hs-boot is a machine-
        generated interface file, in precisely the same format as Foo.hi
      
      * When compiling Foo.hs, its exports are checked for compatibility with
        Foo.hi-boot (previously generated by compiling Foo.hs-boot)
      
      * The dependency analyser (ghc -M) knows about Foo.hs-boot files, and
        generates appropriate dependencies.  For regular source files it
        generates
      	Foo.o : Foo.hs
      	Foo.o : Baz.hi		-- Foo.hs imports Baz
      	Foo.o : Bog.hi-boot	-- Foo.hs source-imports Bog
      
        For a hs-boot file it generates similar dependencies
      	Bog.o-boot : Bog.hs-boot
      	Bog.o-boot : Nib.hi	-- Bog.hs-boto imports Nib
      
      * ghc -M is also enhanced to use the compilation manager dependency
        chasing, so that
      	ghc -M Main
        will usually do the job.  No need to enumerate all the source files.
      
      * The -c flag is no longer a "compiler mode". It simply means "omit the
        link step", and synonymous with -no-link.
      e27d450b
  2. 26 Jan, 2005 8 commits
  3. 25 Jan, 2005 2 commits
  4. 24 Jan, 2005 1 commit
  5. 23 Jan, 2005 4 commits
  6. 22 Jan, 2005 1 commit
  7. 21 Jan, 2005 7 commits
    • panne's avatar
      [project @ 2005-01-21 21:52:56 by panne] · 865ce290
      panne authored
      *sigh* Once again: Fixed a Haddock comment which broke "make html"... Why
      on earth do we have "make validate"?? :´-( I think we should introduce some
      kind of disciplinary punishment for checking in broken Haddock comments,
      like porting the mangler to a new platform or porting Adjustor.c to an ABI
      more irregular than the one on PowerPC...
      865ce290
    • sof's avatar
      [project @ 2005-01-21 19:59:01 by sof] · 732861dd
      sof authored
      win32 only:
        Tidy up delivery and handling of console events by having the low-level
        console event handler signal the RTS thread blocked waiting for I/O.
      732861dd
    • simonmar's avatar
      [project @ 2005-01-21 16:02:47 by simonmar] · 47f3a578
      simonmar authored
      Don't try to run finalizers at program exit.  This turned out to be
      hard if not impossible to do in general, so now we don't attempt it at
      all.
      
      The Main.main wrapper, previously called runIO and now called
      runMainIO, flushes stdout and stderr before exiting.  This should
      catch most cases where programs rely on Handles being flushed at
      program exit, but note that now if you simply drop a Handle in your
      program, there's no guarantee it'll be flushed on exit.  If the
      punters complain enough, I suppose we could implement a global
      Handle table and flush them all at exit... I'd rather not do this if
      possible, though.  Better to teach people to close their Handles
      properly.
      47f3a578
    • simonmar's avatar
      [project @ 2005-01-21 15:12:21 by simonmar] · 2420bf2e
      simonmar authored
      hClose on stdin,stdout,stderr now actually closes the file
      descriptor.  Before, there was no way to actually close these file
      descriptors, which might be necessary in some cases - especially when
      stdin/stdout are pipes and you need to indicate to the other end of
      the pipe that you've finished I/O, but without exiting the program.
      2420bf2e
    • ross's avatar
      [project @ 2005-01-21 11:44:08 by ross] · 9d167454
      ross authored
      alter the interface of splitLookup and splitMember, placing the match
      between the trees of smaller and larger elements in the returned triple.
      9d167454
    • ross's avatar
      [project @ 2005-01-21 10:52:47 by ross] · c9249bec
      ross authored
      refine docs a bit
      c9249bec
    • malcolm's avatar
      [project @ 2005-01-21 09:55:52 by malcolm] · a6c1afdd
      malcolm authored
      Typo
      a6c1afdd
  8. 20 Jan, 2005 5 commits
    • ross's avatar
      [project @ 2005-01-20 19:00:26 by ross] · 89eb5031
      ross authored
      cross-references and minor doc fixes
      89eb5031
    • malcolm's avatar
      [project @ 2005-01-20 14:39:09 by malcolm] · ddac3112
      malcolm authored
      Lots more new dependencies.
      ddac3112
    • simonmar's avatar
      [project @ 2005-01-20 14:22:26 by simonmar] · d29794eb
      simonmar authored
      Fill in the haddock-interfaces and haddock-html fields in the
      package.conf files.
      
      To do this I had to make some changes:
      
        - haddock-interfaces requires the value of $(datadir).  We can't
          just plug this in, because $(datadir) might change at install-time
          (eg. a Windows installer can be placed anywhere, as can a Unix
          binary .tar.gz distribution).  The current trick is for the
          compiler to splice in the value of $libdir in package.conf at
          runtime.  So we could extend this mechanism and tell the compiler
          the value of $datadir via a command-line option, but that seems
          ugly.
      
          On Windows, $datadir==$libdir, so we don't need any changes:
          package.conf still uses $libdir, and a Windows installation is
          independent of its absolute location.  Even 'make install' on
          Windows should have this property.
      
          On Unix:
      	- for 'make install' and in-place execution, we just use
                absolute paths in package.conf
      
      	- for a binary dist, we generate a package.conf that refers
      	  to $libdir and $datadir, and splice in the values at
      	  install-time (distrib/Makefile-bin.in).
      
        - Also, I renamed $libdir to $topdir to more closely reflect its
          actual meaning.  This is somewhat malicious in that it will flush
          out all those clients using $libdir when they really shouldn't
          be :-)
      d29794eb
    • malcolm's avatar
      [project @ 2005-01-20 11:09:54 by malcolm] · 57280006
      malcolm authored
      Hook up Data.FunctorM, and update dependencies from Data.Set, Data.IntMap,
      Data.Map etc, on Data.Typeable.
      57280006
    • malcolm's avatar
      [project @ 2005-01-20 10:36:43 by malcolm] · 36622b82
      malcolm authored
      Include Typeable instance for nhc98.
      36622b82
  9. 19 Jan, 2005 4 commits
    • ross's avatar
      [project @ 2005-01-19 23:33:25 by ross] · eeb2216e
      ross authored
      Move comments inside #if's they refer to -- makes the cpp output, e.g. as
      seen by Hugs users, more sensible.
      eeb2216e
    • ross's avatar
      [project @ 2005-01-19 23:32:04 by ross] · 2580de43
      ross authored
      fix name in Typeable instance
      2580de43
    • ralf's avatar
      [project @ 2005-01-19 22:33:32 by ralf] · 153e4779
      ralf authored
      Added quite a few more Data instances.
      
      For these datatypes:
      
      - Data.Array
      - Data.FiniteMap
      - Data.IntMap
      - Data.IntSet
      - Data.Map
      - Data.Set
      - GHC.ST
      - GHC.ForeignPtr
      - Control.Concurrent.MVar and friends
      
      (In some cases, this also required adding Typeable instances.)
      
      Most or all additions have been tagged by
      #ifdef __GLASGOW_HASKELL__ ...
      
      For the _abstract_ datatypes in the above list,
      we use the from... and to... projections and injections
      so that we can process the containers or whatever as lists.
      We don't provide the reflection API for abstract datatypes.
      
      If anyone sees Data-wanting datatypes in the base or elsewhere
      in the module space, please let me know, or please go ahead,
      and add coverage for SYB. As far as I understand, the base
      code cannot use "deriving (Typeable, Data)", whereas this
      is very well an option for non-base modules. Indeed it is
      readily done like this in:
      - network/Network/URI
      - haskell-src
      153e4779
    • ross's avatar
      [project @ 2005-01-19 17:20:31 by ross] · 7ec0d5b7
      ross authored
      document the deprecated functions, and redirect mkSet to fromList
      7ec0d5b7
  10. 18 Jan, 2005 2 commits
  11. 17 Jan, 2005 3 commits
  12. 16 Jan, 2005 2 commits