Capsule-oriented Programming
in the Panini Language
I Introduction
1 Overview
2 Motivation
2.1 Concurrency: A Pressing Need
2.2 Running Example
2.3 Difficult Concurrency-related Design Decisions
3 Getting Started
3.1 Panini’s Goals
3.2 Hello World!
3.3 Compiling and running Hello World!
3.4 Decomposing a Program into Capsules
3.5 Implicit Concurrency in Capsule-oriented Programs
4 Capsule-oriented Design
4.1 Asteroids in Panini
4.2 Architecture and Design
4.3 Implementation
4.4 Analysis of Benefits
4.5 Compiling and running Asteroids!
II Panini Language and its Features
5 Capsule Declarations
5.1 Syntax of Capsule Declaration
5.2 Capsule States
5.3 Capsule Initializer
5.4 Capsule Procedures
5.5 Autonomous Capsule Behavior
5.6 Capsule Procedure Calls
5.7 Shutdown and Exit Procedures
5.8 Example: Bank Account
5.9 Implicit concurrency
6 Design Declarations
6.1 Capsule Instance Declarations
6.2 Wiring Capsule Instances
6.3 Topology operators in design declarations
7 Signature Declarations
8 Capsule State Confinement
8.1 Confinement between Instances of a Capsule
8.2 Confinement Violation in Procedure Call
8.3 Confinement Violation in Return Statements
8.4 Resolving Confinement Violation
III Implicit Parallelism
9 Master-Worker Pattern
9.1 Computing the constant Pi
9.2 Architecture and design
9.3 Implementation
9.4 Implicit concurrency
10 Leader-Follower Pattern
10.1 Creating Server/Client applications in Panini
10.2 Architecture and design
10.3 Implementation
10.4 Implicit concurrency
11 Pipeline Pattern
11.1 Overview of pipeline parallelism implementation
11.2 Architecture and design
11.3 Implementation
11.4 Implicit concurrency
12 Distributor Pattern
IV Appendix
13 Installing and Running the Panini Compiler
13.1 Downloading the Compiler
13.2 Structure of Panini Distribution
13.3 Requirements for Running Panini Compiler
13.4 Running the Panini Compiler
13.5 Running the Panini Compiler from the command-line
13.6 Compiling Examples from Command-Line
13.7 Running the Panini Compiler from Within Ant
13.8 Translating Panini into Java
13.9 Acknowledgments and Licensing
14 Profiling Panini Programs
14.1 Using Panini Profiler
14.2 Configuring Panini Profiler
15 FAQs
15.1 FAQs about the Language
15.2 FAQs about the Compiler
Bibliography
Bibliography