ABSTRACT
The rise of the multicore era is catapulting concurrency into mainstream programming. Current programming paradigms build in sequentiality, and as a result, concurrency support in those languages forces programmers into low-level reasoning about execution order. In this paper, we introduce a new programming paradigm in which concurrency is the default. Our Aeminium language uses access permissions to express logical dependencies in the code at a higher level of abstraction than sequential order. Therefore compiler/runtime-system can leverage that dependency information to allow concurrent execution. Because in Aeminium programmers specify dependencies rather than control flow, there is no need to engage in difficult, error-prone, and low-level reasoning about execution order or thread interleavings. Developers can instead focus on the design of the program, and benefit as the runtime automatically extracts the concurrency inherent in
- E. Allen, D. Chase, J. Hallett, V. Luchangco, J.W. Maessen, S. Ryu, G.L. Steele Jr, and S. Tobin-Hochstadt. The Fortress language specification version 1.0. Technical report, Sun Microsystems, Inc, 2008.Google Scholar
- N. E. Beckman, K. Bierhoff, and J. Aldrich. Verifying correct usage of atomic blocks and typestate. Proc. ACM SIGPLAN conference on OOPSLA, 43(10):227--244, 2008. Google ScholarDigital Library
- K. Bierhoff and J. Aldrich. Modular typestate checking of aliased objects. In Proc. ACM SIGPLAN conference on OOPSLA, pages 301--320, 2007. Google ScholarDigital Library
- R. D. Blumofe, C. F. Joerg, B. C. Kuszmaul, C. E. Leiserson, K. H. Randall, and Y. Zhou. Cilk: an efficient multithreaded runtime system. Proc. ACM SIGPLAN symposium on PPoPP, 30(8): 207--216, 1995. Google ScholarDigital Library
- H.-J. Boehm. Transactional Memory Should Be an Implementation Technique, Not a Programming Interface. Technical Report HPL-2009-45, HP Laboratories, 2009.Google Scholar
- J. Boyland. Checking interference with fractional permissions. In SAS, pages 55--72. Springer, 2003. Google ScholarDigital Library
- D. G. Clarke, J. M. Potter, and J. Noble. Ownership types for flexible alias protection. Proc. ACM SIGPLAN conference on OOPSLA, 33(10):48--64, 1998. J.-Y. Girard. Linear logic. Theor. Comput. Sci., 50(1):1--102, 1987. Google ScholarDigital Library
- A. Greenhouse and W. L. Scherlis. Assuring and evolving concurrent programs: annotations and policy. In Proc. ICSE, pages 453--463, New York, NY, USA, 2002. ACM. S.L.P. Google ScholarDigital Library
- Jones. Haskell 98 language and libraries: the revised report. Cambridge University Press, 2003.Google Scholar
- J. Larus and R. Rajwar. Transactional Memory. Morgan&Claypool Publishers, 1 edition, 2007.Google Scholar
- K. Rustan M. Leino. Data groups: specifying the modification of extended state. In Proc. ACM SIGPLAN conference on OOPSLA, pages 144--153, New York, NY, USA, 1998. Google ScholarDigital Library
- M. Martin, C. Blundell, and E. Lewis. Subtleties of Transactional Memory Atomicity Semantics. IEEE Computer Architecture Letters, 5(2), 2006. Google ScholarDigital Library
- Axum Programmer's Guide. Microsoft Corporation, 2009. http://msdn.microsoft.com/en--us/devlabs/dd795202.aspx.Google Scholar
- JE Rumbaugh. A parallel asynchronous computer architecture for data flow programs. PhD thesis, Massachusetts Institute of Technology, 1975. MIT-LCS-TR-150.Google Scholar
- D. J. Spoonhower. Scheduling Deterministic Parallel Programs. PhD thesis, Carnegie Mellon University, May 2009.Google ScholarDigital Library
- H. Sutter. The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software. Dr. Dobb's Journal, 30(3):16--20, 2005.Google Scholar
Index Terms
- Concurrency by default: using permissions to express dataflow in stateful programs
Recommendations
Æminium: A Permission-Based Concurrent-by-Default Programming Language Approach
Writing concurrent applications is extremely challenging, not only in terms of producing bug-free and maintainable software, but also for enabling developer productivity. In this article we present the Æminium concurrent-by-default programming language. ...
An extensive empirical study on C++ concurrency constructs
ContextNowadays concurrent programming is in large demand. The inherent support for concurrency is therefore increasingly important in programming languages. As for C++, an abundance of standard concurrency constructs have been supported since C++11. ...
Synchronized-by-Default Concurrency for Shared-Memory Systems
PPoPP '17: Proceedings of the 22nd ACM SIGPLAN Symposium on Principles and Practice of Parallel ProgrammingWe explore a programming approach for concurrency that synchronizes all accesses to shared memory by default. Synchronization takes place by ensuring that all program code runs inside atomic sections even if the program code has external side effects. ...
Comments