Core.async - Communicating Sequential Processes using Channels, in Clojure
Core.async - Communicating Sequential Processes using Channels, in Clojure
Location:
Bayview A/B
Track:
Time:
Monday, 11:45am - 12:35pm
Abstract:
There comes a time in all good programs when components or subsystems must stop communicating directly with one another. This is often achieved via the introduction of queues between the producers of data and the consumers/processors of that data. This architectural indirection ensures that important decisions can be made with some degree of independence, and leads to systems that are easier to understand, manage, monitor and change, and make better use of computational resources, etc. The objectives of core.async are:
- To provide facilities for independent threads of activity, communicating via queue-like channels.
- To support both real threads and shared use of thread pools (in any combination), as well as ClojureScript on JS engines.
- To build upon the work done on CSP and its derivatives, e.g. Java CSP and the Go programming language.
This talk will cover the motivation, design and use of the new Clojure core.async library, the reasons for choosing the CSP approach and how it helps to structure applications.
Rich Hickey, the author of Clojure and designer of Datomic, is a software designer with over 25 years of experience in various domains. Rich has worked on scheduling systems, broadcast automation, audio analysis and finger printing, database design, yield management, exit poll systems, and machine listenings, in a variety of languages. He is the CTO at Cognitect.