1. 27 Aug, 1999 3 commits
  2. 26 Aug, 1999 1 commit
  3. 25 Aug, 1999 3 commits
    • simonmar's avatar
      [project @ 1999-08-25 16:39:14 by simonmar] · 2f8df09e
      simonmar authored
      enable non-blocking I/O.
      2f8df09e
    • simonmar's avatar
      [project @ 1999-08-25 16:11:43 by simonmar] · c6ab4bfa
      simonmar authored
      Support for thread{WaitRead,WaitWrite,Delay}.  These should behave
      identically to the 3.02 implementations.
      
      We now have the virtual timer on during all program runs, which ticks
      at 50Hz by default.  This is used to implement threadDelay, so you
      won't get any better granularity than the tick frequency
      unfortunately.  It remains to be seen whether using the virtual timer
      will have a measurable impact on performance for non-threadDelaying
      programs.
      
      All operations in the I/O subsystem should now be non-blocking with
      respect to other running Haskell threads.  It remains to be seen
      whether this will have a measurable performance impact on
      non-concurrent programs (probably not).
      c6ab4bfa
    • simonmar's avatar
      [project @ 1999-08-25 10:23:51 by simonmar] · 68146c5b
      simonmar authored
      Eq and Ord instances for ThreadId.
      68146c5b
  4. 23 Aug, 1999 1 commit
    • keithw's avatar
      [project @ 1999-08-23 12:53:23 by keithw] · d392968d
      keithw authored
      Revert commit of 1999/06/12 16:17:28.  We use -traditional for CPP,
      and so x##y and #x don't work and we must use x/**/y (ugh) and "x"
      (urk!!) instead.  Ah well.
      d392968d
  5. 06 Aug, 1999 2 commits
  6. 04 Aug, 1999 2 commits
  7. 02 Aug, 1999 1 commit
  8. 29 Jul, 1999 1 commit
    • sof's avatar
      [project @ 1999-07-29 13:57:34 by sof] · 72779ca1
      sof authored
      Recent CPP-related wibblement meant that _WIN32 wasn't defined when
      the pre-proc was run (cf. -undef usage.) Avoid the use of _WIN32
      72779ca1
  9. 27 Jul, 1999 1 commit
    • simonmar's avatar
      [project @ 1999-07-27 11:12:05 by simonmar] · b7ffad2a
      simonmar authored
      add unofficial/undocumented function:
      
          mkWeakIORef :: IORef a -> IO () -> IO (Weak (IORef a))
      
      for weak pointers to IORefs.  This avoids some of the problems with
      inlining disturbing the semantics of mkWeak by making the weak key
      point to the primitive MutVar instead of the box.
      b7ffad2a
  10. 14 Jul, 1999 3 commits
  11. 12 Jul, 1999 1 commit
  12. 08 Jul, 1999 1 commit
  13. 06 Jul, 1999 1 commit
    • simonpj's avatar
      [project @ 1999-07-06 16:45:31 by simonpj] · 9d38678e
      simonpj authored
      All Simon's recent tuning changes.  Rough summary follows:
      
      * Fix Kevin Atkinson's cant-find-instance bug.  Turns out that Rename.slurpSourceRefs
        needs to repeatedly call getImportedInstDecls, and then go back to slurping
        source-refs.  Comments with Rename.slurpSourceRefs.
      
      * Add a case to Simplify.mkDupableAlt for the quite-common case where there's
        a very simple alternative, in which case there's no point in creating a
        join-point binding.
      
      * Fix CoreUtils.exprOkForSpeculation so that it returns True of (==# a# b#).
        This lack meant that
      	case ==# a# b# of { True -> x; False -> x }
        was not simplifying
      
      * Make float-out dump bindings at the top of a function argument, as
        at the top of a let(rec) rhs.  See notes with FloatOut.floatRhs
      
      * Make the ArgOf case of mkDupableAlt generate a OneShot lambda.
        This gave a noticeable boost to spectral/boyer2
      
      
      * Reduce the number of coerces, using worker/wrapper stuff.
        The main idea is in WwLib.mkWWcoerce.  The gloss is that we must do
        the w/w split even for small non-recursive things.  See notes with
        WorkWrap.tryWw.
      
      * This further complicated getWorkerId, so I finally bit the bullet and
        make the workerInfo field of the IdInfo work properly, including
        under substitutions.  Death to getWorkerId.  Kevin Glynn will be happy.
      
      * Make all lambdas over realWorldStatePrimTy
        into one-shot lambdas.  This is a GROSS HACK.
      
      * Also make the occurrence analyser aware of one-shot lambdas.
      
      * Make various Prelude things into INLINE, so that foldr doesn't
        get inlined in their body, so that the caller gets the benefit
        of fusion.  Notably in PrelArr.lhs.
      9d38678e
  14. 05 Jul, 1999 2 commits
    • sof's avatar
      [project @ 1999-07-05 19:26:42 by sof] · 60e60f66
      sof authored
      Temporary workaround for problem which caused the following program
      
        main = putStrLn ("aa" ++ IOExts.trace "bb" "cc")
      
      to deadlock - when the (untouched) stderr is evaluated (which
      IOExts.trace forces), it will touch stdout (see code for details of
      why), but it has already been locked by putStrLn. Boom - game over.
      
      This temporary 'fix' is, to put it kindly, in the fancy-footwork
      category as it doesn't solve the problem, but merely turns it on its
      head. Instead of stderr depending on stdout, stdout now depends on
      stderr, so the following program will deadlock
      
        main = hPutStrLn stderr ("aa" ++ myTrace "bb" "cc")
      
        myTrace msg v = unsafePerformIO $ do
           putStrLn msg
           return v
      
      The 'theory' is that this is far less likely to occur in practice than
      the other way around.
      
      The next step / real solution would be to give up the lock on an
      output Handle while filling up its output buffer. However, that
      requires ripping out / re-org'ing a fair bit of buffer management
      code, which I'll delay doing.
      60e60f66
    • sof's avatar
      [project @ 1999-07-05 18:53:53 by sof] · 2455da3a
      sof authored
      Remove -#include "RtsAPI.h" - you now get it for free.
      2455da3a
  15. 03 Jul, 1999 3 commits
  16. 01 Jul, 1999 1 commit
  17. 25 Jun, 1999 2 commits
  18. 22 Jun, 1999 1 commit
  19. 14 Jun, 1999 1 commit
  20. 12 Jun, 1999 1 commit
  21. 09 Jun, 1999 1 commit
  22. 01 Jun, 1999 1 commit
  23. 28 May, 1999 5 commits
  24. 21 May, 1999 1 commit