Streme (Scheme + stream) is a Scheme-inspired language with a concurrent interpreter. The main goal is to make effective use of multiple cores when evaluating programs. Streme comes with analysis tools that are capable of performing control and value flow analysis, together with interprocedural dependence analysis. The ultimate goal is automatic parallelization of Scheme programs, evaluating standard Scheme programs (i.e. programs without special annotations for parallelization) using multiple cores.
X10 is an experimental new language currently under development at IBM in collaboration with academic partners. X10 is a type-safe, modern, parallel, distributed object-oriented language intended to be very easily accessible to Java(TM) programmers. It is targeted to future low-end and high-end systems with nodes that are built out of multi-core SMP chips with non-uniform memory hierarchies, and interconnected in scalable cluster configurations.
webLISP is an experimental Implementation of reflective functional Programming. It contains a very simple Lexer and Parser for a lambda-calculus language in lisp-syntax. The Lambda terms are compiled to variablefree Combinator Graphs. The virtual Graph-Reduction-Machine that reduces the Combinator-graph distinguishes between strict and non-strict operations. Strict operations have to be evaluated even if we obey lazy evaluation and can thus be evaluated in parallel to the main computation. The parallel computations are added to a global task pool, which is maintained by a stochastic scheduler. In addition to this basic implemenation a special Combinator P is introduced which performs an asyncronous parallelism of two given applications.
JAVAB is a prototype bytecode tool that can automatically detect and automatically exploit implicit loop parallelism in bytecode, i.e. the architectural neutral instructions of the JVM. Implicit parallelism is made explicit by means of the multi-threading mechanism provided by the JVM.
JAVAR is a prototype restructuring compiler that can be used to make implicit parallelism in Java programs explicit by means of multi-threading. JAVAR relies completely on the identification of `implicit’ parallelism by means of annotations.
Scriptic is a language extension that simplifies Java programming. Scriptic includes the following: Simple and concise constructs for expressing choice, parallelism, breaking, and iterations. Simply write an ampersand instead of a semicolon: you will get parallelism instead of a sequence, etc. Easy access to multi-threading: Java code between {* and *} simply runs in its own thread A refinement construct (script) with a powerful parameter mechanism Communication between parallel processes using shared scripts An event-driven execution mechanism that ideally suits user interfaces, simulations, and others Scriptic has a strong theoretical background in Process Algebra. This foundation means that the language constructs for parallelism are well-defined.
JavaParty is an extension of Java for transparent parallel and distributed programming with remote objects and object mobility. It can be pre-processed into regular Java plus RMI calls.