Call for Discussion: New Project: Loom

I would like to invite discussion on a proposal for a new OpenJDK Project[1], to be titled “Project Loom”, which is intended to add alternative, user-mode thread implementations, delimited continuations (coroutines) and other constructs involving call-stack manipulation, such as tail calls, to the Java platform. The main mission of the project is to provide an alternative implementation of threads (either represented by the Thread class, which will be modified, or by a new API), managed by schedulers written in Java, that preserve the same programming model of ordinary Java threads (currently implemented by the operating system’s thread construct), but offer drastically improved performance and a smaller footprint. The alternative implementation(s) will be available in addition to the current one. This will significantly lower the complexity of writing efficient concurrent applications, as a large number of such lightweight threads (hundreds of thousands or even millions) could be spawned, and blocking them would incur negligible overhead. Those lightweight threads would be implemented on top of a lower-level construct -- delimited continuations. Delimited continuations may also become a public API, and be used to implement other interesting constructs. The Project will be a technology incubator, similar to the Lambda, Panama, Valhalla, and Amber projects. Such incubator projects absorb changes from the current Java release, but do not directly push to Java releases. Instead, they accumulate prototype changes which are sometimes discarded and sometimes merged by hand (after appropriate review) into a Java release. (In this model, prototype changes accumulate quickly, since they are not subject (to the relatively stringent rules governing JDK change-sets. These rules (involving review, bug tracking, regression tests, and pre-integration builds. (The Loom project will have similar rules, of course, but they are likely to be (more relaxed.) The Project will be sponsored by the HotSpot Group, but will affect other aspects of the JDK as well, including core libraries and serviceability. Project members will include HotSpot team members (including the JIT, GC, runtime, and performance teams), core-libs members, serviceability team members, and non- Oracle developers from organizations interested in lightweight concurrency and continuations. Relations to other projects: * The project will start with a full copy of the JDK source base. * The project will preserve relevance by tracking these sources. * The project will not feed change sets directly into any JDK release. I would like to propose myself as the Lead for the Project, and, in addition, the following people as initial committers: Alan Bateman Paul Sandoz Mandy Chung Karen Kinnear Vladimir Ivanov John Rose Others who are interested in becoming contributors should reply this email. For a detailed proposal, with a discussion of motivations, tradeoffs and technical challenges, see [2]. [1]: http://openjdk.java.net/projects/#new-project-vote [2]: http://cr.openjdk.java.net/~rpressler/loom/Loom-Proposal.html