In its current form pC++ is a very simple preprocessor that generates C++ code from the pC++ extensions to C++. Just as the original AT&TC++ system used a preprocessor called Cfront to translate C++ to C, pC++ can be considered a C++front, i.e. a translator from an extension of C++ down to C++. Consequently, to run pC++ programs you need a current implementation of C++ (AT&Tversion 3.0 or better, or g++ version 2.4.5 or better) running on, or cross compiling for, your target machine.
pC++ currently runs in uniprocessor mode on workstations from Sun, SGI, HP, NeXT, DEC and IBM. This allows one to partially debug parallel programs as uniprocessor tasks. Unfortunately, you get no special performance win from running parallel programs on these machines and there are parallel program bugs that may not be discovered during serial execution. On the other hand, if you have a Thinking Machines CM-5, Intel Paragon, Sequent Symmetry, BBN TC2000, or KSR-1, you can run pC++ programs that exploit parallelism. (The IBM SP1 port is nearly completed, and Cray T3D will be the next target.) More important, a pC++ program, if it has been designed with care, will run on all these machines without changing a line of code. In addition to sequential execution on workstations, there are two parallel simulators that pC++ programs will run on. These simulators allow one to emulate true parallel execution on a sequential machine. However, our experience indicates that once a program works with the sequential pC++ system on a workstation, it is an easy job to port it to the parallel platforms. And once it is running on one parallel machine, it simply requires recompilation to run on any of the other parallel platforms.
This brief document will outline some of the main points of the language and how to use it. We will also try to outline some of the problems you will encounter. This is an ``alpha'' version of free software and there are bound to be many many bugs. Version 1.0 will be followed very quickly by Version 2.0 which will have many more features. However, there are certain things to know in advance about the limitations of pC++. These include
In the future we hope to be able to mix modules of pC++ with code designed for these other systems, but that will not work right now.
In addition to the limitations to pC++ as a programming language and model, there are limitations of Version 1.0 that WILL BE FIXED in Version 2.0. These limitations are listed below.
In the following section we cover both the current alpha release, pC++ version 1.0 and the next release, pC++ version 2.0. We have included both in this document so users of version 1.0 can know what direction pC++ is going. We have indicated with each section header which version number that is required. The symbol Ver. 1.0+ means that this applied to the current version as well as future versions. The symbol Ver. 2.0 means that this is not implemented in version 1.0.