THE ZPL APPROACH
ZPL is a parallel programming language developed at the University of Washington.
Designed from first principles, it is unique in providing a mostly p-independent semantics
alongside syntactically identifiable communication. This chapter presents a brief introduc-
tion to ZPL and provides a basis for the extensions described in later chapters; For more
information on ZPL, the reader is referred to the literature [AGNS90, AGL+98, AS91,
CCL+96, CCS97, CCL+98a, CLS98, CCL+98b, CLS99a, CLS99b, CDS00, CCL+00, CS01,
Cha01, CCDS04, CS97, Cho99, CD02, DCS01, DCS02, DCCS03, Dei03, DCS04, DLMW95,
GHNS90, LLST95, LLS98, LS00, Lew01, LS90, LS91, Lin92, LW93, LS93, LS94a, LS94b,
LSA+95, NS92, NSC97, Ngo97, RBS96, Sny86, Sny94, Sny95, Sny99, Sny01, Wea99].
Throughout this chapter, changes to ZPL from the literature will be noted. In addition,
how the current implementation differs from the features described will be noted. Lastly, it
will be noted periodically that the base of ZPL is mostly p-independent.
2.1 ZPL's Parallel Programming Model
ZPL holds to a simple parallel programming model in which data is either replicated or
distributed. In both cases, there is logically one copy of any given data object; replicated
data is kept consistent via an implicit consistency guarantee brought to fruition by an array
of static typechecking rules.