Actors: a model of concurrent computation in distributed systems
Actors: a model of concurrent computation in distributed systems
Implementation strategies for continuations
LFP '88 Proceedings of the 1988 ACM conference on LISP and functional programming
Deforestation: transforming programs to eliminate trees
Proceedings of the Second European Symposium on Programming
Coordination languages and their significance
Communications of the ACM
Scheduler activations: effective kernel support for the user-level management of parallelism
ACM Transactions on Computer Systems (TOCS)
Imperative functional programming
POPL '93 Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Concurrent programming in ERLANG (2nd ed.)
Concurrent programming in ERLANG (2nd ed.)
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
ACM SIGPLAN Notices
Proceedings of the fourth ACM SIGPLAN international conference on Functional programming
Communicating and mobile systems: the &pgr;-calculus
Communicating and mobile systems: the &pgr;-calculus
Proceedings of the ACM 2000 conference on Java Grande
End-to-end arguments in system design
ACM Transactions on Computer Systems (TOCS)
Communications of the ACM
Communicating sequential processes
Communications of the ACM
Monads for Functional Programming
Advanced Functional Programming, First International Spring School on Advanced Functional Programming Techniques-Tutorial Text
Modular Domain Specific Languages and Tools
ICSR '98 Proceedings of the 5th International Conference on Software Reuse
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation
Why events are a bad idea (for high-concurrency servers)
HOTOS'03 Proceedings of the 9th conference on Hot Topics in Operating Systems - Volume 9
Stream fusion: from lists to streams to nothing at all
ICFP '07 Proceedings of the 12th ACM SIGPLAN international conference on Functional programming
Scala Actors: Unifying thread-based and event-based programming
Theoretical Computer Science
Multicore Scheduling for Lightweight Communicating Processes
COORDINATION '09 Proceedings of the 11th International Conference on Coordination Models and Languages
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
Actor frameworks for the JVM platform: a comparative analysis
PPPJ '09 Proceedings of the 7th International Conference on Principles and Practice of Programming in Java
A universal modular ACTOR formalism for artificial intelligence
IJCAI'73 Proceedings of the 3rd international joint conference on Artificial intelligence
Type classes as objects and implicits
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Capabilities for uniqueness and borrowing
ECOOP'10 Proceedings of the 24th European conference on Object-oriented programming
The F# asynchronous programming model
PADL'11 Proceedings of the 13th international conference on Practical aspects of declarative languages
Communicating mobile processes
CSP'04 Proceedings of the 2004 international conference on Communicating Sequential Processes: the First 25 Years
Lightweight polymorphic effects
ECOOP'12 Proceedings of the 26th European conference on Object-Oriented Programming
Hi-index | 0.00 |
Molecule is a domain specific language library embedded in Scala for easing the creation of scalable and modular concurrent applications on the JVM. Concurrent applications are modeled as parallel process networks that exchange information over mobile and type-safe messaging interfaces. In this paper, we present a concurrent programming environment that combines functional and imperative programming. Using a monad, we structure the sequential or parallel coordination of user-level threads, without JVM modifications or compiler support. Our mobile channel interfaces expose reusable and parallelizable higher-order functions, as if they were streams in a lazily evaluated functional programming language. The support for graceful termination of entire process networks is simplified by integrating channel poisoning with monadic exceptions and resource control. Our runtime and system-level interfaces leverage message batching and a novel flow parallel scheduler to limit expensive context switches in multicore environments. We illustrate the expressiveness and performance benefits on a 24-core AMD Opteron machine with three classical examples: a thread ring, a genuine prime sieve and a chameneos-redux.