$Id: README,v 1.1 1992/01/15 11:59:13 queinnec Exp $

   PCALL and other high tech control structures in Scheme
		by Christian Queinnec
	Ecole Polytechnique and INRIA-Rocquencourt

This set of files must contain:
	README
	threads.scm
	susp.scm
	cont-bm.scm
	splitter.scm

README is the precise file you are reading.

threads.scm contains a multi-threads kernel which provides a pcall
facility with the semantics described in [Queinnec90g] and
[Queinnnec91b]. Threads are represented by continuations, the kernel
is non preemptive but rather unpredictable. 

susp.scm defines place-holders, futures, and suspensions. A new trick
is defined: `pursuable futures' which will be documented in a future
paper. The idea of pursuable futures comes from the Thesis of Vincent
Poirriez.

splitter.scm defines the splitter conntrol operator as described in
[Queinnec91a]. It is a high level control operator that allows to 
define partial continuations. 

cont-bm.scm contains a benchmark making use of continuations in
various contexts. They heavily use the indefinite extent of Scheme
continuations. The constants that are predefined in it can be changed,
they are set to values that allow Scheme->C (from Joel Bartlett) to
run them with a 20 Mbytes heap.


BIBLIOGRAPHY:

@InProceedings{Queinnec90g,
  author = 	 "Christian Queinnec",
  title = 	 "{P}oly{S}cheme : {A} {S}emantics for a {C}oncurrent
		  {S}cheme",
  booktitle = 	 "Workshop on High Performance and Parallel Computing in Lisp",
  year = 	 1990,
  organization = europal,
  address = 	 "Twickenham (UK)",
  month = 	 nov,
  ecritsdIcsla = 4,
  abstract = "
The Scheme language does not fully specify the
semantics of combination: the evaluation order of the terms composing
a combination is left indeterminate.  We investigate in this paper a
different semantics for Scheme where terms of combinations are evaluated
concurrently. The resulting semantics models a language with concurrent
threads sharing a common workspace. The semantics is given in terms
of denotational semantics and uses resumptions as well as a choice operator:
{\it oneof\/} which mimics a scheduler.
An alternate definition for this operator lets appear
the classical powerdomains. The main interest of this operator is to
offer a formalization that can be read with an operational point of view
while keeping a firm theoretical base.

Scheme also offers first class continuations with indefinite extent;
we examine some semantics for continuations with respect to
concurrency. Each of these semantics is a natural extension
of the sequential case of regular Scheme. Still they strongly
differ in their observed behaviours.

The resulting language, named PolyScheme, offers much of the features
of current concurrent Lisp (or Scheme) dialects thanks to the sole
extension of its combination semantics and without any explicit
specialized construct dealing with concurrency."
}

@InProceedings{Queinnec91a,
  author = 	 "Christian Queinnec and Bernard Serpette",
  title = 	 "{A} {D}ynamic {E}xtent {C}ontrol {O}perator for
		  {P}artial {C}ontinuations",
  booktitle = 	 popl91,
  year = 	 1991,
  pages = 	 "174--184",
  address = 	 "Orlando (Florida USA)",
  month = 	 jan,
  ecritsdIcsla = 5,
  abstract = "
A partial continuation is a prefix of the computation that remains to
be done. We propose in this paper a new operator
which precisely controls which prefix is to be abstracted into a partial
continuation. This operator is strongly related to the notion of
dynamic extent which we denotationally characterize.
Some programming examples are commented and
we also show how to express previously proposed control operators.
A suggested implementation is eventually discussed."
}

@InProceedings{Queinnec91b,
  author = 	 "Christian Queinnec",
  title = 	 "{C}rystal {S}cheme, {A} {L}anguage for {M}assivel
		  {P}arallel {M}achines",
  editor =       "M Durand and F {El Dabaghi}",
  booktitle = 	 "Second Symposium on High Performance Computing",
  year = 	 1991,
  pages =        "91-102",
  publisher =    north-holland,
  address = 	 "Montpellier (France)",
  month = 	 oct,
  ecritsdIcsla = 5,
  abstract = "
Massively parallel computers are built out of thousand conventional
but powerful processors with independent memories. Very simple
topologies mainly based on physical neighbourhood link these
processors. The paper discusses extensions to the Scheme language in
order to master such machines. Allowing arguments of functions to be
concurrently evaluated introduces parallelism. Migration across the
different processors is achieved through a remote evaluation
mechanism. We propose a clean semantics for first class continuations
in presence of concurrency and show how they can be used to build,
in the language itself, advanced concurrent constructs such as futures.
Eventually we comment some simulations, with various topologies and
migration policies, which enables to appreciate our previous
linguistical choices and confirms the viability of the model."
}

