Tutorial: Experimenting with ParaSail – Parallel Specification and Implementation Language S. Tucker Taft SofCheck, Inc. 11 Cypress Drive Burlington, MA 01803 USA +1-781-750-8068
[email protected] ABSTRACT This tutorial provides an opportunity to experiment with a new language designed to support the safe, secure, and productive development of parallel programs. ParaSail is a new language with pervasive parallelism coupled with extensive compile-time checking of annotations in the form of assertions, preconditions, postconditions, etc. ParaSail does all checking at compile time, and eliminates race conditions, null dereferences, uninitialized data access, numeric overflow, out of bounds indexing, etc. as well as statically checking the truth of all user-written assertions. After a short introduction to the language, attendees will receive a prototype ParaSail compiler and an accompanying ParaSail Virtual Machine interpreter for writing and testing ParaSail programs. The tutorial/workshop will finish with a group discussion and feedback on the experience of using this new language.
bounds indexing, etc. as well as statically checking the truth of all user-written assertions. The tutorial/workshop will begin with a short introduction to the language,. After that, the attendees will receive a prototype ParaSail compiler and an accompanying ParaSail Virtual Machine interpreter for writing and testing ParaSail programs. A set of sample programs will be provided as a starting point for experimentation. The tutorial/workshop will finish with a group discussion and feedback on the experience of using this new language, and ideas about next steps.
2. Outline I.
Categories and Subject Descriptors D.2.4 [Software Engineering]: Software/Program Verification – formal methods, programming by contract; D.3.3 [Programming Languages]: Language Contructs and Features – abstract data types, concurrent programming structures, dynamic storage management, polymorphism.
II.
General Terms Algorithms, Reliability, Languages, Theory, Verification.
Keywords ParaSail, Parallel Programming, Formal Methods, Pointer-free Programming, Expandable Objects
III.
1. DESCRIPTION This tutorial/workshop will provide a chance to experiment with a new language designed to support the safe, secure, and productive development of parallel programs. ParaSail is a new language targeted at safety-critical and high-security systems development in a “multi-core” world, with pervasive parallelism coupled with extensive compile-time checking of annotations in the form of assertions, preconditions, postconditions, etc[1]. ParaSail does all checking at compile time by incorporating an advanced static analysis engine, allowing it to eliminate race conditions, null dereferences, uninitialized data access, numeric overflow, out of
Introduction to ParaSail a.
Goals of Language
b.
Overall Model of Modules, Types, Objects and Operations
c.
Parallelism Features
d.
Annotation Features
ParaSail Compiler and Virtual Machine a.
Sample program demonstrations of compiler and VM
b.
Time for attendees to modify programs or write new ones
c.
Time for compiling and testing the attendee programs
sample
Group discussion and feedback session a.
Demos of attendee-written programs
b.
Reactions to the new language
c.
Suggestions for improvements
d.
Discussion of possible next steps
3. Level The tutorial includes an introduction to the language. No specific prerequisites other than an interest and ability in learning a new language, plus a basic understanding of parallelism, assertions, preconditions, and postconditions.
4. Reasons for attending Copyright is held by the author/owner(s). SIGAda’11, November 6–10, 2011, Denver, Colorado, USA. ACM 978-1-4503-1028-4/11/11.
This is a chance to experiment with a new programming language oriented around parallelism and formal verification. The language is still in development, so it is also a chance to help
improve and refine the language, and perhaps gain some insights that might contribute to other language design efforts.
5. Short Biography The presenter has been involved with language design since 1975, and with Ada since 1980. He was the technical lead for the design of Ada 95, and was heavily involved in the design of Ada 2005 and the ongoing design of Ada 2012. In addition to
language design, the presenter has been the technical lead on the development of an Ada 83 and of an Ada 95 compiler, as well as of an advanced language-independent static analysis technology
6. REFERENCES [1] Taft, S. Tucker. 2011 Blog: Designing ParaSail, a new programming language. http://parasail-programminglanguage.blogspot.com.