Motivation

Need ability to invoke tasks asynchronously at the bottom of core.async. And fast.

Goals

Non-goals

Proposed solution

Table of what version you'll get depending on your environment based on the ordering rules above:

Clojure versionJDK versionExternal jarWhatcha getNotes
1.5.11.6noneThreadPoolExecutor 
1.5.11.6jsr166yjsr166y ForkJoinPool 
1.5.11.6jsr166eThreadPoolExecutorJDK 1.6 can't use jsr166e!
1.5.11.7noneJDK ForkJoinPool 
1.5.11.7jsr166yjsr166y ForkJoinPool 
1.5.11.7jsr166ejsr166e ForkJoinPool 
1.5.11.8noneJDK ForkJoinPool 
1.5.11.8jsr166yjsr166y ForkJoinPool 
1.5.11.8jsr166ejsr166e ForkJoinPool 
1.61.6noneClojure ForkJoinPool 
1.61.6jsr166yjsr166y ForkJoinPool 
1.61.6jsr166eClojure ForkJoinPoolJDK 1.6 can't use jsr166e!
1.61.7noneClojure ForkJoinPool 
1.61.7jsr166yjsr166y ForkJoinPool 
1.61.7jsr166ejsr166e ForkJoinPool 
1.61.8noneJDK ForkJoinPool 
1.61.8jsr166yJDK ForkJoinPoolJDK 1.8 is better than jsr166y here
1.61.8jsr166ejsr166e ForkJoinPool 

 

 

 

 

Background / Reference

Background: