The PRAM Programming Language Fork

Fork Compiler - Previous releases and development history


The Fork compiler fcc, written by Christoph Kessler, generates code for the SB-PRAM simulator. fcc is technically based on the lcc1.9 C compiler.

Previous releases of the compiler package with development history

Fork Compiler version 1.6 (released March 10, 1997):
New features:
- seq construct
- implementation of a parallel queue
- simple color graphics library

Compiler version 1.7 (released Sept. 1997, last update: Feb. 6, 1998)
New features:
- block-local (group-local) shared variables
- a private value, e.g. groupsize(), is now also allowed as first parameter in the fork statement (but a warning is emitted)
- updated Fork95 tutorial (60 pages, see below) included in the documentation
- bugs in scanf() and strcmp() have been fixed
- warnings occur for old-style function declarations, the segmentation faults are eliminated ;-)

Compiler version 1.8
New features in version 1.8: (released Feb. 2, 1999)
- join construct fully implemented as a statement in the compiler.
(see example program queens.c for a demonstation of join usage)
- join macro is deprecated (but still available)
- shared memory access statistics by the printAccStat() function (now superseded by trv
New features in update 1.8.1:
- further, faster and/or more accurate math.h routines: sqrt(), exp(), ln(), asin(), acos(), atan(), acot(), arsinh(), arcosh(), artanh(), arcoth(), pow()
- lock constructors: new_SimpleLock(), new_FairLock(), new_RWLock(), new_RWDLock()
- new lock variant RWDLock, suitable for asynchronous destructive updating of concurrent pointer data structures
New features in update 1.8.2: released June 11, 1999 (last bug fix June 23, 1999); size: 755 KB gzip'ed tar file.
- bug fix: sharities of formal parameters declared in function pointer declarations are now recognized also for local variables and function parameters.
- optimization of group barriers after synchronous user functions
- the nbody.c example application program
- example code for generic implementations of dataparallel skeletons: map, reduce, prefix
- code instrumentation for barrier statistics is suppressed when not required
- example programs using the divide_conquer skeleton function

Compiler version 1.9.1 (651 KB gzip'ed tar file)
New features in version 1.9:
- several bugs fixed
- Graphical trace file visualization with the trv tool
See here for examples of trace images (converted to .eps)
New features in update 1.9.1:
- trv tool produces images suitable for greyscale printers
- color version now available as trvc

The current version of the compiler package:

Compiler version 2.0 (beta2) (750 KB gzip'ed tar file)

First release Aug. 20, 1999, last updated Jan. 20, 2000.
Many new language features, like
- automatic group rank $$, group size #
- straight function synchronicity,
- improved type checking and casting
- deprecated old stuff removed (JOIN macro, async_groupsize)
- new macros for parallel loops
- several bugs fixed
- new string library functions: strcat, itoa
- fcc documentation updated

The Fork implementation is free. It comes with complete source code, examples, and documentation. We have extensively used this compiler for several years now, but, as with all complex software, there are probably some unknown bugs left; please report if you have found one.
Anyway, we assume no liability for any damage or problems that may occur when using this software.
For some components that we borrowed from other software packages (lcc 1.9 and some routines from the GNU C library, see comments in the source code) the corresponding copyright conditions apply.


This page by Christoph W. Kessler (chrke @ ida.liu.se)