Microsoft released the standard C ++ library code that is in Visual Studio

logo microsoft

Microsoft logo

At the CppCon 2019 conference that has been being celebrated these days, the exponents of Microsoft took the opportunity to make the announcement of the opening of the code for its implementation from the C ++ Standard Library (also known as STL), which is part of the MSVC Toolkit and the Visual Studio development environment.

The library implements the capabilities described in the current C ++ 14 and C ++ 17 standards, and it is also developed in the direction of supporting the future C ++ 20 standard, following the changes in the current working draft.

According to the reasons why the folks at Microsoft have decided to make this move, in the statement they explain:

There are several reasons why we do this, one of them is to work on the STL on GitHub, this will allow our customers to follow our development as it happens, test our latest changes and help us improve our pull requests by reviewing them.

As C ++ standardization accelerates, and larger features are voted on each year, we think it will be important to accept the core features as open source contributions. (For example, the C ++ 20 format and chronological libraries are potential candidates.) We also want to contribute back to the C ++ community by making the implementation of our core functions possible. (For example, charconv from C ++ 17)

With that Microsoft people let it be known that they plan to continue developing this library as an open project which is being developed on GitHub that will accept pull requests from external developers with fixes and the implementation of new features (to participate in development, a CLA agreement is required to transfer ownership rights to the transferred code).

It is observed that transferring development from STL to GitHub will help Microsoft customers to Track development progress, experiment with the latest changes, and help review incoming requests for innovations.

Open the code too allow the community to use ready-made implementations opportunities for new standards in other projects.

About the license of the code of this library, It is proposed as open under the Apache 2.0 license with exceptions for binary files that solve the problem of including runtime libraries in the composition of the generated executable files.

To be clear, MSVC STL is not merging with libc ++ as they are still separate libraries.

Microsoft explains why the code license is selected in such a way as to allow code swapping with the LLVM project's libc ++ library. STL and libc ++ differ in the internal representation of data structures, but if they wish, libc ++ developers can port interesting STL functionalities (eg charconv) or both projects can jointly develop some innovations.

MSVC STL is distributed under the Apache v2.0 license with LLVM exceptions, which was recently created by the Clang / LLVM / libc ++ project.

The exceptions added to the Apache license cancel the requirement to mention the use of the source product when delivering STL-compiled binaries to end users.

This permissive open source license was chosen because having the same license as libc ++ which will make it easier to share code between libraries. To be clear, the MSVC STL is not being merged with libc ++; they are still distinct libraries that support different platforms with different data structure representations.

On the other hand, one of the key objectives of the project is called full compliance with the requirements specifications, ensuring high performance, ease of use (debugging, diagnostics, error detection tools), and source and ABI level compatibility with earlier versions of Visual Studio 2015/2017.

Among the areas that Microsoft is not interested in developing are portability to other platforms and adding custom extensions.

If you want to know more about the statement made by Microsoft, you can consult it In the following link.

The content of the article adheres to our principles of editorial ethics. To report an error click here!.

Be the first to comment

Leave a Comment

Your email address will not be published. Required fields are marked with *



  1. Responsible for the data: AB Internet Networks 2008 SL
  2. Purpose of the data: Control SPAM, comment management.
  3. Legitimation: Your consent
  4. Communication of the data: The data will not be communicated to third parties except by legal obligation.
  5. Data storage: Database hosted by Occentus Networks (EU)
  6. Rights: At any time you can limit, recover and delete your information.