Path Pascal Release 0.9

grunwald at uiucdcsb.UUCP grunwald at uiucdcsb.UUCP
Wed Jan 30 04:33:00 AEST 1985


[Duplicate postings in: net.lang, net.unix, net.lang.pascal]

                  Path Pascal Release 0.9



     An initia release of the Portable  Path  Pascal  com-
piler  is  available for distribution to all UNIX sites run-
ning 4.x BSD/VAX systems. The compiler is  an  extension  of
the  Berkeley  Pascal  Compiler 'pc' and produces native VAX
code. In addition to the standard Pascal features, Path Pas-
cal  features  processes,  objects  (an  abstract  data type
facility), synchronization via Path Expressions and a 'simu-
lated  time'  notion  suitable  for systems simulation. Path
Pascal is used at UIUC for simulation of concurrent systems,
both at an instructional and a research level.

Processes

     Processes provide multiple control flows within a  sin-
gle  Path  Pascal  program.   Process notation is similar to
that for procedures, and calling a process is  syntactically
equivalent  to  calling a procedure. Processes may be nested
within other code bodies and communicate  through  synchron-
ized  data  structures call 'objects'. Processes size may be
specified on a per-process basis and there is  no  limit  on
the  number of processes other than memory size. Simulations
of network  voting  methods  running  with  over  a  hundred
processes  have been performed.  Processes are dynamic mean-
ing that multiple instances  of  the  same  process  may  be
created simply by calling the process multiple times.

Objects

     Objects  provide  a  data  encapsulation  notation.  An
object is a set of data declarations grouped with operations
on those data. Access to the data is only possible using the
defined  entry points, provided the desired access meets the
restrictions imposed by the Path Expression for the  object.
Objects  represent a new 'type' construct similar to records
and may be separately compiled, promoting sharing of  common
abstractions.

Path Expressions

     Path Expressions provide a regular language description
of  allowed  concurrent  access  to  entry  points within an
object. Sequencing, resource restriction  and  derestriction
are  defined  in  a notation which is directly translated to
semaphore P and V operations. These semaphore operations are
executed  in  the pre- and post-amble of entry points within
objects. An example path specification for a  bounded-buffer
reader-writer protocol is:

                 path 100:(write;read) end;


This stipulates that no more than 100 pairs of  'write;read'
sequences  may  be going on at once at that each 'read' must
be preceded by a 'write'.  If an operation is  not  allowed
by  a Path Expression, the process requesting that operation
blocks until it is allowed.

Simulated Time

     Processes may 'delay' a certain number of  time  units,
or  they  may  'await'  some  future  time.  The  'pc'  call
'wallclock' has been changed to return  the  current  'simu-
lated  time' as opposed to real time. This provides a global
clock suitable for systems simulation. In  future  releases,
using  simulated  or real time will be a run-time specifica-
tion.

The System

     The compiler uses a modified front-end of the  Berkeley
PC compiler, generating code which the local Portable C Com-
piler translates to native assembly code.  It is possible to
call  routines  written  in  C  and  F77.  The language is a
super-set of Berkeley Pascal. In addition  to  the  compiler
itself,  a  runtime  library and a debugging tool to anaylse
core dumps is included.  This version has  been  in  use  at
UIUC  as  a  simulation language for distributed voting sys-
tems, ethernet load simulation, processor simulation and the
like  for  several  months.  An older compiler has been used
extensively in Operating Systems classes  to  simulate  con-
cepts such as process scheduling, file systems an so on.

Future Extensions

     We intend to extend the language to a distributed  pro-
gramming  language, modeled around a previous implementation
[Distributed Path Pascal], using the  SMI  RPC  protocol.  A
version  of  the  compiler running on the Sun workstation is
currently being constructed and should be available shortly.
Other  directions  will  also  be pursued as dictated by our
supporting grant.

Availability

     The system is available free of  charge  by  sending  a
1600  BPI  tape  to the address below. The source is roughly
900Kb, with final binaries being about 300Kb. Proof of a 4.x
BSD license is required, as this work is built on top of the
Berkeley Pascal compiler. The license should clearly specify
if  it is a source or a binary license.  Sites which contact
us will be informed of future releases and bug fixes to  the
best of our abilities.  The address for tapes is:

                    Dr. Roy Campbell
                    199 Digital Computer Lab
                    University of Illinois
                    1304 W. Springfield
                    Urbana, Illinois 61801

All contacts for detailed information  concerning  the  com-
piler,  licensing,  sample  programs,  documentation and the
like should be addressed to:

                    Dirk Grunwald
                    222 Digital Computer Lab
                    University of Illinois
                    1304 W. Springfield
                    Urbana, Illinois 61801

                    (217) 333-7937

                    {pur-ee, ihnp4} ! uiucdcs ! grunwald
                    grunwald at uiuc.csnet     grunwald at uiuc.arpa

This work was supported in part under  NASA  grant  NSG1471,
administered  by Dr. Roy Campbell at the University of Illi-
nois.



More information about the Comp.unix mailing list