1. 03 Oct, 2004 1 commit
  2. 27 Aug, 2004 1 commit
  3. 19 Aug, 2004 1 commit
  4. 13 Aug, 2004 1 commit
  5. 10 May, 2004 1 commit
    • simonmar's avatar
      [project @ 2004-05-10 10:26:07 by simonmar] · d28ae8e1
      simonmar authored
      Hack to generate correct dependencies for the RTS.  We now #define
      PROFILING, THREADED_RTS and DEBUG when generating dependencies so that
      we get (hopefully) a superset of all the deps.
      d28ae8e1
  6. 25 Feb, 2004 2 commits
  7. 24 Feb, 2004 1 commit
    • simonmar's avatar
      [project @ 2004-02-24 17:33:32 by simonmar] · cd20fd58
      simonmar authored
      Experimental support for RTS-only "ways"
      
      HEADS UP!  This changes the way that the threaded RTS is used, and
      also the use of debugging RTSs:
      
        - We always build threaded and debugging variants of the RTS now.
          The --enable-threaded-rts configure option is ignored (and will
          be removed at some point).
      
        - New option:  -debug     enables the debugging RTS
      
        - New option:  -threaded  enables the threaded RTS.  When the threaded
          RTS is stable enough, we might make it the default.
      
      The new options just cause a different variant of the RTS to be linked
      in, and they cause one or two extra options to be enabled too.  The
      implementation is via the usual ways machinery in the compiler, except
      that these ways are labelled as RTS-only, and so don't require
      rebuilding all the libraries too.
      
      All of this means we can ship threaded and debugging RTSs with GHC, so
      that users don't need to fetch and build a GHC source tree to use
      them.
      
      I'd like to get this functionality into 6.2.1 if possible, so please
      test (I'm willing to stretch the definition of "interface change" to
      accomodate this, since having a threaded RTS available without having
      to build GHC will be a big win for the Visual Studio project).
      cd20fd58
  8. 21 Sep, 2003 1 commit
    • wolfgang's avatar
      [project @ 2003-09-21 22:20:51 by wolfgang] · 85aa72b9
      wolfgang authored
      Bound Threads
      =============
      
      Introduce a way to use foreign libraries that rely on thread local state
      from multiple threads (mainly affects the threaded RTS).
      
      See the file threads.tex in CVS at haskell-report/ffi/threads.tex
      (not entirely finished yet) for a definition of this extension. A less formal
      description is also found in the documentation of Control.Concurrent.
      
      The changes mostly affect the THREADED_RTS (./configure --enable-threaded-rts),
      except for saving & restoring errno on a per-TSO basis, which is also necessary
      for the non-threaded RTS (a bugfix).
      
      Detailed list of changes
      ------------------------
      
      - errno is saved in the TSO object and restored when necessary:
      ghc/includes/TSO.h, ghc/rts/Interpreter.c, ghc/rts/Schedule.c
      
      - rts_mainLazyIO is no longer needed, main is no special case anymore
      ghc/includes/RtsAPI.h, ghc/rts/RtsAPI.c, ghc/rts/Main.c, ghc/rts/Weak.c
      
      - passCapability: a new function that releases the capability and "passes"
        it to a specific OS thread:
      ghc/rts/Capability.h ghc/rts/Capability.c
      
      - waitThread(), scheduleWaitThread() and schedule() get an optional
        Capability *initialCapability passed as an argument:
      ghc/includes/SchedAPI.h, ghc/rts/Schedule.c, ghc/rts/RtsAPI.c
      
      - Bound Thread scheduling (that's what this is all about):
      ghc/rts/Schedule.h, ghc/rts/Schedule.c
      
      - new Primop isCurrentThreadBound#:
      ghc/compiler/prelude/primops.txt.pp, ghc/includes/PrimOps.h, ghc/rts/PrimOps.hc,
      ghc/rts/Schedule.h, ghc/rts/Schedule.c
      
      - a simple function, rtsSupportsBoundThreads, that returns true if THREADED_RTS
        is defined:
      ghc/rts/Schedule.h, ghc/rts/Schedule.c
      
      - a new implementation of forkProcess (the old implementation stays in place
        for the non-threaded case). Partially broken; works for the standard
        fork-and-exec case, but not for much else. A proper forkProcess is
        really next to impossible to implement:
      ghc/rts/Schedule.c
      
      - Library support for bound threads:
          Control.Concurrent.
            rtsSupportsBoundThreads, isCurrentThreadBound, forkOS,
            runInBoundThread, runInUnboundThread
      libraries/base/Control/Concurrent.hs, libraries/base/Makefile,
      libraries/base/include/HsBase.h, libraries/base/cbits/forkOS.c (new file)
      85aa72b9
  9. 05 Aug, 2003 1 commit
  10. 24 Jul, 2003 1 commit
  11. 23 Jul, 2003 1 commit
  12. 24 Jun, 2003 1 commit
  13. 29 May, 2003 2 commits
    • sof's avatar
      [project @ 2003-05-29 14:39:26 by sof] · a7d8f437
      sof authored
      Support for interop'ing with .NET via FFI declarations along the
      lines of what Hugs98.NET offers, see
      
       http://haskell.org/pipermail/cvs-hugs/2003-March/001723.html
      
      for FFI decl details.
      
      To enable, configure with --enable-dotnet + have a look
      in ghc/rts/dotnet/Makefile for details of what tools are needed to
      build the .NET interop layer (tools from VS.NET / Framework SDK.)
      
      The commit doesn't include some library additions + wider-scale
      testing is required before this extension can be regarded as available
      for general use. 'foreign import dotnet' is currently only supported
      by the C backend.
      a7d8f437
    • simonmar's avatar
      [project @ 2003-05-29 12:59:55 by simonmar] · 2841c2c3
      simonmar authored
      Clean AutoApply.hc too.
      2841c2c3
  14. 29 Mar, 2003 1 commit
  15. 21 Feb, 2003 1 commit
    • sof's avatar
      [project @ 2003-02-21 05:34:12 by sof] · 5b4f5a6a
      sof authored
      Asynchronous / non-blocking I/O for Win32 platforms.
      
      This commit introduces a Concurrent Haskell friendly view of I/O on
      Win32 platforms. Through the use of a pool of worker Win32 threads, CH
      threads may issue asynchronous I/O requests without blocking the
      progress of other CH threads. The issuing CH thread is blocked until
      the request has been serviced though.
      
      GHC.Conc exports the primops that take care of issuing the
      asynchronous I/O requests, which the IO implementation now takes
      advantage of. By default, all Handles are non-blocking/asynchronous,
      but should performance become an issue, having a per-Handle flag for
      turning off non-blocking could easily be imagined&introduced.
      
      [Incidentally, this thread pool-based implementation could easily be
      extended to also allow Haskell code to delegate the execution of
      arbitrary pieces of (potentially blocking) external code to another OS
      thread. Given how relatively gnarly the locking story has turned out
      to be with the 'threaded' RTS, that may not be such a bad idea.]
      5b4f5a6a
  16. 11 Dec, 2002 1 commit
    • simonmar's avatar
      [project @ 2002-12-11 15:36:20 by simonmar] · 0bffc410
      simonmar authored
      Merge the eval-apply-branch on to the HEAD
      ------------------------------------------
      
      This is a change to GHC's evaluation model in order to ultimately make
      GHC more portable and to reduce complexity in some areas.
      
      At some point we'll update the commentary to describe the new state of
      the RTS.  Pending that, the highlights of this change are:
      
        - No more Su.  The Su register is gone, update frames are one
          word smaller.
      
        - Slow-entry points and arg checks are gone.  Unknown function calls
          are handled by automatically-generated RTS entry points (AutoApply.hc,
          generated by the program in utils/genapply).
      
        - The stack layout is stricter: there are no "pending arguments" on
          the stack any more, the stack is always strictly a sequence of
          stack frames.
      
          This means that there's no need for LOOKS_LIKE_GHC_INFO() or
          LOOKS_LIKE_STATIC_CLOSURE() any more, and GHC doesn't need to know
          how to find the boundary between the text and data segments (BIG WIN!).
      
        - A couple of nasty hacks in the mangler caused by the neet to
          identify closure ptrs vs. info tables have gone away.
      
        - Info tables are a bit more complicated.  See InfoTables.h for the
          details.
      
        - As a side effect, GHCi can now deal with polymorphic seq.  Some bugs
          in GHCi which affected primitives and unboxed tuples are now
          fixed.
      
        - Binary sizes are reduced by about 7% on x86.  Performance is roughly
          similar, some programs get faster while some get slower.  I've seen
          GHCi perform worse on some examples, but haven't investigated
          further yet (GHCi performance *should* be about the same or better
          in theory).
      
        - Internally the code generator is rather better organised.  I've moved
          info-table generation from the NCG into the main codeGen where it is
          shared with the C back-end; info tables are now emitted as arrays
          of words in both back-ends.  The NCG is one step closer to being able
          to support profiling.
      
      This has all been fairly thoroughly tested, but no doubt I've messed
      up the commit in some way.
      0bffc410
  17. 12 Oct, 2002 1 commit
    • wolfgang's avatar
      [project @ 2002-10-12 23:12:08 by wolfgang] · 31442604
      wolfgang authored
      Make the Mac OS X build use the HaskellSupport.framework (a MacOS-style "framework" that includes the required libraries libgmp and dlcompat) if it is present. The HaskellSupport.framework is not yet in CVS, but is available from me.
      31442604
  18. 09 Aug, 2002 3 commits
  19. 17 Jul, 2002 1 commit
  20. 10 Jul, 2002 1 commit
    • simonmar's avatar
      [project @ 2002-07-10 08:34:19 by simonmar] · 81b0f793
      simonmar authored
      Fix a bug in the handling of libbfd - we should be checking for DEBUG
      in $(GhcRtsHcOpts) not $(GhcHcOpts), and we can get HAVE_LIBBFD from
      config.h so there's no need to unconditionally define USING_LIBBFD.
      81b0f793
  21. 25 Jun, 2002 1 commit
  22. 13 Apr, 2002 1 commit
  23. 18 Feb, 2002 1 commit
  24. 14 Feb, 2002 2 commits
    • sof's avatar
      [project @ 2002-02-14 17:17:08 by sof] · 18b9187c
      sof authored
      COMPILING_RTS wasn't being fed to the C compiler. It is arguably a
      bug/feature deficiency of GHC not to do the Right Thing for invocations
      such as these:
      
         ghc -c -DFOO foo.c
      
      i.e., pass -DFOO to the C compiler -- currently, you have to be explicit
      about this, -optc-DFOO
      18b9187c
    • simonmar's avatar
      [project @ 2002-02-14 15:11:28 by simonmar] · 584da9b7
      simonmar authored
      fix typo: PKG_CPP_OPTS ==> PACKAGE_CPP_OPTS (fixes linking libgmp)
      584da9b7
  25. 12 Feb, 2002 2 commits
    • simonmar's avatar
      [project @ 2002-02-12 15:17:13 by simonmar] · 2cc5b907
      simonmar authored
      Switch over to the new hierarchical libraries
      ---------------------------------------------
      
      This commit reorganises our libraries to use the new hierarchical
      module namespace extension.
      
      The basic story is this:
      
         - fptools/libraries contains the new hierarchical libraries.
           Everything in here is "clean", i.e. most deprecated stuff has
           been removed.
      
      	- fptools/libraries/base is the new base package
      	  (replacing "std") and contains roughly what was previously
      	  in std, lang, and concurrent, minus deprecated stuff.
      	  Things that are *not allowed* in libraries/base include:
      		Addr, ForeignObj, ByteArray, MutableByteArray,
      		_casm_, _ccall_, ``'', PrimIO
      
      	  For ByteArrays and MutableByteArrays we use UArray and
      	  STUArray/IOUArray respectively now.
      
      	  Modules previously called PrelFoo are now under
      	  fptools/libraries/GHC.  eg. PrelBase is now GHC.Base.
      
      	- fptools/libraries/haskell98 provides the Haskell 98 std.
      	  libraries (Char, IO, Numeric etc.) as a package.  This
      	  package is enabled by default.
      
      	- fptools/libraries/network is a rearranged version of
      	  the existing net package (the old package net is still
      	  available; see below).
      
      	- Other packages will migrate to fptools/libraries in
      	  due course.
      
           NB. you need to checkout fptools/libraries as well as
           fptools/hslibs now.  The nightly build scripts will need to be
           tweaked.
      
         - fptools/hslibs still contains (almost) the same stuff as before.
           Where libraries have moved into the new hierarchy, the hslibs
           version contains a "stub" that just re-exports the new version.
           The idea is that code will gradually migrate from fptools/hslibs
           into fptools/libraries as it gets cleaned up, and in a version or
           two we can remove the old packages altogether.
      
         - I've taken the opportunity to make some changes to the build
           system, ripping out the old hslibs Makefile stuff from
           mk/target.mk; the new package building Makefile code is in
           mk/package.mk (auto-included from mk/target.mk).
      
           The main improvement is that packages now register themselves at
           make boot time using ghc-pkg, and the monolithic package.conf
           in ghc/driver is gone.
      
           I've updated the standard packages but haven't tested win32,
           graphics, xlib, object-io, or OpenGL yet.  The Makefiles in
           these packages may need some further tweaks, and they'll need
           pkg.conf.in files added.
      
         - Unfortunately all this rearrangement meant I had to bump the
           interface-file version and create a bunch of .hi-boot-6 files :-(
      2cc5b907
    • sof's avatar
      [project @ 2002-02-12 05:01:26 by sof] · ccaf7057
      sof authored
      bring stuff in parallel/ into scope when running 'mkdependC'
      ccaf7057
  26. 07 Feb, 2002 1 commit
  27. 04 Feb, 2002 3 commits
  28. 31 Jan, 2002 1 commit
    • sof's avatar
      [project @ 2002-01-31 11:18:06 by sof] · 3b9c5eb2
      sof authored
      First steps towards implementing better interop between
      Concurrent Haskell and native threads.
      
      - factored out Capability handling into a separate source file
        (only the SMP build uses multiple capabilities tho).
      - factored out OS/native threads handling into a separate
        source file, OSThreads.{c,h}. Currently, just a pthreads-based
        implementation; Win32 version to follow.
      - scheduler code now distinguishes between multi-task threaded
        code (SMP) and single-task threaded code ('threaded RTS'),
        but sharing code between these two modes whenever poss.
      
      i.e., just a first snapshot; the bulk of the transitioning code
      remains to be implemented.
      3b9c5eb2
  29. 30 Jan, 2002 2 commits
    • simonmar's avatar
      [project @ 2002-01-30 16:27:34 by simonmar] · 1e046f78
      simonmar authored
      Set $(HC) *after* including boilerplate.mk, which re-defines it.
      1e046f78
    • simonmar's avatar
      [project @ 2002-01-30 12:17:21 by simonmar] · 975ef297
      simonmar authored
      Clean up this Makefile:
      
        - Use the enhanced automatic source-finding machinery from
          paths.mk rather than rolling our own,
      
        - Turn on UseGhcForCc to get our C files compiled with GHC.
          This fixes some obscure bugs caused by the fact that we
          were re-initializing $(CC_OPTS) in this Makefile using
          :=, when it had previously already been set with = (apparently
          different versions of GNU make behave differently presented
          with this kind of mixed assigment).
      975ef297
  30. 24 Jan, 2002 1 commit
  31. 15 Jan, 2002 1 commit