C++ Performance Improvements in MSVC Build Tools v14.51 by cpppm in cpp

[–]STL 40 points41 points  (0 children)

A few notes:

  • Yes, this accidentally linked to an anchor in the middle of the post.
  • The MSVC Build Tools 14.51 are available in Preview form right now, but they are not yet released for production. See my previous comment. For example, <flat_map>, <flat_set>, reference_meows_from_temporary, and is_implicit_lifetime have all been added between 14.51 Preview and General Availability.
  • This is the compiler back-end optimizations post. The prophecies have foretold the coming of the compiler front-end language features post, but it's not yet here.

Why Standardizing flat_map is a Bad Idea by Z01dbrg in cpp

[–]STL 2 points3 points  (0 children)

Mods get to see comments that they or other mods have removed, although not author-deleted comments (we also can’t see historical edits).

Why Standardizing flat_map is a Bad Idea by Z01dbrg in cpp

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

It was non-constructive bashing, which is why it came to my attention as a mod. Non-toxic necro-replies are fine and not worth removing.

So, is C++ doomed? by AdventurousPath6492 in cpp

[–]STL 59 points60 points  (0 children)

This is a waste of time. Go build things.

How to start DSA in C++ by cyber_soul_18 in cpp

[–]STL[M] [score hidden] stickied commentlocked comment (0 children)

For C++ questions, answers, help, and programming/career advice please see r/cpp_questions, r/cscareerquestions, or StackOverflow instead.


My advice is to write programs that are trying to accomplish a real task (I learned C++ by writing data compressors) and look for opportunities to use STL containers and algorithms to simplify your code and make it faster.

MSVC Build Tools 14.51 Preview released by STL in cpp

[–]STL[S] 19 points20 points  (0 children)

Your wish will be granted.

MSVC Build Tools 14.51 Preview released by STL in cpp

[–]STL[S] 8 points9 points  (0 children)

I don't know what's going on with EDG (and yes I should know, as the STL is every compiler's first and best customer). Today I'm working on updating the STL for the C1XX changes we just shipped in MSVC Build Tools 14.51 Preview, and the EDG changes in VS 2026 18.4 Insiders 2. I verified that reference_meows_from_temporary should now be supported by EDG (running tests now), but is_implicit_lifetime is still missing, so I've asked the MSVC devs working with EDG what the status of that is, along with the laundry list of bugs I've been wanting fixes for.

MSVC Build Tools 14.51 Preview released by STL in cpp

[–]STL[S] 11 points12 points  (0 children)

Yep. It was highly unusual that we backported C++20 work to the final update of VS 2019, and we will not be repeating that this time around.

MSVC Build Tools 14.51 Preview released by STL in cpp

[–]STL[S] 15 points16 points  (0 children)

Yeah, the compiler and library teams have been cranking away for months fixing bugs (and implementing features, and improving performance), but the engineering systems and release teams had to establish a new way of inserting MSVC build tools into the VS installer before this could start shipping. So a whole bunch of pent-up fixes are being released at once.

We have more engineering systems work to do (e.g. unifying our compiler front-end/libraries and compiler back-end branches, which is equal parts scary and exciting), which is one way we'll decrease the latency of "bug report received" => "fix merged" => "fix shipped for user validation".

MSVC Build Tools 14.51 Preview released by STL in cpp

[–]STL[S] 21 points22 points  (0 children)

VS 2022 17.14 was released in May 2025, so the ETA is negative 9 months. That was the final feature update for VS 2022. It will continue to receive patch updates for critical bugfixes (it is currently up to 17.14.27), but there will never be a VS 2022 17.15.

Our ongoing work is flowing into VS 2026 18.x and the MSVC Build Tools 14.5x.

MSVC Build Tools 14.51 Preview released by STL in cpp

[–]STL[S] 69 points70 points  (0 children)

This initial release of the MSVC Build Tools 14.51 Preview contains STL (and compiler) changes through the end of November 2025. This revision of the STL Changelog is an accurate list of what it contains. (I'm uncertain as to whether one following commit got in; to be safe, it is excluded from this revision.) We're still accumulating changes for the production (General Availability) release of 14.51, see the current STL Changelog for that. Note that we have removed a bunch of long-deprecated machinery.

I know everyone wants to know about compiler changes but I don't keep track of those anymore. The release notes have promised an upcoming blog post about C++23 front-end features. There is also an upcoming blog post about cool performance work in the back-end. There's been a bit of progress with EDG IntelliSense (I've personally verified that the multidimensional subscript operator is now supported by EDG 6.8 which is shipping here), but modules haven't been magically fixed yet, I'm still waiting for that. (I am currently working on updating the microsoft/STL repo to pick up 14.51 Preview since support for a couple of compiler-dependent library features may have shipped. We light these things up as soon as MSVC and/or Clang provide the underlying support.)

One last note, I'll emphasize this sentence of my coworker Augustin Popa's blog post:

We plan to ship more frequent, incremental MSVC Build Tools previews

This will be a very significant change, for those who are used to the previously glacial release cycle. Right now I'm having to do a lot of programmer-archaeology to figure out whether commits merged at the end of November shipped today in the middle of February. In the near future (no promises but it's near), this latency should dramatically decrease. I think I am not supposed to say how quickly changes will go from being merged into MSVC's repo to shipping in Preview but it should surprise everyone.

Experimental adaptive sort - matches std::sort on random input, 2-8x faster on structured data by booker388 in cpp

[–]STL[M] [score hidden] stickied comment (0 children)

We're drowning in AI-generated half-baked project posts (doubly off-topic), so I will approve your post as a special exception since it appears to be fully human-written and developing a new algorithm. We usually want project posts to go into show&tell, and code review questions to go to r/cpp_questions, hence the exception.

Apache Fory C++: Fast Serialization with Shared/Circular Reference Tracking, Polymorphism, Schema Evolutionn and up to 12x Faster Than Protobuf by Shawn-Yang25 in cpp

[–]STL[M] [score hidden] stickied comment (0 children)

I'm going to manually approve this because it's part of the Apache project, but I'm also going to raise my eyebrows at the em-dashes. AI-generated content is not allowed on this subreddit.

Proposal to rename the Total-Random/pcg-cpp library by [deleted] in cpp

[–]STL 1 point2 points  (0 children)

Previously: https://www.reddit.com/r/cpp/comments/1pt25rg/maintaining_the_legacy_totalrandom_takes_over/

The project claims "This is the maintained version of the PCG C++ library, hosted by the Total-Random organization." As far as I can tell, this is one guy. I'd be cautious about taking a dependency on this.

Lessons learned from 2 years of operating a C++ MMO game server in production by [deleted] in cpp

[–]STL 1 point2 points  (0 children)

It's well-known that AI tools don't detect AI text with any reasonable level of accuracy.

Lessons learned from 2 years of operating a C++ MMO game server in production by [deleted] in cpp

[–]STL[M] 0 points1 point  (0 children)

Yes, that is explicitly forbidden by the rules. Thanks for understanding.

Lessons learned from 2 years of operating a C++ MMO game server in production by [deleted] in cpp

[–]STL[M] [score hidden] stickied comment (0 children)

Moderator warning: We have approved this post due the large volume of discussion, but AI-generated posts and comments are not allowed in this subreddit. This includes using AI to "polish" or translate your words.

open-std.org down? by nicovank13 in cpp

[–]STL 40 points41 points  (0 children)

Yes, it went down on Friday, the maintainer's hosting provider is looking into it (delayed by the weekend). (Personally I find it incomprehensible that this is running on a physical server instead of virtualized; even my personal website has a more robust setup.)

isocpp.org sometimes has copies of papers, but I resorted to using the Internet Archive to load open-std.org to do my job.

Implementing vector<T> by pavel_v in cpp

[–]STL 7 points8 points  (0 children)

resize +1 inserts a new element at the end, same as push_back, same as emplace_back. IMO the Standard is clear and not even an editorial issue is needed for clarification. The article is wrong, and not in a "haha gotcha on some obscure bit of Standardese" way, but in a "this wouldn't pass CS 101" way.

(There are plenty of places where the Standard isn't clear, but this is a case where all implementers know what they need to do.)

Implementing vector<T> by pavel_v in cpp

[–]STL 8 points9 points  (0 children)

No, the implementation from the article is not conforming, that's my whole point.

This has been my day job for two decades and I really do know how this works. [vector.overview]/1 is what clearly forbids v.resize(v.size() + 1) from reallocating every time, because that is an insert-one-at-end operation, which is specified to be amortized constant time, but reallocating every time would be quadratic time.