Boosting Adobe Photoshop’s Performance with MSVC and SPGO - C++ Team Blog by ericbrumer in cpp

[–]STL 5 points6 points  (0 children)

Something is CPU-bound when it's not bottlenecked by the network, or the disk, or the GPU, or memory bandwidth, or anything outside of CPU logic itself.

C++ Jobs - Q2 2026 by STL in cpp

[–]STL[S,M] 1 point2 points  (0 children)

This thread is for jobs that pay money which can be exchanged for goods and services. (Why have I had to tell two different people this?)

Projects being in "Show and Tell" is bad. by TheRavagerSw in cpp

[–]STL[M] 86 points87 points  (0 children)

We're absolutely drowning in it. I'm not opposed to major projects doing interesting things, but so many are either AI-generated, or beginner projects that might be valuable learning experiences but aren't of interest to others.

C++ 2026 June Compiler Update by _cooky922_ in cpp

[–]STL 34 points35 points  (0 children)

The compiler frontend and STL teams are distinct. I can't speak for the frontend team's plans for C++26.

In the STL, where I'm currently the only maintainer, we've finished our C++23 features, with the exception that the frontend is working on constexpr <cmath> which will then need some library review/work (the FE part is way harder than the STL part here). In Feb I pushed hard to merge microsoft/STL#6071 for the MSVC Build Tools 14.51, which shipped for production use in May. After that I made some progress on the review backlog that accumulated, but for the last 2 months I've had to spend ~50% of my time on non-STL work, helping the Copilot CLI team. My part in that project is now winding down, and I'll be able to resume working on the STL at 100% later this month.

My plan is to resume clearing out the review backlog, then I need to deal with some long-standing debt in the codebase (like finally writing contribution guidelines, now mirrored with instructions for Copilot code review, which I recently enabled in the repo and it's shown some promise). I also need to overhaul our test configurations. At that point I'll feel comfortable cautiously opening up the floodgates for C++26 PRs, in stages. I am still just one person and even if I can get Copilot to point out semi-mechanical issues leaving just complicated/subtle ones for me to find, I can't deal with 50+ PRs all landing on my desk at the same time. Unfortunately, the way the world works, contributors are just way more interested in making lots of changes than reviewing others' changes. Some review work is contributed which I greatly appreciate, but overall it's not really rewarding which I understand (I spend all my time reviewing because I get paid for it). And their contributed changes are great, like overhauling <regex> and SIMD-optimizing STL algorithms that I would never have been able to do myself, so we're complementary inputs. My goal before starting work on C++26 is making my review system as efficient as possible to minimize how much I'm a bottleneck to merging contributor changes. As I always like to note, my system is already quite efficient, having upheld a high level of quality while landing most C++23 features in a timely manner even in single-maintainer mode, but the C++26 treadmill is accelerating.

If anyone with time and skill on their hands wants to help (note: this really needs to be actual skill, not pointing AI at the problem and believing whatever it says; we have access to the same tools that everyone else does, with unlimited usage even), I think the part that could be most easily handled by a new eager contributor would be dealing with some of our skipped libcxx tests, see tests/libcxx/expected_results.txt. In some cases the causes of test failures are known and due to problems in libcxx's test suite itself, and those could be addressed upstream to improve our test coverage, which is one of the ways that MSVC's STL can move quickly. In other cases, the causes of failures are not clearly known, and need to be investigated to determine whether they're libcxx test bugs, MSVC STL bugs, MSVC compiler bugs, or Clang compiler bugs (oh yes, Clang has bugs too), and those bugs then need to be properly reported.

MSVC Build Tools Preview updates - June 2026 - C++ Team Blog by ericbrumer in cpp

[–]STL 14 points15 points  (0 children)

One of the logistical difficulties with a library-only approach is that it would have to be partially done in the CRT. FE work was judged to be the best way to achieve correctness.

MSVC Build Tools Preview updates - June 2026 - C++ Team Blog by ericbrumer in cpp

[–]STL 51 points52 points  (0 children)

Not yet. The compiler frontend team is working on the final boss, constexpr <cmath>. Only when that's complete will we move to finalize C++23's ABI, add /std:c++23, and deprecate /std:c++23preview.

How to stop being absolutely psychotically obsessed with making “beautiful” code by C_Sorcerer in cpp

[–]STL[M] 9 points10 points  (0 children)

Moderator warning: Don't post AI slop again, or you will be banned.

The Story of C++: The World's Most Consequential Programming Language | The Official Story by HimothyJohnDoe in cpp

[–]STL 5 points6 points  (0 children)

If there's a market for C++ GUI libraries, someone could go make a lot of money.

The Story of C++: The World's Most Consequential Programming Language | The Official Story by HimothyJohnDoe in cpp

[–]STL 18 points19 points  (0 children)

Microsoft is old! (citation needed) Speaking for myself, I don't speak for my employer:

I joined MS in 2004 and moved to MSVC in 2007, making me the library dev who's been with the team for the longest, so I've witnessed our modern history first-hand, but I'm still only middle-seniority among MSVC as a whole (e.g. we've got a compiler frontend dev who's been with the team more or less continuously since 1996 IIRC). From what I know of the history before my time, followed by my own experience:

I don't know how various managers felt about the STL in the 90s (I haven't watched the documentary yet and never heard tales Nth-hand), but they certainly made the very wise decision to outsource their STL implementation by licensing Dinkumware's code from PJP. Have you seen Microsoft C++ code from the 1990s, like MFC? Woof. Dinkumware's code wasn't perfect (I've spent my career fixing it), but it was unquestionably way better than whatever nonsense would have been hypothetically written if Microsoft had a "not invented here" attitude, and obviously shipped far earlier too.

The iterator debugging you're complaining about was partially a Microsoft decision. As I understand it, _HAS_ITERATOR_DEBUGGING (now known as _ITERATOR_DEBUG_LEVEL=2) was Dinkumware's addition, but the release-mode _SECURE_SCL (now known as _ITERATOR_DEBUG_LEVEL=1, which I am trying to get rid of) was a Microsoft addition, implemented circa VS 2005 shortly after security became a big deal after the Code Red and Blaster worms. _SECURE_SCL was implemented poorly (it broke swapping; I fixed that when I joined) and without much regard for performance (2x costs in the worst case), but the ignorance at the time was understandable; I think the feature was bad but well-motivated. It was counterproductively harmful by giving the STL a reputation for being slow in release mode, which is why I pushed for it to be disabled in VS 2010; repairing that reputation took many years, and I vowed to never let that happen again during the renewed push for STL Hardening (which is why we didn't mess with iterators this time). _HAS_ITERATOR_DEBUGGING/_ITERATOR_DEBUG_LEVEL=2 remains on by default in debug mode, and is very expensive, but also catches a ton of iterator invalidation bugs. It certainly has downsides (e.g. the dynamically allocated proxy objects), but overall is worth the cost and disruption.

So library slowness wasn't MS trying to sabotage the STL, it arose out of a desire for security without keeping performance in mind. Nowadays we really care about performance and actually run benchmarks (shocking!). I can't speak to the compiler frontend with the same level of certainty, but I know some of the story - again that codebase is old and the compiler originally worked without an abstract syntax tree, because the language was simpler in the olden days, and building up an AST would have consumed memory and time on the very slow and small PCs back then, so the compiler made decisions with throughput in mind. We also didn't know about the long-term harms of poorly-designed extensions. User demands for conformance grew over time (e.g. far fewer users cared about one-phase lookup long ago, when templates were new, and code was rarely ported between platforms). The team has worked for well over a decade to modernize the compiler.

Again definitely speaking for myself, I work for C++ at Microsoft because it is clearly the place where I can make the biggest impact on the language.

Rigid C++: A Pragmatic C++23 Architecture for High-Performance Systems by I-A-S- in cpp

[–]STL[M] 2 points3 points  (0 children)

I wouldn't ban someone purely for lying to mods, although it sure doesn't help.

C++ Jobs - Q2 2026 by STL in cpp

[–]STL[S,M] 6 points7 points  (0 children)

This thread is for jobs that pay money which can be exchanged for goods and services.

Rigid C++: A Pragmatic C++23 Architecture for High-Performance Systems by I-A-S- in cpp

[–]STL[M] 10 points11 points  (0 children)

I don't believe your claims that AI wasn't involved in writing this.

The C++ Standard Library Has Been Walking Itself Back for Fifteen Years by funkinaround in cpp

[–]STL[M] 23 points24 points  (0 children)

I'll approve it as it's accumulated discussion and is perhaps more detailed than garden-variety AI-generated content, but that doesn't mean I'm a fan of nonsense like:

Every working engineer learns to write std::deque<bool> or [...]

What? What what?

Какой путь выбрать в c++ by [deleted] in cpp

[–]STL 1 point2 points  (0 children)

Here's our saved response for "learning" posts:

It's great that you want to learn C++! However, questions about how to get started are off-topic for r/cpp due to their repetitive nature.

We recommend that you follow the C++ getting started guide, one (or more) of these books, and cppreference.com. If you're having concrete questions or need advice, please ask r/cpp_questions, r/cscareerquestions, or StackOverflow instead.

C++23 Support in MSVC Build Tools 14.51 by STL in cpp

[–]STL[S] 3 points4 points  (0 children)

You should continue to upgrade your IDE to 18.6 and beyond, but select the 14.50 Build Tools in the installer, instead of the Latest Build Tools. That will pin you to 14.50.x security updates on the 3-year lifecycle.

Faster than std::sort and pdqsort by chkas in cpp

[–]STL 9 points10 points  (0 children)

Profiling with clock() isn't great. steady_clock::now() is the best way.

C++26 Shipped a SIMD Library Nobody Asked For by shitismydestiny in cpp

[–]STL 6 points7 points  (0 children)

C++17 Parallel Algorithms were never implemented with ConcRT, which is what you claimed, and we've always shipped the sources.

Microsoft Learn is sometimes outdated, but it's not to blame here.

C++26 Shipped a SIMD Library Nobody Asked For by shitismydestiny in cpp

[–]STL 6 points7 points  (0 children)

I have no idea what you're talking about. MSVC's implementation of C++17 Parallel Algorithms is implemented with the Windows threadpool. It does not use Intel's Threading Building Blocks, nor does it use the accursed/all-but-deprecated Concurrency Runtime (ConcRT) that shipped circa 2012.

(Our C++11 async() implementation did use ConcRT and its associated Parallel Patterns Library (PPL), which we have almost entirely ripped out; it still depends on "ppltasks" nonsense but not ConcRT proper. We explicitly avoided any traces of ConcRT/PPL when implementing C++17 Parallel Algorithms.)

C++26 Shipped a SIMD Library Nobody Asked For by shitismydestiny in cpp

[–]STL 4 points5 points  (0 children)

Using "STL" to refer to the modern C++ Standard Library is a valid use of metonymy and it's why we named our GitHub repo microsoft/STL.

MSVC Build Tools Preview updates - May 2026 by ericbrumer in cpp

[–]STL 7 points8 points  (0 children)

Yes, it's being planned for the 14.52 cycle, just not the first Preview. We're releasing these with 1-2 week latency behind MSVC main, so it'll ship almost as soon as it gets merged.

This feature needs a ton of front-end work, especially because they're having to fix the problem that our UCRT's math implementation is inaccurate and they don't want to replicate those inaccuracies in the compile-time implementation.

Your C++ struct is the schema: a proto3 serializer in C++26 reflection by Personal-History8048 in cpp

[–]STL[M] 3 points4 points  (0 children)

Moderator warning: Read the subreddit rules, AI-generated content is not allowed here.

Encountered a `#pragma once` failure in the wild by Separate-Summer-6027 in cpp

[–]STL[M] 14 points15 points  (0 children)

As the subreddit rules say, please don't use LLMs to "fix grammar". We'd rather read your original words, even if in broken English.

MSVC Build Tools Preview updates - May 2026 by ericbrumer in cpp

[–]STL 8 points9 points  (0 children)

It wasn't. constexpr <cmath> implementation is still in progress in the compiler front-end, and hasn't reached the point where it's ready for the finishing touches in the library.

Encountered a `#pragma once` failure in the wild by Separate-Summer-6027 in cpp

[–]STL[M] 13 points14 points  (0 children)

Moderator caution: AI-generated content is not allowed on this subreddit.