Piccola

Piccola is a small, pure language for building applications from software components. Piccola is small in the sense that its syntax is tiny, and it is pure in the sense that it provides only compositional features — computation is performed entirely by components of the host programming language. The semantics of Piccola is defined in terms of a process calculus, an extension of Milner's pi calculus in which values communicated are forms, rather than tuples. A "form" is essentially an extensible nested record which also serves as a namespace in which expressions may be evaluated. This simple mechanism is responsible for much of the expressive power of Piccola.

jpiccola.png

Downloads

There currently exist two experimental implementations of Piccola: JPiccola is used to compose Java components, and SPiccola can compose components written in Squeak.

JPiccola:

SPiccola:

Please be aware that the syntax of Piccola has evolved over time. The current download implements the Piccola 3 syntax. Older papers may use Piccola 2 or Piccola 1 syntax.

Publications

For a brief introduction to Piccola, see the paper Applications = Components + Scripts — A tour of Piccola" (This paper uses the Piccola 2 syntax.) For a more thorough and up-to-date overview, see the JPiccola Guide (included in the JPiccola distribution).

There are several PhD theses, Diploma theses and Student projects on Piccola.

The semantics of Piccola are described in the PhD thesis of Franz Achermann, Forms, Agents and Channels — Defining Composition Abstraction with Style. Much of the motivation for introducing forms is explained in the paper, Explicit Namespaces.