I would like to invite discussion on a proposal for a new OpenJDK Project, 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
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
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 .