[RFC] C++17 Parallel STL ∥ a new project

Hello parallelism enthusiasts!

C++17 adds support for “Parallel STL”, and neither libc++ nor libstdc++ have an implementation. Apple, RedHat, and Intel want to begin implementation work under the umbrella of the LLVM Foundation.

What we’re suggesting

  • Create a new repository, under the LLVM Foundation, to host Parallel STL work. This includes an implementation which can support multiple backends, correctness tests, and performance tests.
  • This repository will be importable into libc++ and libstdc++. Details will be worked out later as this will be experimental for a while.
  • Contributions occur as usual, under LLVM’s contribution policy (specifically, the revised policy).
  • New mailing lists will be created for the project (pstl-dev@ and pstl-commits@), as well as new bugzilla components, and associated Phabricator setup.
  • Intel will seed this new repository with the code from their initial implementation.
  • This repository will be exclusively under LLVM’s new license: Apache 2.0 with LLVM Exception. That is, not dual-licensed under both the old and the new licenses.
  • Apple’s Louis Dionne, RedHat’s Tom Rodgers, and Intel’s Mikhail Dvorskiy sign up to implement and maintain code in this repository. Marshall Clow will also participate in his capacity as libc++ code owner.
  • We foresee this implementation as being ready for experimental distribution in the LLVM 8 and GCC 9 timeframes. We have no commitment to when an implementation will be deemed stable because we need to figure out ABIs, backends, etc.
  • We look forward to getting developer feedback from such an experimental distribution.
  • Future work will help inform the direction of C++20 and beyond. In particular, work towards Executors and Networking are closely tied to the Parallel STL and there’s a Parallel STL v2 (Electric Boogaloo).

Request for Comments

The LLVM Foundation’s Board approves of this plan. We want to make sure that the wider community also approves. We’d also like to hear from anyone interested in helping with this work as well as integration into libc++ and libstdc++.

Upcoming Discussions



One specific question I’d like to see considered: we’re talking about splitting libc++ off to its own mailing list now. Does it make sense for pstl to share that list, or should we add two new lists?

Besides the seeming alignment between the two projects, this would encourage collaboration across the code bases and would reduce spam moderation burden.


Tom and Mikhail might know better: they likely only want emails from pstl, which is why I suggested having its own list. The new libc++ lists should be fairly low traffic, and I agree with you that it might help with some extra collaboration. I’m OK with either.

I know that people generally prefer to get as little email as possible, but I prefer to push teams together when practical instead of building islands.

Beyond that, moderating a mailing list is a nontrivial amount of effort and involves getting a lot of email, so I’m not sure that they’d actually end up with less net emails :wink:


I don't have any specific objections just having a libc++ list and
having pstl discussions take place there. I also think there is some
general desire from the libstdc++ maintainers to potentially collaborate
with libc++ on standard library testing any.


Chris Lattner writes:

Hello again, parallelism enthusiasts!

We’ve gotten a bit of feedback on this list, and lots of enthusiasm privately from folks who are interested in contributing. How about we get the ball rolling?

LLVM admin, could you do the following:

  1. Create libcxx-dev@ and libcxx-commits@ mailing lists (as proposed by Louis and discussed on this thread).
  2. Create the pstl repository.
  3. Update Phabricator’s Herald rules to target libcxx-commits@ for commits to the libc++ and libc++abi repositories.
  4. Update Phabricator’s Herald rules to target libcxx-commits@ for commits to the pstl repository.
  5. Create a new bugzilla component for pstl.



Hello parallelism enthusiasts!

As discussed a while on this list, Intel was interested in contributing its Parallel STL implementation to the LLVM, and contributing with a variety of folks on future work. They’ve now done so here:


The initial contribution is under the current LLVM license (instead of the new one).

You can clone the repository with:

git clone https://git.llvm.org/git/pstl.git/
git svn init https://llvm.org/svn/llvm-project/pstl/trunk —username=santa
git svn rebase -l

All future contributions will go through the usual code review process for LLVM: https://llvm.org/docs/DeveloperPolicy.html



Moving cfe-dev to BCC, since we’ve created libcxx-dev to discuss libc++ as well as PSTL.