Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
Panini: Reconciling Concurrency and Modularity in Software Design
[go: Go Back, main page]

Department of Computer Science

Laboratory for Software Design

Panini: Reconciling Concurrency and Modularity in Program Design


These pages describe work carried out on the Panini project, whose goals are to reconcile modularity and concurrency. The work is carried out by Hridesh Rajan and his students: Yuheng Long, Sean Mooney, Tyler Sondag, and collaborator Steve Kautz. This work is supported in part by the NSF grant CCF-08-46059.

News

May 2010: Version 0.1.1 of the concurrent design pattern framework is now available here.

Mar 2010: Our first report on Panini is now available here.

Sep 2009: Panini development started at SourceForge.

What is Panini?

Panini is an implicitly concurrent object-oriented programming language. The main motto of Panini's design is that if programmers structure their system to improve modularity in its design, they should get concurrency for free. Panini's features are useful towards exploiting fine-grained concurrency in object-oriented programs.

For a detailed introduction to Panini's design with examples please our discussion of the motivation behind Panini's design.

As part of the Panini project, we have also developed concurrency-enhanced versions of the Gang-of-Four design patterns. For more description of these patterns and preliminary download of our pattern framework please see our pages on this topic here.

Design goals

Panini has the following main design goals.

  1. Improve a software engineer's ability to separate conceptual concern and improve modularity,
  2. reconcile the concurrency and modularity goals in software design, and
  3. provide a simple and flexible implicit concurrency model such that all Panini programs are
    • free of data races,
    • free of deadlocks, and
    • have a guaranteed sequential semantics.
A more detailed description of these goals and how Panini achieves them can found in our technical report.

Getting Started with the Panini Language

The Panini compiler offers support for compiling and running programs from command-line as well as from within Ant. To get started with setting up an environment for running Panini programs please see our page on installing and running the compiler.

Once you have downloaded and installed the compiler, you could look at the examples included in the distribution. Or alternatively, you could also consult our web-pages on getting started with Panini.


References
  1. T. Ekman and G. Hedin. The JastAdd Extensible Java Compiler. In OOPSLA, pages 1-18, 2007.
  2. D. Lea. A Java Fork/Join Framework. In Java Grande Conference, pages 36-43, 2000.