Abstract
Writing correct and efficient concurrent programs still remains a challenge. Explicit concurrency is difficult, error prone, and creates code which is hard to maintain and debug. This type of concurrency also treats modular program design and concurrency as separate goals, where modularity often suffers. To solve these problems, we are designing a new language that we call Panini. In this paper, we focus on Panini's asynchronous, typed events which reconcile the modularity goal promoted by the implicit invocation design style with the concurrency goal of exposing potential concurrency between the execution of subjects and observers.
Since modularity is improved and concurrency is implicit in Panini, programs are easier to reason about and maintain. The language incorporates a static analysis to determine potential conflicts between handlers and a dynamic analysis which uses the conflict information to determine a safe order for handler invocation. This mechanism avoids races and deadlocks entirely, yielding programs with a guaranteed deterministic semantics. To evaluate our language design and implementation we show several examples of its usage as well as an empirical study of program performance. We found that not only is developing and understanding Panini programs significantly easier compared to standard concurrent object-oriented programs, butt also performance of Panini programs is comparable to their equivalent hand-tuned versions written using Java's fork-join framework.
- }}P. America. Issues in the design of a parallel object-oriented language. Formal Aspects of Computing, 1(4):366--411, 1989. Google Scholar
Cross Ref
- }}D. Ansaloni, W. Binder, A. Villazon, and P. Moret. Parallel dynamic analysis on multicores with aspect-oriented programming. In AOSD, pages 1--12, 2010. Google Scholar
Digital Library
- }}J. Armstrong, R. Williams, M. Virding, and C. Wikstroem. Concurrent Programming in ERLANG. Prentice-Hal, 1996. Google Scholar
Digital Library
- }}N. Benton, L. Cardelli, and C. Fournet. Modern concurrency abstractions for C\#. ACM Trans. Program. Lang. Syst., 26(5):769--804, 2004. Google Scholar
Digital Library
- }}E. D. Berger, T. Yang, T. Liu, and G. Novark. Grace: safe multithreaded programming for C/CGoogle Scholar
- }}. In the conference on Object oriented programming systems languages and applications (OOPSLA), pages 81--96, 2009.Google Scholar
- }}R. D. Blumofe, C. F. Joerg, B. C. Kuszmaul, C. E. Leiserson, K. H. Randall, and Y. Zhou. Cilk: an efficient multithreaded runtime system. In PPOPP, pages 207--216, 1995. Google Scholar
Digital Library
- }}R. Cunningham and E. Kohler. Making events less slippery with eel. In Conference on Hot Topics in Operating Systems, Berkeley, CA, USA, 2005. Google Scholar
Digital Library
- }}David C. Luckham ηl. Specification and Analysis of System Architecture Using Rapide. IEEE Transactions on Software Engineering, 21(4):336--54, 1995. Google Scholar
Digital Library
- }}T. Ekman and G. Hedin. The JastAdd Extensible Java Compiler. In OOPSLA, pages 1--18, 2007. Google Scholar
Digital Library
- }}P. Eugster. Type-Based Publish/Subscribe: Concepts and Experiences. ACM Trans. Program. Lang. Syst., 29(1):6, 2007. Google Scholar
Digital Library
- }}P. Eugster and K. R. Jayaram. EventJava: An Extension of Java for Event Correlation. In ECOOP, pages 570--584, 2009. Google Scholar
Digital Library
- }}P. T. Eugster, R. Guerraoui, and C. H. Damm. On Objects and Events. In OOPSLA, pages 254--269, 2001. Google Scholar
Digital Library
- }}J. Fischer, R. Majumdar, and T. Millstein. Tasks: language support for event-driven programming. In PEPM, pages 134--143, 2007. Google Scholar
Digital Library
- }}E. Gamma, R. Helm, R. Johnson, and J. Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley Longman Publishing Co., Inc., 1995. Google Scholar
Digital Library
- }}C. A. Glasbey. An analysis of histogram-based thresholding algorithms. CVGIP: Graphical Models and Image Processing, 55(6):532 -- 537, 1993. Google Scholar
Digital Library
- }}J. Gosling, B. Joy, and G. L. Steele. The Java Language Specification. Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA, 1996. Google Scholar
Digital Library
- }}Image Processing and Analysis in Java. ImageJ. http://rsbweb.nih.gov/ij/.Google Scholar
- }}M. Krohn, E. Kohler, and M. F. Kaashoek. Events can make sense. In USENIX, 2007. Google Scholar
Digital Library
- }}L. Lamport. Time, Clocks, and the Ordering of Events in a Distributed System. Commun. ACM, 21(7):558--565, 1978. Google Scholar
Digital Library
- }}D. Lea. Concurrent Programming in Java. Second Edition: Design Principles and Patterns. Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA, 1999. Google Scholar
Digital Library
- }}D. Lea. A Java Fork/Join Framework. In Java Grande, pages 36--43, 2000. Google Scholar
Digital Library
- }}D. Leijen, W. Schulte, and S. Burckhardt. The design of a task parallel library. In the conference on Object oriented programming systems languages and applications (OOPSLA), pages 227--242, 2009. Google Scholar
Digital Library
- }}P. Li and S. Zdancewic. Combining events and threads for scalable network services implementation and evaluation of monadic, application-level concurrency primitives. In PLDI, pages 189--199, 2007. Google Scholar
Digital Library
- }}Y. Long, S. Mooney, T. Sondag, and H. Rajan. \panini: Separation of Concerns Meets Concurrency. Technical Report 09--28b, Iowa State U., Dept. of Computer Sc., 2010.Google Scholar
- }}Mohsen Vakilian and Danny Dig and Robert Bocchino and Jeffrey Overbey and Vikram Adve and Ralph Johnson . Inferring method effect summaries for nested heap regions. In IEEE/ACM International Conference on Automated Software Engineering (ASE), pages 421--432, 2009. Google Scholar
Digital Library
- }}D. Notkin, D. Garlan, W. G. Griswold, and K. J. Sullivan. Adding Implicit Invocation to Languages: Three Approaches. In JSSST International Symposium on Object Technologies for Advanced Software, pages 489--510, 1993. Google Scholar
Digital Library
- }}B. Oki, M. Pfluegl, A. Siegel, and D. Skeen. The Information Bus: An Architecture for Extensible Distributed Systems. In SOSP, pages 58--68, 1993. Google Scholar
Digital Library
- }}J. Ousterhout. Why threads are a bad idea (for most purposes). In ATEC, January 1996.Google Scholar
- }}P. Charles ηl. X10: an object-oriented approach to non-uniform cluster computing. In the conference on Object-oriented programming, systems, languages, and applications (OOPSLA), pages 519--538, 2005. Google Scholar
Digital Library
- }}P. Pratikakis, J. Spacco, and M. Hicks. Transparent Proxies for Java Futures. In OOPSLA, pages 206--223, 2004. Google Scholar
Digital Library
- }}R. Bocchino ηl. A type and effect system for deterministic parallel java. In the conference on Object oriented programming systems languages and applications (OOPSLA), pages 97--116, 2009. Google Scholar
Digital Library
- }}H. Rajan, S. M. Kautz, and W. Rowcliffe. Concurrency by modularity: Design patterns, a case in point. In 2010 Onward! Conference, October 2010. Google Scholar
Digital Library
- }}H. Rajan and G. T. Leavens. Ptolemy: A language with quantified, typed events. In ECOOP, pages 155--179, 2008. Google Scholar
Digital Library
- }}H. Rajan and K. Sullivan. Eos: instance-level aspects for integrated system design. In the European software engineering conference and international symposium on Foundations of software engineering (ESEC/FSE), pages 297--306, 2003. Google Scholar
Digital Library
- }}H. Rajan and K. Sullivan. Need for instance level aspect language with rich pointcut language. In L. Bergmans, J. Brichau, P. Tarr, and E. Ernst, editors, SPLAT: Software engineering Properties of Languages for Aspect Technologies, mar 2003.Google Scholar
- }}M. C. Rinard and M. S. Lam. The design, implementation, and evaluation of Jade. ACM Trans. Program. Lang. Syst., 20(3):483--545, 1998. Google Scholar
Digital Library
- }}J. Robert H. Halstead. Multilisp: A Language for Concurrent Symbolic Computation. ACM Trans. Program. Lang. Syst., 7(4):501--538, 1985. Google Scholar
Digital Library
- }}S. Russell and P. Norvig. Artificial Intelligence: A Modern Approach. Prentice Hall, 2nd edition, 2003. Google Scholar
Digital Library
- }}D. C. Schmidt. Reactor: an object behavioral pattern for concurrent event demultiplexing and event handler dispatching. Pattern languages of program design, pages 529--545, 1995. Google Scholar
Digital Library
- }}B. Shriver and P. Wegner. Research directions in object-oriented programming, 1987. Google Scholar
Digital Library
- }}K. J. Sullivan and D. Notkin. Reconciling Environment Integration and Component Independence. SIGSOFT Software Engineering Notes, 15(6):22--33, December 1990. Google Scholar
Digital Library
- }}H. Sutter and J. Larus. Software and the concurrency revolution. Queue, 3(7):54--62, 2005. Google Scholar
Digital Library
- }}J.-P. Talpin and P. Jouvelot. The type and effect discipline. Inf. Comput., 111(2):245--296, 1994. Google Scholar
Digital Library
- }}A. Welc, S. Jagannathan, and A. Hosking. Safe Futures for Java. In OOPSLA, pages 439--453, 2005. Google Scholar
Digital Library
- }}A. Yonezawa. ABCL: An object-oriented concurrent system, 1990. Google Scholar
Digital Library
- }}A. Yonezawa and M. Tokoro. Object-oriented concurrent programming, 1990.\endthebibliography Google Scholar
Digital Library
Index Terms
Implicit invocation meets safe, implicit concurrency
Recommendations
Implicit invocation meets safe, implicit concurrency
GPCE '10: Proceedings of the ninth international conference on Generative programming and component engineeringWriting correct and efficient concurrent programs still remains a challenge. Explicit concurrency is difficult, error prone, and creates code which is hard to maintain and debug. This type of concurrency also treats modular program design and ...
Reconciling concurrency and modularity with Panini's asynchronous typed events
OOPSLA '10: Proceedings of the ACM international conference companion on Object oriented programming systems languages and applications companionThis poster presents our language design called Panini. It focuses on Panini's asynchronous, typed event which reconciles the modularity goal promoted by the implicit invocation design style with the scalability goal of exposing concurrency between the ...
Semantics-based concurrency control: beyond commutativity
The concurrency of transactions executing on atomic data types can be enhanced through the use of semantic information about operations defined on these types. Hitherto, commutativity of operations has been exploited to provide enchanced concurrency ...









Comments