------------------------------------------------------------------------------
-The history of the Strategies module:
-
-Changelog:
-$Log: Strategies.hs,v $
-Revision 1.1 2001/06/28 14:15:02 simonmar
-First cut of the Haskell Core Libraries
-=======================================
-
-NOTE: it's not meant to be a working snapshot. The code is just here
-to look at and so the NHC/Hugs guys can start playing around with it.
-
-There is no build system. For GHC, the libraries tree is intended to
-be grafted onto an existing fptools/ tree, and the Makefile in
-libraries/core is a quick hack for that setup. This won't work at the
-moment without the other changes needed in fptools/ghc, which I
-haven't committed because they'll cause breakage. However, with the
-changes required these sources build a working Prelude and libraries.
-
-The layout mostly follows the one we agreed on, with one or two minor
-changes; in particular the Data/Array layout probably isn't final
-(there are several choices here).
-
-The document is in libraries/core/doc as promised.
-
-The cbits stuff is just a copy of ghc/lib/std/cbits and has
-GHC-specific stuff in it. We should really separate the
-compiler-specific C support from any compiler-independent C support
-there might be.
-
-Don't pay too much attention to the portability or stability status
-indicated in the header of each source file at the moment - I haven't
-gone through to make sure they're all consistent and make sense.
-
-I'm using non-literate source outside of GHC/. Hope that's ok with
-everyone.
-
-We need to discuss how the build system is going to work...
-
-Revision 1.3 2001/03/22 03:51:12 hwloidl
- -*- outline -*-
-Time-stamp: <Thu Mar 22 2001 03:50:16 Stardate: [-30]6365.79 hwloidl>
-
-This commit covers changes in GHC to get GUM (way=mp) and GUM/GdH (way=md)
-working. It is a merge of my working version of GUM, based on GHC 4.06,
-with GHC 4.11. Almost all changes are in the RTS (see below).
-
-GUM is reasonably stable, we used the 4.06 version in large-ish programs for
-recent papers. Couple of things I want to change, but nothing urgent.
-GUM/GdH has just been merged and needs more testing. Hope to do that in the
-next weeks. It works in our working build but needs tweaking to run.
-GranSim doesn't work yet (*sigh*). Most of the code should be in, but needs
-more debugging.
-
-ToDo: I still want to make the following minor modifications before the release
-- Better wrapper skript for parallel execution [ghc/compiler/main]
-- Update parallel docu: started on it but it's minimal [ghc/docs/users_guide]
-- Clean up [nofib/parallel]: it's a real mess right now (*sigh*)
-- Update visualisation tools (minor things only IIRC) [ghc/utils/parallel]
-- Add a Klingon-English glossary
-
-* RTS:
-
-Almost all changes are restricted to ghc/rts/parallel and should not
-interfere with the rest. I only comment on changes outside the parallel
-dir:
-
-- Several changes in Schedule.c (scheduling loop; createThreads etc);
- should only affect parallel code
-- Added ghc/rts/hooks/ShutdownEachPEHook.c
-- ghc/rts/Linker.[ch]: GUM doesn't know about Stable Names (ifdefs)!!
-- StgMiscClosures.h: END_TSO_QUEUE etc now defined here (from StgMiscClosures.hc)
- END_ECAF_LIST was missing a leading stg_
-- SchedAPI.h: taskStart now defined in here; it's only a wrapper around
- scheduleThread now, but might use some init, shutdown later
-- RtsAPI.h: I have nuked the def of rts_evalNothing
-
-* Compiler:
-
-- ghc/compiler/main/DriverState.hs
- added PVM-ish flags to the parallel way
- added new ways for parallel ticky profiling and distributed exec
-
-- ghc/compiler/main/DriverPipeline.hs
- added a fct run_phase_MoveBinary which is called with way=mp after linking;
- it moves the bin file into a PVM dir and produces a wrapper script for
- parallel execution
- maybe cleaner to add a MoveBinary phase in DriverPhases.hs but this way
- it's less intrusive and MoveBinary makes probably only sense for mp anyway
-
-* Nofib:
-
-- nofib/spectral/Makefile, nofib/real/Makefile, ghc/tests/programs/Makefile:
- modified to skip some tests if HWL_NOFIB_HACK is set; only tmp to record
- which test prgs cause problems in my working build right now
-
-Revision 1.2 2000/11/18 02:13:11 hwloidl
-Now provides explicit def of seq (rather than just re-exporting).
-Required by the current version of the compiler.
-
-Revision 1.1 2000/01/14 13:34:32 hwloidl
-Module for specifying (parallel) behavioural code.
-
-Revision 1.9 1997/10/01 00:27:19 hwloidl
-Type of par and seq changed to Done -> Done -> Done with Done = ()
-Works for Haskell 1.2 as well as Haskell 1.4 (checks the CPP variable
-__HASKELL1__ to distinguish setups).
-Fixed precedences for par and seq for Haskell 1.4 (stronger than using).
-New infix operators >| and >|| as aliases for par and seq as strategy
-combinators.
-
-Revision 1.8 1997/05/20 21:13:22 hwloidl
-Revised to use `demanding` and `sparking` (final JFP paper version)
-
-Revision 1.7 1997/04/02 21:26:21 hwloidl
-Minor changes in documentation, none in the code.
-
-
-revision 1.5
-Version VII.1; Strategies96; Type: a -> ()
-Minor changes to previous version.
-CPP flags now separate GUM from GranSim version.
-Infix declaration for `using` (important for e.g. quicksort where the old
-version puts parentheses in the wrong way).
-Moer instances for NFData and markStartegies (in GranSim setup only).
-
-revision 1.4
-Version VII; Strategies96; Type: a -> ()
-The type has changed again; with the old type it's not possible to describe
-all the strategies we want (for example seqPair r0 rnf which should not
-evaluate the first component of the pair at all). The () type acts as info
-that the strategy has been applied.
-The function `using` is used as inverse strategy application i.e.
-on top level we usually have something like res `using` strat where ...
-The markStrategy hack is included in this version: it attaches an Int value
-to the currently running strategy (this can be inherited by all sub-strats)
-It doesn't model the jumps between evaluating producer and consumer properly
-(for that something like cost centers would be necessary).
-
-revision 1.3
-Version VI (V-based); Strategies95; Type: a -> a
-Now uses library modules like FiniteMap with strategies in there.
-CPP flags for using the same module with GUM and GranSim.
-A few new strategies.
-
-revision 1.2
-Version V; Strategies95; Type: a -> a
-The type of Strategies has changed from a -> () to a -> a
-All strategies and instances of NFData have been redefined accordingly.
-This branch started off after discussions between PWT, SLPJ and HWL in
-mid Nov (start of development of the actual module: 10/1/96)
-
-revision 1.1 Initial revision
------------------------------------------------------------------------------
--- To use fakeinfo first replace all %%$ by \@
--- If you have fakeinfo makers in the file you need a slightly modified
--- version of the lit-deatify script (called by lit2pgm). You get that
--- version on Suns and Alphas in Glasgow by using
--- \tr{lit2pgm -H "${HOME}/bin/`hw_os`"}
--- in your Makefile
------------------------------------------------------------------------------