Designing and implementing ParaSail has been a fascinating process. Achieving parallelism and safety at the same time by eliminating rather than adding features has worked out better than we originally expected. One of the lessons of the process has been that just a small number of key ideas are sufficient to achieve safe and easy parallelism. Probably the biggest is the elimination of pointers, with the substitution of expandable objects. The other big one is the elimination of direct access to global variables, instead requiring that a variable be passed as a (var or in out) parameter if a function is going to update it. Other important ones include the elimination of parameter aliasing, and the replacement of exception handling with a combination of more pre-condition checking at compile time and a more task-friendly event handling mechanism at run time.
So the question now is whether some of these same key ideas can be applied to existing languages, to produce something with much the same look and feel of the original, while moving toward a much more parallel-, multicore-, human-friendly semantics.
Over the past year we have been working on a language inspired by the verifiable SPARK subset of Ada, now tentatively dubbed Sparkel (for ELegant, parallEL, SPARK). For those interested, this experimental language now has its own website:
http://www.sparkel.org
Sparkel has essentially all of the power of ParaSail, but with a somewhat more SPARK-like/Ada-like look and feel. We will be giving a talk on Sparkel at the upcoming HILT 2013 conference on High Integrity Language Technology in Pittsburgh in November:
http://www.sigada.org/conf/hilt2013
HILT 2013 is open for registration, and it promises to be a great conference, with great talks, tutorials, and panels about model checking, model-based engineering, formal methods, SMT solvers, safe parallelism, etc. (disclaimer -- please note the name of the program chair).
At the upcoming OOPSLA/SPLASH conference, we are giving a talk about applying these same principles to Python and Java. Super-secret code names for the results of this effort are Parython and Javallel. The announcement of this talk is on the splashcon.org web site:
http://splashcon.org/2013/program/tutorials-tech-talks/853-living-without-pointers-bringing-value-semantics-to-object-oriented-parallel-programming
If you are coming to OOPSLA/SPLASH, please stop by to hear the results. We will also be adding entries over the next couple of months about some of the lessons learned in working to create a safe parallel language when starting quite explicitly from an existing language.
So the question now is whether some of these same key ideas can be applied to existing languages, to produce something with much the same look and feel of the original, while moving toward a much more parallel-, multicore-, human-friendly semantics.
Over the past year we have been working on a language inspired by the verifiable SPARK subset of Ada, now tentatively dubbed Sparkel (for ELegant, parallEL, SPARK). For those interested, this experimental language now has its own website:
http://www.sparkel.org
Sparkel has essentially all of the power of ParaSail, but with a somewhat more SPARK-like/Ada-like look and feel. We will be giving a talk on Sparkel at the upcoming HILT 2013 conference on High Integrity Language Technology in Pittsburgh in November:
http://www.sigada.org/conf/hilt2013
HILT 2013 is open for registration, and it promises to be a great conference, with great talks, tutorials, and panels about model checking, model-based engineering, formal methods, SMT solvers, safe parallelism, etc. (disclaimer -- please note the name of the program chair).
At the upcoming OOPSLA/SPLASH conference, we are giving a talk about applying these same principles to Python and Java. Super-secret code names for the results of this effort are Parython and Javallel. The announcement of this talk is on the splashcon.org web site:
http://splashcon.org/2013/program/tutorials-tech-talks/853-living-without-pointers-bringing-value-semantics-to-object-oriented-parallel-programming
If you are coming to OOPSLA/SPLASH, please stop by to hear the results. We will also be adding entries over the next couple of months about some of the lessons learned in working to create a safe parallel language when starting quite explicitly from an existing language.