Multilisp is an extension of the Lisp dialect Scheme that supports parallel execution. It is designed for symbolic computation and includes constructs for side effects and explicit parallelism. Unlike some parallel programming languages, Multilisp allows for side effects and parallelism, which helps in managing complexity. Multilisp is implemented on the 32-processor Concert multiprocessor and is intended for use on larger multiprocessors. It uses novel techniques for task scheduling and garbage collection, with an unfair scheduling policy to control resource utilization and a multiprocessor garbage collector based on the incremental collector of Baker.
Multilisp's principal construct for creating tasks and synchronizing is the future. The future allows for concurrent evaluation of expressions and can expose significant parallelism in programs, as demonstrated by a Quicksort program using futures. Multilisp inherits from Scheme the ability to use procedures as a powerful modularity construct and supports data abstractions for encapsulating mutable state. However, no distinctive style or higher-level abstractions for building mutable objects have emerged yet.
Multilisp supports both sequential and parallel programming, with a focus on exposing parallelism at all levels of granularity. It includes constructs for introducing parallelism, such as pcall and futures, which allow for concurrent execution of expressions. Futures are particularly useful for exposing parallelism, as seen in the Quicksort example. Multilisp also supports lazy evaluation, with futures and delay primitives allowing for nonstrict function evaluation.
Multilisp's design aims to balance expressiveness and efficiency, supporting both side effects and parallelism. It is a pragmatic compromise between functional programming and the need for expressive power in certain situations. The language is designed to be flexible, allowing for a wide range of programming styles, including side-effect-free code and data abstractions for managing shared state. Multilisp's implementation on the Concert multiprocessor has shown promising results in exposing parallelism, and further research is ongoing to improve task scheduling and garbage collection.Multilisp is an extension of the Lisp dialect Scheme that supports parallel execution. It is designed for symbolic computation and includes constructs for side effects and explicit parallelism. Unlike some parallel programming languages, Multilisp allows for side effects and parallelism, which helps in managing complexity. Multilisp is implemented on the 32-processor Concert multiprocessor and is intended for use on larger multiprocessors. It uses novel techniques for task scheduling and garbage collection, with an unfair scheduling policy to control resource utilization and a multiprocessor garbage collector based on the incremental collector of Baker.
Multilisp's principal construct for creating tasks and synchronizing is the future. The future allows for concurrent evaluation of expressions and can expose significant parallelism in programs, as demonstrated by a Quicksort program using futures. Multilisp inherits from Scheme the ability to use procedures as a powerful modularity construct and supports data abstractions for encapsulating mutable state. However, no distinctive style or higher-level abstractions for building mutable objects have emerged yet.
Multilisp supports both sequential and parallel programming, with a focus on exposing parallelism at all levels of granularity. It includes constructs for introducing parallelism, such as pcall and futures, which allow for concurrent execution of expressions. Futures are particularly useful for exposing parallelism, as seen in the Quicksort example. Multilisp also supports lazy evaluation, with futures and delay primitives allowing for nonstrict function evaluation.
Multilisp's design aims to balance expressiveness and efficiency, supporting both side effects and parallelism. It is a pragmatic compromise between functional programming and the need for expressive power in certain situations. The language is designed to be flexible, allowing for a wide range of programming styles, including side-effect-free code and data abstractions for managing shared state. Multilisp's implementation on the Concert multiprocessor has shown promising results in exposing parallelism, and further research is ongoing to improve task scheduling and garbage collection.