edenmodules 1.1.0.0 → 1.1.0.1
raw patch · 6 files changed
+120/−95 lines, 6 filesPVP: minor bump suggested
API additions: PVP suggests at least a minor version bump
API changes (from Hackage documentation)
+ Control.Parallel.Eden: rfi :: Trans b => (a -> b) -> a -> Process () b
+ Control.Parallel.Eden: type Places = [Int]
+ Control.Parallel.Eden.EdenConcHs: rfi :: Trans b => (a -> b) -> a -> Process () b
+ Control.Parallel.Eden.EdenConcHs: type Places = [Int]
Files
- Control/Parallel/Eden.hs +45/−35
- Control/Parallel/Eden/EdenConcHs.hs +47/−37
- Control/Parallel/Eden/ParPrim.hs +6/−6
- configure +9/−9
- configure.ac +1/−1
- edenmodules.cabal +12/−7
Control/Parallel/Eden.hs view
@@ -14,8 +14,8 @@ -- inside ParPrim.hs). -- -- Depends on GHC. Using standard GHC, you will get a threaded simulation of Eden. --- Use the patched GHC-Eden compiler from http:\/\/www.mathematik.uni-marburg.de/~eden --- for a parallel build.+-- Use the special GHC-Eden compiler from http:\/\/www.mathematik.uni-marburg.de/~eden +-- for parallel execution with distributed heaps. -- -- Eden Group Marburg ( http:\/\/www.mathematik.uni-marburg.de/~eden ) --@@ -23,30 +23,30 @@ module Control.Parallel.Eden( -- * Basic Eden -- ** Process definition- Process, process+ Process, process, rfi -- ** Parallel Action , PA() , runPA -- ** Process instantiation -- | The operator # is the standard operator for process instantiation in Eden. Similar - -- to apply a function @f@ to an argument @x@ (@f x@), you can instantiate - -- a process for f with the argument x (process f # x). The calculation is - -- the same from a denotational point of view. The operational semantics - -- however is different because the operation is executed remotely. If - -- you prefer to expose the side effects of such an - -- operation explicitly with the IO-Meant wrapped in the parallel action monad, you can use function @instantiate@ - -- (p # x = runPA (instantiate p x)). It is non trivial to instantiate - -- a list of processes such that all instantiations take place immediately. Therefor Eden + -- to applying a function @f@ to an argument @x@ (@f x@), it instantiates+ -- a process for f with the argument x (process f # x). The computation is + -- the same from a denotational point of view. The operational semantics, + -- however, is different because the operation is executed remotely. If + -- you prefer to expose the side effects of such an operation explicitly with the + -- IO-Monad wrapped in the parallel action monad, you can use function @instantiate@ + -- (p # x = runPA (instantiate p x)). It is non-trivial to instantiate + -- a list of processes such that all instantiations take place immediately. Therefore Eden -- provides function @spawn@ which wraps this commonly used pattern. --- -- The Eden runtime system takes over process placement of the processes for the basic - -- instantiation functions. In the default setting, process placement is done round robin, + -- The Eden runtime system handles process placementfor the basic instantiation functions.+ -- In the default setting, process placement is done round robin, -- where the distribution is decided locally by each machine. The runtime option @qrnd@ -- enables random process placement. Eden further offers functions instantiateAt and -- spawnAt with an additional placement parameter. @instantiateAt i@ instantiates the -- process at machine @i mod noPe@ for a positive @i@ and @instantiateAt 0 = instantiate@. -- This is similar for @spawnAt@. --- -- We provide all instantiation functions also in a version which takes functions instead + -- All instantiation functions are also provided in versions which take functions instead -- of process abstractions as parameters. In this case, the process abstractions are -- implicitly created prior to instantiation. The function version of @#@ is e.g. called @$#@, -- the names of other instantiation functions of this kind contain an @F@.@@ -63,20 +63,20 @@ -- ** Overloaded Communication -- | Communication of process inputs and outputs is done implicitly by the Eden runtime system. -- The sent data has to be transmissible i.e. it has to be an instance of type class Trans. All - -- data will be evaluated to normal form before it is send in one chunk. Communication is - -- overloaded for lists which are sent as streams element by element and tuples which are + -- data will be evaluated to normal form before it is sent in one message. Communication is + -- overloaded for lists which are sent as streams element by element, and for tuples which are -- sent using concurrent channel connections for each tuple element. Note that lists in - -- tuples are streamed concurrently, but tuples in - -- lists are streamed with each element in one packet. The inner list of nested lists is - -- also sent in one packet.+ -- tuples are streamed concurrently, but a list of tuples+ -- is streamed element-wise, with each tuple elements evaluated as a whole. + -- The inner list of nested lists will also be sent in one packet. , Trans(..)- -- * System information- , noPe, selfPe+ -- * Explicit placement+ , noPe, selfPe, Places -- * Remote Data -- | A remote data handle @ RD a @ represents data of type a which may be located on a remote machine. Such a handle is very small and can be passed via intermediate machines with only little communication overhead. You can create a remote data using the function -- release and access a remote value using the function fetch. ----- Notice that you have to fetch a remote value exactly once!+-- Notice that a remote value may only be fetched exactly once! , RD , release, releasePA, fetch, fetchPA , releaseAll, fetchAll@@ -86,7 +86,7 @@ , new, parfill -- using unsafePerformIO -- * Nondeterminism , merge, mergeProc -- merge, as specified in Eden language, but function!- -- * Deprecated legacy code for Eden 5+ -- * Deprecated legacy code for Eden 5 , Lift(..), deLift, createProcess, cpAt -- * Reexported functions from Control.Deepseq , NFData(..) @@ -140,7 +140,7 @@ -------------- Eden constructs, also available in seq. version ---------- --- system information+-- explicit placement -- | Number of (logical) machines in the system noPe :: Int@@ -150,12 +150,15 @@ selfPe :: Int selfPe = unsafePerformIO ParPrim.selfPe +-- | Places where to instantiate lists of processes+type Places = [Int]+ -- processes and instantiation -- | Creates a process abstraction @ Process a b @ from a function @ a -> b@. process :: (Trans a, Trans b) - => (a -> b) -- ^ Input function- -> Process a b -- ^ Process abstraction from input function+ => (a -> b) -- ^ Input function+ -> Process a b -- ^ Process abstraction from input function process f = Proc f_remote where f_remote (Comm sendResult) inCC = do (sendInput, input) <- createComm@@ -163,6 +166,13 @@ sendData Data sendInput sendResult (f input) +-- | Remote function invocation, evaluating a function application remotely+-- without communicating the input argument+rfi :: Trans b + => (a -> b) -- ^ Input function+ -> a -- ^ Offline input+ -> Process () b -- ^ Process abstraction; process takes unit input+rfi h x = process (\ () -> h x) -- | Instantiates a process on a remote machine, sends the input -- of type a and returns the process output of type b in the parallel action monad, thus it can be combined to a larger parallel action.@@ -173,7 +183,7 @@ -- | Instantiation with explicit placement (see instantiate).-instantiateAt :: (Trans a, Trans b) => Int -- ^ Machine number+instantiateAt :: (Trans a, Trans b) => Int -- ^Machine number -> Process a b -- ^Process abstraction -> a -- ^Process input -> PA b -- ^Process output@@ -230,8 +240,8 @@ -- with corresponding inputs of type a and returns the processes -- outputs, each of type b. The i-th process is supplied with the -- i-th input generating the i-th output. --- The number of processes (= length of output list) is defined by --- the shorter input list (thus one list may be infinite).+-- The number of processes (= length of output list) is determined by +-- the length of the shorter input list (thus one list may be infinite). spawn :: (Trans a,Trans b) => [Process a b] -- ^Process abstractions -> [a] -- ^Process inputs@@ -258,8 +268,8 @@ -- with corresponding inputs of type a and returns the processes -- outputs, each of type b. The i-th process is supplied with the -- i-th input generating the i-th output. --- The number of processes (= length of output list) is defined by --- the shorter input list (thus one list may be infinite).+-- The number of processes (= length of output list) is determined by +-- the length of the shorter input list (thus one list may be infinite). spawnF :: (Trans a,Trans b) => [a -> b] -- ^Process abstractions -> [a] -- ^Process inputs@@ -326,7 +336,7 @@ {-# NOINLINE new #-} -- | A channel can be created with the function new (this is an unsafe side --- effect!). It takes a function, whose+-- effect!). It takes a function whose -- first parameter is the channel name @ChanName a@ and whose second parameter -- is the value of type a that will be received lazily in the future. The -- @ChanName@ and the value of type a can be used in the body of the parameter @@ -349,8 +359,8 @@ -- second parameter is the value to be send. The third parameter will be the -- functions result after the -- concurrent sending operation is initiated. The sending operation will be --- triggered as soon as the result of type @b@ is demanded. Take care that the --- demand for the result of @parfill@ does not depend on the sent value, as this +-- triggered as soon as the result of type @b@ is demanded. Take care not to +-- make the result of @parfill@ depend on the sent value, as this -- will create a deadlock. parfill :: Trans a => ChanName a -- ^ @ChanName@ to connect with -> a -- ^ Data that will be send@@ -374,7 +384,7 @@ -- | This establishes a direct connection to the process which released the data in the first place. --- Notice that you have to fetch a remote value exactly once! +-- Notice that a remote value may only be fetched exactly once! {-# NOINLINE fetch #-} fetch :: Trans a => RD a -- ^ The Remote Data handle
Control/Parallel/Eden/EdenConcHs.hs view
@@ -25,30 +25,30 @@ module Control.Parallel.Eden.EdenConcHs( -- * Basic Eden -- ** Process definition- Process, process+ Process, process, rfi -- ** Parallel Action , PA() , runPA -- ** Process instantiation -- | The operator # is the standard operator for process instantiation in Eden. Similar - -- to apply a function @f@ to an argument @x@ (@f x@), you can instantiate - -- a process for f with the argument x (process f # x). The calculation is - -- the same from a denotational point of view. The operational semantics - -- however is different because the operation is executed remotely. If - -- you prefer to expose the side effects of such an - -- operation explicitly with the IO-Meant wrapped in the parallel action monad, you can use function @instantiate@ - -- (p # x = runPA (instantiate p x)). It is non trivial to instantiate - -- a list of processes such that all instantiations take place immediately. Therefor Eden + -- to applying a function @f@ to an argument @x@ (@f x@), it instantiates+ -- a process for f with the argument x (process f # x). The computation is + -- the same from a denotational point of view. The operational semantics, + -- however, is different because the operation is executed remotely. If + -- you prefer to expose the side effects of such an operation explicitly with the + -- IO-Monad wrapped in the parallel action monad, you can use function @instantiate@ + -- (p # x = runPA (instantiate p x)). It is non-trivial to instantiate + -- a list of processes such that all instantiations take place immediately. Therefore Eden -- provides function @spawn@ which wraps this commonly used pattern. --- -- The Eden runtime system takes over process placement of the processes for the basic - -- instantiation functions. In the default setting, process placement is done round robin, + -- The Eden runtime system handles process placementfor the basic instantiation functions.+ -- In the default setting, process placement is done round robin, -- where the distribution is decided locally by each machine. The runtime option @qrnd@ -- enables random process placement. Eden further offers functions instantiateAt and -- spawnAt with an additional placement parameter. @instantiateAt i@ instantiates the -- process at machine @i mod noPe@ for a positive @i@ and @instantiateAt 0 = instantiate@. -- This is similar for @spawnAt@. --- -- We provide all instantiation functions also in a version which takes functions instead + -- All instantiation functions are also provided in versions which take functions instead -- of process abstractions as parameters. In this case, the process abstractions are -- implicitly created prior to instantiation. The function version of @#@ is e.g. called @$#@, -- the names of other instantiation functions of this kind contain an @F@.@@ -65,20 +65,20 @@ -- ** Overloaded Communication -- | Communication of process inputs and outputs is done implicitly by the Eden runtime system. -- The sent data has to be transmissible i.e. it has to be an instance of type class Trans. All - -- data will be evaluated to normal form before it is send in one chunk. Communication is - -- overloaded for lists which are sent as streams element by element and tuples which are + -- data will be evaluated to normal form before it is sent in one message. Communication is + -- overloaded for lists which are sent as streams element by element, and for tuples which are -- sent using concurrent channel connections for each tuple element. Note that lists in - -- tuples are streamed concurrently, but tuples in - -- lists are streamed with each element in one packet. The inner list of nested lists is - -- also sent in one packet.+ -- tuples are streamed concurrently, but a list of tuples+ -- is streamed element-wise, with each tuple elements evaluated as a whole. + -- The inner list of nested lists will also be sent in one packet. , Trans(..)- -- * System information- , noPe, selfPe+ -- * Explicit placement+ , noPe, selfPe, Places -- * Remote Data -- | A remote data handle @ RD a @ represents data of type a which may be located on a remote machine. Such a handle is very small and can be passed via intermediate machines with only little communication overhead. You can create a remote data using the function -- release and access a remote value using the function fetch. ----- Notice that you have to fetch a remote value exactly once!+-- Notice that a remote value may only be fetched exactly once! , RD , release, releasePA, fetch, fetchPA , releaseAll, fetchAll@@ -88,7 +88,7 @@ , new, parfill -- using unsafePerformIO -- * Nondeterminism , merge, mergeProc -- merge, as specified in Eden language, but function!- -- * Deprecated legacy code for Eden 5+ -- * Deprecated legacy code for Eden 5 , Lift(..), deLift, createProcess, cpAt -- * Reexported functions from Control.Deepseq , NFData(..) @@ -101,8 +101,8 @@ import Control.Concurrent -- Instances only import System.IO.Unsafe(unsafePerformIO) -- for functional face-import qualified Control.Parallel.Eden.ParPrimConcHs as ParPrim-import Control.Parallel.Eden.ParPrimConcHs hiding(noPe,selfPe)+import qualified Control.Parallel.Eden.ParPrim as ParPrim+import Control.Parallel.Eden.ParPrim hiding(noPe,selfPe) import Control.DeepSeq (NFData(..)) import Control.Seq -- reexported! (Strategy, using, r0, rseq, rdeepseq, seqList, seqFoldable)@@ -142,7 +142,7 @@ -------------- Eden constructs, also available in seq. version ---------- --- system information+-- explicit placement -- | Number of (logical) machines in the system noPe :: Int@@ -152,12 +152,15 @@ selfPe :: Int selfPe = unsafePerformIO ParPrim.selfPe +-- | Places where to instantiate lists of processes+type Places = [Int]+ -- processes and instantiation -- | Creates a process abstraction @ Process a b @ from a function @ a -> b@. process :: (Trans a, Trans b) - => (a -> b) -- ^ Input function- -> Process a b -- ^ Process abstraction from input function+ => (a -> b) -- ^ Input function+ -> Process a b -- ^ Process abstraction from input function process f = Proc f_remote where f_remote (Comm sendResult) inCC = do (sendInput, input) <- createComm@@ -165,6 +168,13 @@ sendData Data sendInput sendResult (f input) +-- | Remote function invocation, evaluating a function application remotely+-- without communicating the input argument+rfi :: Trans b + => (a -> b) -- ^ Input function+ -> a -- ^ Offline input+ -> Process () b -- ^ Process abstraction; process takes unit input+rfi h x = process (\ () -> h x) -- | Instantiates a process on a remote machine, sends the input -- of type a and returns the process output of type b in the parallel action monad, thus it can be combined to a larger parallel action.@@ -175,7 +185,7 @@ -- | Instantiation with explicit placement (see instantiate).-instantiateAt :: (Trans a, Trans b) => Int -- ^ Machine number+instantiateAt :: (Trans a, Trans b) => Int -- ^Machine number -> Process a b -- ^Process abstraction -> a -- ^Process input -> PA b -- ^Process output@@ -218,7 +228,7 @@ p # x = runPA $ instantiateAt 0 p x --- | Instantiates a process defined by the given function a remote machine, sends the input +-- | Instantiates a process defined by the given function on a remote machine, sends the input -- of type a and returns the process output of type b. ( $# ) :: (Trans a, Trans b) @@ -232,8 +242,8 @@ -- with corresponding inputs of type a and returns the processes -- outputs, each of type b. The i-th process is supplied with the -- i-th input generating the i-th output. --- The number of processes (= length of output list) is defined by --- the shorter input list (thus one list may be infinite).+-- The number of processes (= length of output list) is determined by +-- the length of the shorter input list (thus one list may be infinite). spawn :: (Trans a,Trans b) => [Process a b] -- ^Process abstractions -> [a] -- ^Process inputs@@ -260,8 +270,8 @@ -- with corresponding inputs of type a and returns the processes -- outputs, each of type b. The i-th process is supplied with the -- i-th input generating the i-th output. --- The number of processes (= length of output list) is defined by --- the shorter input list (thus one list may be infinite).+-- The number of processes (= length of output list) is determined by +-- the length of the shorter input list (thus one list may be infinite). spawnF :: (Trans a,Trans b) => [a -> b] -- ^Process abstractions -> [a] -- ^Process inputs@@ -328,7 +338,7 @@ {-# NOINLINE new #-} -- | A channel can be created with the function new (this is an unsafe side --- effect!). It takes a function, whose+-- effect!). It takes a function whose -- first parameter is the channel name @ChanName a@ and whose second parameter -- is the value of type a that will be received lazily in the future. The -- @ChanName@ and the value of type a can be used in the body of the parameter @@ -339,7 +349,7 @@ -- @new (\channame val -> (channame,val))@ -- returns the tuple @(channame, value)@ . new :: Trans a => - (ChanName a -> a-> b) -- ^ Parameter function that takes a Channel Name and substitute for lazily received value.+ (ChanName a -> a-> b) -- ^ Parameter function that takes a channel name and a substitute for the lazily received value. -> b -- ^ Forwarded result new chanValCont = unsafePerformIO $ do (chan , val) <- createComm@@ -351,8 +361,8 @@ -- second parameter is the value to be send. The third parameter will be the -- functions result after the -- concurrent sending operation is initiated. The sending operation will be --- triggered as soon as the result of type @b@ is demanded. Take care that the --- demand for the result of @parfill@ does not depend on the sent value, as this +-- triggered as soon as the result of type @b@ is demanded. Take care not to +-- make the result of @parfill@ depend on the sent value, as this -- will create a deadlock. parfill :: Trans a => ChanName a -- ^ @ChanName@ to connect with -> a -- ^ Data that will be send@@ -376,7 +386,7 @@ -- | This establishes a direct connection to the process which released the data in the first place. --- Notice that you have to fetch a remote value exactly once! +-- Notice that a remote value may only be fetched exactly once! {-# NOINLINE fetch #-} fetch :: Trans a => RD a -- ^ The Remote Data handle
Control/Parallel/Eden/ParPrim.hs view
@@ -14,19 +14,19 @@ -- -- Depends on GHC. Using standard GHC, you will get a threaded simulation of the -- parallel primitives. --- Use the patched GHC-Eden compiler from http:\/\/www.mathematik.uni-marburg.de/~eden --- for a parallel build.+-- Use the special GHC-Eden compiler from http:\/\/www.mathematik.uni-marburg.de/~eden +-- for parallel execution with distributed heaps. -- -- Eden Group Marburg ( http:\/\/www.mathematik.uni-marburg.de/~eden ) -- ----------------------------------------------- #if defined(NOT_PARALLEL) -#warning !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\- Eden BUILD WITH CONCURRENT HASKELL SIMULATION OF PARALLEL PRIMITIVES, \+#warning !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\+ BUILDING A CONCURRENT HASKELL SIMULATION OF THE PARALLEL PRIMITIVES,\ DON'T EXPECT BIG SPEEDUPS! USE THE EDEN VERSION OF GHC FROM \ http://www.mathematik.uni-marburg.de/~eden \- FOR A PARALLEL BUILD \- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'+ FOR A PARALLEL BUILD.\+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!' #ifndef __GLASGOW_HASKELL__ #error Need GHC to compile this simulation. #endif
configure view
@@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles.-# Generated by GNU Autoconf 2.68 for Eden modules for parallel Haskell 1.1.0.+# Generated by GNU Autoconf 2.68 for Eden modules for parallel Haskell 1.1.0.1. # # Report bugs to <eden@informatik.uni-marburg.de>. #@@ -559,8 +559,8 @@ # Identity of this package. PACKAGE_NAME='Eden modules for parallel Haskell' PACKAGE_TARNAME='edenmodules'-PACKAGE_VERSION='1.1.0'-PACKAGE_STRING='Eden modules for parallel Haskell 1.1.0'+PACKAGE_VERSION='1.1.0.1'+PACKAGE_STRING='Eden modules for parallel Haskell 1.1.0.1' PACKAGE_BUGREPORT='eden@informatik.uni-marburg.de' PACKAGE_URL='' @@ -1158,7 +1158,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF-\`configure' configures Eden modules for parallel Haskell 1.1.0 to adapt to many kinds of systems.+\`configure' configures Eden modules for parallel Haskell 1.1.0.1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1219,7 +1219,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in- short | recursive ) echo "Configuration of Eden modules for parallel Haskell 1.1.0:";;+ short | recursive ) echo "Configuration of Eden modules for parallel Haskell 1.1.0.1:";; esac cat <<\_ACEOF @@ -1291,7 +1291,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF-Eden modules for parallel Haskell configure 1.1.0+Eden modules for parallel Haskell configure 1.1.0.1 generated by GNU Autoconf 2.68 Copyright (C) 2010 Free Software Foundation, Inc.@@ -1308,7 +1308,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by Eden modules for parallel Haskell $as_me 1.1.0, which was+It was created by Eden modules for parallel Haskell $as_me 1.1.0.1, which was generated by GNU Autoconf 2.68. Invocation command line was $ $0 $@@@ -2314,7 +2314,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log="-This file was extended by Eden modules for parallel Haskell $as_me 1.1.0, which was+This file was extended by Eden modules for parallel Haskell $as_me 1.1.0.1, which was generated by GNU Autoconf 2.68. Invocation command line was CONFIG_FILES = $CONFIG_FILES@@ -2367,7 +2367,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\-Eden modules for parallel Haskell config.status 1.1.0+Eden modules for parallel Haskell config.status 1.1.0.1 configured by $0, generated by GNU Autoconf 2.68, with options \\"\$ac_cs_config\\"
configure.ac view
@@ -1,4 +1,4 @@-AC_INIT([Eden modules for parallel Haskell], [1.1.0], [eden@informatik.uni-marburg.de], [edenmodules])+AC_INIT([Eden modules for parallel Haskell], [1.1.0.1], [eden@informatik.uni-marburg.de], [edenmodules]) # Safety check: Ensure that we are in the correct source directory. AC_CONFIG_SRCDIR([edenmodules.cabal])
edenmodules.cabal view
@@ -1,5 +1,5 @@ name: edenmodules-version: 1.1.0.0+version: 1.1.0.1 license: BSD3 license-file: LICENSE maintainer: eden@mathematik.uni-marburg.de@@ -13,13 +13,18 @@ programmer from the tedious task of managing low-level details by introducing automatic communication (via head-strict lazy lists), synchronisation, and process handling. - The Eden-modules depend on GHC. Using standard GHC, you will get a - threaded simulation of Eden. Use the patched GHC-Eden compiler from - <http://www.mathematik.uni-marburg.de/~eden>- for a parallel build. See our homepage for more documentation and a - tutorial. -category: Control.Parallel+ The Eden-modules depend on GHC, and should normally use a GHC extension+ to support parallel execution using message passing.+ This modified GHC-Eden compiler is available from+ <http://www.mathematik.uni-marburg.de/~eden>.+ When built using a standard GHC, this package will produce a + threaded simulation of Eden. ++ The Eden homepage <http://www.mathematik.uni-marburg.de/~eden>+ provides more documentation and a tutorial.++category: Control, Distributed Computing, Eden, Parallelism build-type: Configure cabal-version: >=1.6