Today at CppCon, Microsoft announced they are open sourcing the Visual C++ implementation of the Standard Template Library. Available now on GitHub and licensed under the Apache License v2.0 with LLVM Exceptions.
Details of why Microsoft have open sourced their STL implementation from the C++ team blog:
Q: Why are you doing this?
A: There are several reasons. Working on the STL in GitHub will allow our customers to follow our development as it happens, try out our latest changes, and help improve our pull requests by reviewing them. As C++ Standardization accelerates, with more large features being voted in every year, we believe that accepting major features as open source contributions will be important. (For example, C++20’s chrono and format libraries are potential candidates.) We also want to contribute back to the C++ community by making it possible to take our implementations of major features. (For example, C++17’s charconv.)
If you’re getting your hopes up that this is the first step in open sourcing more of Visual Studio, don’t get your hopes up too high!
Q: Are you going to open source anything else in the MSVC toolset?
A: We have no such plans. We chose the STL because it’s different from other MSVC libraries and the compiler. Specifically, the STL is fast-evolving and designed by the C++ Standardization Committee, unlike other MSVC libraries. (Being designed by Committee is an advantage for open sourcing! It means that we don’t need to spend any time and energy on feature design review. Implementation strategy and tactics are far more constrained, and therefore easier to review.) The STL is also relatively easy to contribute to, and somewhat loosely coupled, unlike the compiler (where, as a general rule, everything interacts with everything else).
(One exception: there are support libraries for the STL that we may open source in the future, but we have nothing to announce at this time.)
You can learn more about this open source release in the video below.