Compiling with continuations
A foundation for an efficient multi-threaded scheme system
LFP '92 Proceedings of the 1992 ACM conference on LISP and functional programming
A customizable substrate for concurrent languages
PLDI '92 Proceedings of the ACM SIGPLAN 1992 conference on Programming language design and implementation
Procs and locks: a portable multiprocessing platform for standard ML of New Jersey
PPOPP '93 Proceedings of the fourth ACM SIGPLAN symposium on Principles and practice of parallel programming
GUM: a portable parallel implementation of Haskell
PLDI '96 Proceedings of the ACM SIGPLAN 1996 conference on Programming language design and implementation
Representing control in the presence of one-shot continuations
PLDI '96 Proceedings of the ACM SIGPLAN 1996 conference on Programming language design and implementation
OSDI '96 Proceedings of the second USENIX symposium on Operating systems design and implementation
Concurrent programming in ML
Asynchronous exceptions in Haskell
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
Continuation-based multiprocessing
LFP '80 Proceedings of the 1980 ACM conference on LISP and functional programming
Using hierarchical scheduling to support soft real-time applications in general-purpose operating systems
A poor man's concurrency monad
Journal of Functional Programming
Extending the Haskell foreign function interface with concurrency
Haskell '04 Proceedings of the 2004 ACM SIGPLAN workshop on Haskell
Composable memory transactions
Proceedings of the tenth ACM SIGPLAN symposium on Principles and practice of parallel programming
A principled approach to operating system construction in Haskell
Proceedings of the tenth ACM SIGPLAN international conference on Functional programming
Haskell on a shared-memory multiprocessor
Proceedings of the 2005 ACM SIGPLAN workshop on Haskell
Data parallel Haskell: a status report
Proceedings of the 2007 workshop on Declarative aspects of multicore programming
Manticore: a heterogeneous parallel language
Proceedings of the 2007 workshop on Declarative aspects of multicore programming
A scheduling framework for general-purpose parallel languages
Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
Runtime support for multicore Haskell
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
Scheduling light-weight parallelism in ArTCoP
PADL'08 Proceedings of the 10th international conference on Practical aspects of declarative languages
Composing parallel software efficiently with lithe
PLDI '10 Proceedings of the 2010 ACM SIGPLAN conference on Programming language design and implementation
A meta-scheduler for the par-monad: composable scheduling for the heterogeneous cloud
Proceedings of the 17th ACM SIGPLAN international conference on Functional programming
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Compiler support for lightweight context switching
ACM Transactions on Architecture and Code Optimization (TACO) - Special Issue on High-Performance Embedded Architectures and Compilers
Implementing a high-level distributed-memory parallel haskell in haskell
IFL'11 Proceedings of the 23rd international conference on Implementation and Application of Functional Languages
Hi-index | 0.00 |
The Glasgow Haskell Compiler (GHC) has quite sophisticated support for concurrency in its runtime system, which is written in low-level C code. As GHC evolves, the runtime system becomes increasingly complex, error-prone, difficult to maintain and difficult to add new concurrency features. This paper presents an alternative approach to implement concurrency in GHC. Rather than hard-wiring all kinds of concurrency features, the runtime system is a thin substrate providing only a small set of concurrency primitives, and the remaining concurrency features are implemented in software libraries written in Haskell. This design improves the safety of concurrency support; it also provides more customizability of concurrency features, which can be developed as Haskell library packages and deployed modularly.