category: concurrent, parellel, and simulation languages


Description:
This is a fairly broad category of languages. Most of the implementations in this set are not good enough to be used in production systems. Some are. In addition to those listed below, see:


Language:
ABCL/1 (An object-Based Concurrent Language)
Package:
ABCL/1
Version:
?
Parts:
?
Author:
Akinori Yonezawa, ABCL Group now at Department of Information Science, the University of Tokyo
Location:
ftp://camille.is.s.u-tokyo.ac.jp/pub/abcl1/*
Description:
Asynchronous message passing to objects.
Reference:
"ABCL: An Object-Oriented Concurrent System", Edited by Akinori Yonezawa, The MIT Press, 1990, (ISBN 0-262-24029-7)
Restriction:
no commercial use, must return license agreement
Requires:
Common Lisp
Contact:
abcl@is.s.u-tokyo.ac.jp
Updated:
May 23rd, 1990

Language:
ABCL ???
Package:
ABCL/R2
Version:
?
Parts:
?
Author:
masuhara@is.s.u-tokyo.ac.jp, matsu@is.s.u-tokyo.ac.jp, takuo@is.s.u-tokyo.ac.jp, yonezawa@is.s.u-tokyo.ac.jp
Location:
ftp://camille.is.s.u-tokyo.ac.jp/pub/abclr2/*
Description:
ABCL/R2 is an object-oriented concurrent reflective language based on Hybrid Group Architecture. As a reflective language, an ABCL/R2 program can dynamically control its own behavior, such as scheduling policy, from within user-program. An an object-oriented concurrent language, this system has almost all functions of ABCL/1.
Requires:
Common Lisp
Updated:
January 28th, 1993

Language:
ALLOY
Package:
ALLOY
Version:
2.0?
Parts:
interpreter, documentation, examples
Author:
Thanasis Mitsolides <mitsolid@cs.nyu.edu>
Location:
ftp://cs.nyu.edu/pub/local/alloy/*
Description:
ALLOY is a higher level parallel programming language appropriate for programming massively parallel computing systems. It is based on a combination of ideas from functional, object oriented and logic programming languages. The result is a language that can directly support functional, object oriented and logic programming styles in a unified and controlled framework. Evaluating modes support serial or parallel execution, eager or lazy evaluation, non-determinism or multiple solutions etc. ALLOY is simple as it only requires 29 primitives in all (half of which for Object Oriented Programming support).
Ports:
sparc, ?
Updated:
June 11th, 1991

Language:
Cellang (Cellular Automata)
Package:
Cellular
Version:
2.0
Parts:
byte-code compiler, runtime, viewer
Author:
J Dana Eckart <dana@rucs.faculty.cs.runet.edu>
Location:
comp.sources.unix, volume 26
Description:
A system for cellular automata programming.
Updated:
April 3rd, 1993

Language:
Simula 67
Package:
cim
Version:
1.62
Parts:
compiler(->C)
Author:
Sverre Hvammen Johansen <sj@ifi.uio.no> Stein Krogdahl <steink@ifi.uio.no> Terje Mjoes.
Location:
ftp://sunsite.unc.edu/pub/Linux/devel/simula/cim-1.??.tar.gz
europe:
ftp://ftp.ifi.uio.no/pub/cim/cim-1.??.tar.gz ftp://ftp.fenk.wau.nl/pub/lang/simula/compilers/cim/cim-1.??.tar.gz
Description:
A compiler that translates Simula to C, for further compilation.
Conformance:
Does not include unspecified virtual procedures.
Reference:
"Viderefoering og testing av et portabelt Simula-system." Hovedoppgave til cand.scient.-graden av Terje Mjoes. Institutt for informatikk, Universitetet i Oslo, April 1989.

"Et portabelt Simula-system bygget paa C." Hovedoppgave til cand.scient-graden av Sverre Johansen. Institutt for informatikk, Universitetet i Oslo, Mai 1987.

Bugs:
Constant must be declared before reference/use.
Restriction:
See bugs and conformance.
Requires:
A C compiler.
Ports:
Numerous.
Portability:
Any UNIX system. (Uses GNU AutoConf.)
Status:
Maintained by Sverre Johansen.
Help:
E-mail: cim@ifi.uio.no
Contact:
E-mail: cim@ifi.uio.no
Updated:
March 20th, 1995.

Language:
Concurrent ML
Package:
Concurrent ML
Version:
0.9.8
Parts:
extension
Author:
?
Location:
ftp://ftp.cs.cornell.edu/pub/CML* or get SML/NJ
Description:
Concurrent ML is a concurrent extension of SML/NJ, supporting dynamic thread creation, synchronous message passing on synchronous channels, and first-class synchronous operations. First-class synchronous operations allow users to tailor their synchronization abstractions for their application. CML also supports both stream I/O and low-level I/O in an integrated fashion.
Bugs:
sml-bugs@research.att.com
Requires:
SML/NJ 0.75 (or later)
Updated:
Febuary 18th, 1993

Language:
OCCAM 2 (A parallel, concurrent, distributed language)
Package:
D7202-oc / TDS
Version:
?
Parts:
compiler & full toolset system
Author:
INMOS Ltd.
Location:
ftp://unix.hensa.ac.uk/pub/parallel/occam/compilers/inmos http://www.hensa.ac.uk/parallel/occam/compilers/inmos/index.html
Description:
An old version of the INMOS OCCAM compiler & toolset, made freely avaiable by INMOS Ltd. OCCAM is a language for designed to express concurrent algorithms and their implementation on a network of processing components.
Conformance:
The original implementation of OCCAM 2
Reference:
"OCCAM 2 reference manual", INMOS ltd, Prentice-Hall International, ISBN 0-13-629312-3
Features:
produces object code for the INMOS transputer (but see KROC entry)
Restriction:
Research purposes only. NO support will be provided by INMOS Ltd.
Requires:
C & occam compiler (Sun4, PC, & Transputer binaries available)
Ports:
Sun3, Sun4, PC, INMOS transputer. (Most UNIXes?)
Portability:
produces object code for the INMOS transputer (but see KROC entry)
Status:
Not developed, UNSUPPORTED.
Discussion:
comp.sys.transputer
Contact:
Dave Beckett <djb1@ukc.ac.uk>
Updated:
1-Mar-94

Language:
EuLisp
Package:
Feel (Free and Eventually Eulisp)
Version:
0.75
Parts:
interpreter, documentation
Author:
Pete Broadbery <pab@maths.bath.ac.uk>
Location:
ftp://ftp.bath.ac.uk/pub/eulisp
Description:
  • integrated object system
  • a module system
  • parallelism
  • interfaces to PVM library, tcp/ip sockets, futures, Linda, and CSP.
Ports:
most unix
Portability:
high, but can use shared memory and threads if available
Updated:
September 14th, 1992

Language:
UNITY
Package:
HOL-UNITY
Version:
2.1
Parts:
verification tool
Author:
?
Location:
?
Description:
?
Contact:
Flemming Andersen <fa@tfl.dk> ?
Updated:
?

Language:
Hermes
Package:
IBM Watson prototype Hermes system
Version:
0.8alpha patchlevel 01
Parts:
bytecode compiler, compiler(bytecode->C), runtime
Author:
Andy Lowry <lowry@watson.ibm.com>
Location:
ftp://software.watson.ibm.com/pub/hermes/README
Description:
Hermes is a very-high-level integrated language and system for implementation of large systems and distributed applications, as well as for general-purpose programming. It is an imperative, strongly typed, process-oriented language. Hermes hides distribution and heterogeneity from the programmer. The programmer sees a single abstract machine containing processes that communicate using calls or sends. The compiler, not the programmer, deals with the complexity of data structure layout, local and remote communication, and interaction with the operating system. As a result, Hermes programs are portable and easy to write. Because the programming paradigm is simple and high level, there are many opportunities for optimization which are not present in languages which give the programmer more direct control over the machine.
Reference:
Strom, Bacon, Goldberg, Lowry, Yellin, Yemini. Hermes: A Language for Distributed Computing. Prentice-Hall, Englewood Cliffs, NJ. 1991. ISBN: O-13-389537-8.
Ports:
RS6000 Sun-4 NeXT IBM-RT/bsd4.3 (Sun-3 and Convex soon)
Discussion:
comp.lang.hermes
Updated:
March 22nd, 1992

Language:
ICC++ (Illinois Concert C++) and CA (Concurrent Aggregates)
Package:
Illinois Concert System
Version:
3.0
Parts:
compiler(->C++), interpreter, symbolic debugger, parallel runtime simulator, parallel implementation on TMC CM5, Cray T3D
Author:
Various, concert@red-herring.cs.uiuc.edu
Location:
http://www-csag.cs.uiuc.edu/projects/concert.html
Description:
The Concert System incorporates global analysis for parallel object-oriented languages, including aggressive concrete type inference. In addition, it include an extremely lightweight communication and threading library (compiler-supported). The implementation supports both a parallel C++ and a simple parallel object-oriented language called Concurrent aggregates.
Conformance:
ICC++ and CA documentation available from the web site.
Reference:
Andrew Chien, et. al. The Concert System -- Compiler and Runtime Support for Efficient Fine-Grained Concurrent Object-Oriented Programs, Department of Computer Science, University of Illinois, Urbana, Illinois, Technical Report UIUCDCS-R-93-1815, June 1993.

(Others are available also)

Bugs:
concert@red-herring.cs.uiuc.edu
Restriction:
redistribution is restricted
Announcements:
where new releases are announced
Contact:
Andrew Chien achien@cs.uiuc.edu
Updated:
May 7th, 1995 Version 3.0

Language:
OCCAM 2 (A parallel, concurrent, distributed language)
Package:
KROC (Kent Retargetable Occam Compiler)
Version:
0.1 Beta
Parts:
compiler, run-time kernel, documentation
Author:
David Wood, Professor Peter Welch
Location:
ftp://unix.hensa.ac.uk/pub/parallel/occam/projects/occam-for-all/kroc http://www.hensa.ac.uk/parallel/occam/projects/occam-for-all/kroc/
Description:
KROC is a portable OCCAM compiler system that enables OCCAM to run on non-transputer platforms (initially SunOS/SPARC(TM) workstations). KROC works by translating code produced by an INMOS OCCAM Toolset compiler into the native assembler for the target architecture and linking in a small (< 2K bytes) kernel that provides the process scheduling and message-passing functionality of the transputer micro-code. Therefore, you will need an OCCAM Toolset compiler (see requires:).
Features:
  • -initialy available as Sun4 (SunOS) binary.
  • A source release will follow.
Reference:
"OCCAM 2 reference manual", INMOS ltd, Prentice-Hall International, ISBN 0-13-629312-3

"Transputer Instruction Set - A Compiler Writers Guide", INMOS Ltd, Prentice-Hall, ISBN 0-13-929100-8

Restriction:
?
Requires:
INMOS OCCAM compiler D7202 from: ftp://unix.hensa.ac.uk/pub/parallel/occam/compilers/inmos/oc
Ports:
Sun4 (DEC Alpha and Motorola PowerPC to follow)
Portability:
Sparc processor only at present
Status:
actively developed, supported
Discussion:
comp.sys.transputer, <ofa-com-request@ukc.ac.uk>
Contact:
Occam For All Team <ofa-bugs@ukc.ac.uk>
Updated:
4-May-1995

Language:
LOOPN
Package:
LOOPN
Version:
?
Parts:
compiler?, simulator
Author:
?
Location:
ftp://ftp.utas.edu.au/departments/computer_sci*/loopn.tar.Z
Description:
I wish to announce the availability of a compiler, simulator and associated source control for an object-oriented petri net language called LOOPN. In LOOPN, a petri net is an extension of coloured timed petri nets. The extension means firstly that token types are classes. In other words, they consist of both data fields and functions, they can be declared by inheriting from other token types, and they can be used polymorphically. The object-oriented extensions also mean that module or subnet types are classes. LOOPN has been developed over a period of about 5 years at the University of Tasmania, where it has been used in teaching computer simulation and the modelling of network protocols. A petri net is a directed, bipartite graph; nodes are either places (represented by circles) or transitions (represented by rectangles). A net is marked by placing tokens on places. When all the places pointing to a transition (the input places) have a token, the net may be fired by removing a token from each input place and adding a token to each place pointed to by the transition (the output places). Petri nets are used to model concurrent systems, particularly in the network protocol area.
Contact:
Charles Lakos <charles@probitas.cs.utas.edu.au>
Updated:
December 20th, 1992

Language:
Simula
Package:
Lund Simula
Version:
4.07
Parts:
?
Author:
?
Location:
ftp://rascal.ics.utexas.edu/misc/mac/programming/+_Simula/*
Description:
?
Contact:
Lund Software House AB / Box 7056 / S-22007 Lund, Sweden
Updated:
May 22nd, 1992

Language:
Maisie
Package:
Maisie
Version:
2.1
Parts:
?, user manual, examples
Author:
Wen-Toh Liao <wentoh@may.CS.UCLA.EDU>
Location:
ftp://cs.ucla.edu/pub/maisie.2.1.1.3.tar.Z
Description:
C-based parallel programming language that uses asynchronous typed-message passing and supports light-weight processes. The language is C with enhancements to allow processes to be defined, created, and destroyed, to send and receive messages, and manipulate the system clock.
Ports:
PVM/3.1, Cosmic Environment, and SUN Sockets.
Updated:
June 14th, 1993

Language:
UNITY
Package:
MasPar Unity
Version:
1.0
Parts:
translator(UNITY->MPL), documentation
Author:
Martin Huber, University of Karlsruhe, Germany
Location:
ftp://SanFrancisco.ira.uka.de/pub/maspar/maspar_unity*
Description:
?
Contact:
Lutz Prechelt <prechelt@ira.uka.de>
Updated:
?

Language:
MeldC (MELD, C)
Package:
MeldC
Version:
2.0
Parts:
microkernel, compiler, debugger, manual, examples
Author:
MELD Project, Programming Systems Laboratory at Columbia University
Location:
obtain license from <MeldC@cs.columbia.edu>
Description:
MeldC 2.0: A Reflective Object-Oriented Coordination Programming Language MELDC is a C-based, concurrent, object-oriented language built on a reflective architecture. The core of the architecture is a micro-kernel (the MELDC kernel), which encapsulates a minimum set of entities that cannot be modeled as objects. All components outside of the kernel are implemented as objects in MELDC itself and are modularized in the MELDC libraries. MELDC is reflective in three dimensions: structural, computational and architectural. The structural reflection indicates that classes and meta-classes are objects, which are written in MELDC. The computational reflection means that object behaviors can be computed and extended at runtime. The architectural reflection indicates that new features/properties (e.g., persistency and remoteness) can be constructed in MELDC.
Restriction:
must sign license, cannot use for commercial purposes
Ports:
Sun4/SunOS4.1 Mips/Ultrix4.2
Contact:
<MeldC@cs.columbia.edu>
Updated:
December 15th, 1992

Language:
Tcl
Package:
MTtcl - Multi-threaded Tcl
Version:
0.9
Parts:
interpreter, library
Location:
ftp://ftp.csua.berkeley.edu/pub/mttcl/MTtcl0.9.tar.gz
Description:
The MTtcl package gives Tcl/Tk programmers access to the multi-threading features of Solaris 2. The package comes in two parts; a modified version of Tcl 7.4, and a Tcl threads extension.

Modifications were necessary to enable Tcl to work "safely" in the presence of multiple threads. The Tcl interpretter uses a number of static and global variables to execute scripts. If two threads are using the same global, the behavior of the script may be unpredictable. This "safe" Tcl is called MT-Sturdy Tcl.

The threads extension brings multi-thread programming into the Tcl environment. Multiple scripts can be interpretted simultaneously with communication and synchronization between scripts. There is special support for using threads in Tk scripts. Documentation for the threads commands are in the form of man pages.

Requires:
Sparc, Solaris 2.3, Sparcworks 3.0 C compiler, Tcl 7.4, Tk 4.0
Ports:
Sparc Solaris 2.3
Updated:
November 2nd, 1994

Language:
Parallaxis
Package:
parallaxis
Version:
Parallaxis-III
Parts:
?,debugger, viz tools, simulator, x-based profiler
Author:
Thomas Braunl <braunl@informatik.uni-stuttgart.de>
Location:
ftp://ftp.informatik.uni-stuttgart.de/pub/p3 http://www.informatik.uni-stuttgart.de/ipvr/bv/p3
Description:
Parallaxis is a procedural programming language based on Modula-2, but extended for data parallel (SIMD) programming. The main approach for machine independent parallel programming is to include a description of the virtual parallel machine with each parallel algorithm.
Ports:
MP-1, CM-2, Sun-3, Sun-4, DECstation, HP 700, RS/6000
Contact:
? Thomas Braunl <braunl@informatik.uni-stuttgart.de> ?
Updated:
October 23rd, 1992

Language:
PCN
Package:
PCN
Version:
2.0
Parts:
compiler?, runtime, linker, libraries, tools, debugger, profiler, tracer
Author:
Ian Foster <foster@mcs.anl.gov>, Steve Tuecke <tuecke@mcs.anl.gov>, and others
Location:
ftp://info.mcs.anl.gov/pub/pcn/pcn_v2.0.tar.Z
Description:
PCN is a parallel programming system designed to improve the productivity of scientists and engineers using parallel computers. It provides a simple language for specifying concurrent algorithms, interfaces to Fortran and C, a portable toolkit that allows applications to be developed on a workstation or small parallel computer and run unchanged on supercomputers, and integrated debugging and performance analysis tools. PCN was developed at Argonne National Laboratory and the California Institute of Technology. It has been used to develop a wide variety of applications, in areas such as climate modeling, fluid dynamics, computational biology, chemistry, and circuit simulation.
Ports:
(workstation nets): Sun4, NeXT, RS/6000, SGI (multicomputers): iPSC/860, Touchstone DELTA (shared memory multiprocessors): Symmetry/Dynix
Contact:
<pcn@mcs.anl.gov>
Updated:
Febuary 12th, 1993

Language:
pm2
Package:
PRAM emulator and parallel modula-2 compiler ??
Version:
?
Parts:
compiler, emulator
Author:
?
Location:
ftp://cs.joensuu.fi/pub/pram/*
Description:
A software emulator for parallel random access machine (PRAM) and a parallel modula-2 compiler for the emulator. A PRAM consists of P processors, an unbounded shared memory, and a common clock. Each processor is a random access machine (RAM) consisting of R registers, a program counter, and a read-only signature register. Each RAM has an identical program, but the RAMs can branch to different parts of the program. The RAMs execute the program synchronously one instruction in one clock cycle.

pm2 programming language is Modula-2/Pascal mixture having extensions for parallel execution in a PRAM. Parallelism is expressed by pardo-loop- structure. Additional features include privat/shared variables, two synchronization strategies, load balancing and parallel dynamic memory allocation.

Contact:
Simo Juvaste <sjuva@cs.joensuu.fi>
Updated:
Febuary 17th, 1993

Language:
OCCAM 2 (A parallel, concurrent, distributed language)
Package:
SPOC (Southampton Portable Occam Compiler)
Version:
1.1
Parts:
compiler(->C), run-time system, documentation, tools, examples
Author:
Denis Nicole <dan@ecs.soton.ac.uk>, Sean Wykes <smw@ecs.soton.ac.uk>, Mark Debbage <md@pact.srf.ac.uk>, Mark Hill <mbh@pact.srf.ac.uk>
Location:
ftp://ftp.ecs.soton.ac.uk/pub/occam/spoc1.1 ftp://unix.hensa.ac.uk/pub/parallel/occam/compilers/spoc http://www.hensa.ac.uk/parallel/occam/compilers/spoc/index.html
Description:
supports the OCCAM 2 programming language.
Conformance:
Full implementation of OCCAM 2
Reference:
"OCCAM 2 reference manual", INMOS ltd, Prentice-Hall International, ISBN 0-13-629312-3
Features:
The system generates ANSI-C code, implementing efficient portable concurrency running on a single target processor. Supports cross-linking with NAG Fortran-90 compiler.
Restriction:
GPL'ed
Requires:
C compiler, gmd compiler tools (available with compiler sources) (Sun4 binaries available)
Ports:
Sun3, Sun4
Portability:
? Should work on most UNIXes
Status:
actively developed, supported
Discussion:
comp.sys.transputer
Contact:
Dr Denis A Nicole <dan@ecs.soton.ac.uk>
Updated:
1-March-1994

Language:
SR (Synchronizing Resources)
Package:
sr
Version:
2.0
Parts:
?, documentation, tests
Author:
?
Location:
ftp://cs.arizona.edu/sr/sr.tar.Z
Description:
SR is a language for writing concurrent programs.

The main language constructs are resources and operations. Resources encapsulate processes and variables they share; operations provide the primary mechanism for process interaction. SR provides a novel integration of the mechanisms for invoking and servicing operations. Consequently, all of local and remote procedure call, rendezvous, message passing, dynamic process creation, multicast, and semaphores are supported.

Reference:
"The SR Programming Language: Concurrency in Practice", by Gregory R. Andrews and Ronald A. Olsson, Benjamin/Cummings Publishing Company, 1993, ISBN 0-8053-0088-0
Ports:
Sun-4, Sun-3, Decstation, SGI Iris, HP PA, HP 9000/300, NeXT, Sequent Symmetry, DG AViiON, RS/6000, Multimax, Apollo, and others.
Discussion:
info-sr-request@cs.arizona.edu
Contact:
sr-project@cs.arizona.edu
Updated:
September 1st, 1992

Language:
Concurrent Clean
Package:
The Concurrent Clean System
Version:
1.3.1
Parts:
development environment, documentation, compiler(byte-code), compiler(native), interpreter(byte-code), examples
Author:
Research Group on Functional Languages, Research Institute for Declarative Systems, University of Nijmegen
Location:
http://www.cs.kun.nl/~clean/ http://www.stw.nl/projecten/N/nif3059.html
Description:
The Concurrent Clean system is a programming environment for the lazy functional language Concurrent Clean, developed at the University of Nijmegen, The Netherlands. The system is one of the fastest implementations of functional languages available at the moment. Its I/O libraries make it possible to do modern, yet purely functional I/O (including windows, menus, dialogs etc.). Concurrent Clean is now a commercial product but it is still free for non-commercial use.
  • lazy and purely functional
  • partial strict data types
  • strongly typed - based on Milner/Mycroft scheme
  • existential types
  • uniqueness types
  • type classes and type constructor classes
  • record types
  • module structure
  • modern I/O
  • programmer-infulenced evaluation order by annotations
  • parallel and distributed evaluation
Ports:
Macintosh, PowerMac (native), Sun-4, Linux, OS2
Contact:
clean@cs.kun.nl
Updated:
January 3rd, 1999

Language:
uC++
Package:
uC++
Version:
4.6
Parts:
translator (uC++ to C++), concurrency library, documentation, examples
Author:
Peter A. Buhr <pabuhr@uwaterloo.ca>
Location:
ftp://plg.uwaterloo.ca/pub/uSystem/u++-4.4.tar.gz
Description:
An extended C++ with light-weight concurrency for Unix-like systems. uC++ is pronounced "micro-C++".
Reference:
Software--Practice and Experience, 22(2):137-172, February 1992.
Features:
  1. true multiprocessor support on SUN, DEC, SGI, Sequent
  2. coroutine, monitor and task extensions to C++
  3. non-blocking I/O library
  4. mechanism to group tasks and virtual processors
  5. non-deterministic time slicing
Bugs:
LINUX non-blocking sockets fail
Requires:
dmake 4.0+ (ftp://plg.uwaterloo.ca/pub/dmake/dmake40.tar.gz ) GNU C++ 2.6.3+
Ports:
Sequent (BSD), SUN Solaris (SPARC) & SunOS (SPARC, M68K), DEC OSF 3.2+ (Alpha), SGI IRIX 5.3+ (MIPS), IBM AIX 3.2+ (RS/6000), HP HP-UX 9.03+ (PA), LINUX 1.2.13+/1.3.20+ (i386+)
Portability:
Needs "setitimer" and "sigcontext" from Unix-like systems.
Updated:
September 14th, 1995

This work supported by Idiom Consulting. Idiom is a full-service ISP, providing Internet access in Northern California and Web hosting worldwide.

Please send updates to free-compilers@idiom.com

The HTML is maintained by David Muir Sharnoff and the entries themselves are currently maintained by Bryan Miller.

Copyright (c) 1992-1998 David Muir Sharnoff, All Rights Reserved
Copyright (c) 1994-1996, Steven Allen Robenalt, All Rights Reserved