archives

ParaSail, a new language oriented toward parallelism and verification

For those who enjoy seeing sausages made, as opposed to just eating them, we have started a blog following the design of a new programming language called "ParaSail" for Parallel Specification and Implementation Language (not to be confused with SAIL or MAINSAIL, languages originating in the Stanford AI Lab):

http://parasail-programming-language.blogspot.com/

ParaSail doesn't exist yet, but the blog talks about it in what my colleagues call the "software present tense," presuming some day it might. Postings are about once a week, though it varies a lot. As with most blogs, the most recent entry is presented first, but it is probably wise to read the first few entries as they give a bit of the background, before reading the more current entries.

ParaSail is intended for high-criticality software. The things that might make ParaSail of interest are its implicit parallelism, its integrated support for annotations (preconditions, postconditions, assertions, constraints, etc.), the fact that all modules are parameterized (i.e. are essentially generic templates), and that there are only two kinds of modules, interfaces and classes (which implement interfaces). A type is produced by instantiating an interface with appropriate parameters. The two kinds of modules are intended to cover the entire spectrum of grouping constructs, from packages/modules at the high end, to simple types at the low end.

ParaSail clearly inherits plenty of ideas from other languages, such as Modula-2/3, ML/CAML/OCAML, CLU, Eiffel, C++, Java, Ada, etc. The implicit parallelism and the integrated annotations were some of the reasons to justify starting from scratch, but also there is the pleasure of now and then starting with a clean sheet of paper.

In any case, it is inherently a work in progress, but comments and questions are certainly welcomed.

-Tucker Taft