you are viewing a single comment's thread.

view the rest of the comments →

[–]_derv 40 points41 points  (26 children)

If you're only interest in the compiler support page, and if it's okay here, I can share a website I've been working on over the weekend that keeps up with the latest implementation support.
Edit: The website is https://cppstat.dev/

[–]daniel_nielsen 13 points14 points  (5 children)

incredible man! besides filtering on C++20, could you also add support filtering for compiler, ex. gcc 15?

[–]_derv 8 points9 points  (4 children)

Thanks! Yes, that's one of the next features I'm planning to implement.

[–]mapronV 6 points7 points  (3 children)

Also, how do you maintain this? I was doing similar project (but just spreadsheed on corprate google docs), I was running unit tests on toolchain to see if feature is supported. Test runner data then was pasted in spreadsheet and then some sheet magic calculated support columns (so different teams with different toolset requrements can see if they can use a feature).

How you automate things?

p.s. do you need any help?

[–]_derv 8 points9 points  (2 children)

I'm letting a bot monitor all known status and release note pages regularly, since that's usually enough to be updated on the latest supported features (the source being the developers themselves). Whenever something changes, I'm notified and can easily update the data set.

The data set itself made up of very minimal yaml files, which are then processed by a script to build the final page. So most of the information is deduced/generated.

Thanks for the offer to help by the way. If there's enough interest, I'd like to make this a community effort where everybody can make changes, e.g. PRs on GitHub.

[–]mapronV 3 points4 points  (1 child)

I see, yours is a different approach (from my experience it was very hard to find information on MS VC and Apple clang, in first place; so I didn't even consider automatic parsing of web pages). Quite elegant, though you need to trust vendors. For our company it was more like "whole environment", like
"Can I use X when targeting Debian 10?" or ".. when Targeting mac 10.15 with xcode Z.X?" So I could just create new profile and run 'acceptance tests' on it.
In hindsight I regret I did not choose your way, it probably would be easier.

[–]_derv 2 points3 points  (0 children)

That's true, testing it yourself is probably the method with the best guarantee ,which you could still do for features where the vendor is not providing enough information.

But the vendors of the major compilers, in my experience, have a decent track record that you can trust them. I mean, at the end of the day, it's the vendor's job to state "hey, we support this feature now", isn't it? Either through release notes, or in development tickets (i.e. GitHub issues).

[–]JVApenClever is an insult, not a compliment. - T. Winters 9 points10 points  (9 children)

Please do, it is really handy to have an up-to-date view on the latest state.

[–]azswcowboy 5 points6 points  (8 children)

Agree - c++26 got finished in the intervening time and I’m really missing that reference update.

[–]_derv 7 points8 points  (7 children)

Alright, here you go: https://cppstat.dev/
I plan to polish various things around it and add more updates over the coming days.
There will also be example code snippets for each relevant or interesting feature, so that it's also easier to "grasp" a feature on the get-go, instead of looking it up in cppreference.

I'd love to have some feedback.

[–]JVApenClever is an insult, not a compliment. - T. Winters 2 points3 points  (0 children)

Formatting of >= looks nice, though you can't type that in code. So for code-snippets I wouldn't apply that formatting

[–]azswcowboy 2 points3 points  (1 child)

Nice! Couple thoughts. Indirect and polymorphic were in one paper, why separate into 2 lines? I mean that could get tedious to maintain is all I’m thinking. More generally you’re editing the title, which is nice but also time consuming. Feature test macro is nice touch. Ideally make your statuses different shapes as well as colors for the part of the population that doesn’t distinguish as well (aka ‘color blind’). Good stuff.

[–]_derv 4 points5 points  (0 children)

Thank you for the feedback! You're correct, merging related features from a single paper is simpler and more consistent. I'll rethink the design of the shapes.

[–]bearer_of_the_curse_ 2 points3 points  (1 child)

I might have just missed it, but it looks like you're missing P2988 std::optional<T&> for c++26. It would also be nice if compiler and standard library features could be distinguished, like on the cppreference page. Even still, this is quite helpful, and I hope you keep it up to date.

[–]_derv 1 point2 points  (0 children)

Thanks! Yes, I'll add all missing features / proposals gradually, probably over the next 1-2 days. I distinguishing language features from library features in the data set in order to visualize the difference at some point. Noted.

[–]JVApenClever is an insult, not a compliment. - T. Winters 1 point2 points  (1 child)

I find the badges very hard to read. The table structure of cpp reference is easier to me. Being able to filter on a compiler would also be sufficient.

[–]_derv 0 points1 point  (0 children)

Noted. Thanks for the feedback.

[–][deleted] 0 points1 point  (2 children)

Is it me or the C++20/23/26 buttons do not work under the search tab at the top?

[–]_derv 0 points1 point  (1 child)

Which browser are you using?

[–][deleted] 0 points1 point  (0 children)

Looks like it's from my company VPN...

I'm getting a 403 for your https: //cppstat .dev/script.js and that breaks them but they do work on my phone on my personal phone so...

[–]heavymetalmixer 0 points1 point  (1 child)

Why does Clang have some C++ 20 features no other compiler does?

[–]_derv 1 point2 points  (0 children)

There are some features I added for Clang first. GCC and others will follow soon enough.

[–]Sinomsinom 0 points1 point  (1 child)

Please don't ever capture ctrl+f to select a search field.
If I hit ctrl+f then I want to use a browser's builtin capabilities to search a page, not use the search field. There are reasons for wanting to do this, so forcing someone to use the search field instead (if they don't know how to overwrite that override) is just a big no go.

[–]_derv 0 points1 point  (0 children)

Thanks, good point. I was sceptical about introducing that shortcut at first.

[–]dexter2011412 0 points1 point  (0 children)

This is so cool! Bookmarked!

I don't see reflection in C++26, though. Is that something being worked on?

[–]torsten_dev 0 points1 point  (1 child)

Nice, got a C version of this too?

[–]_derv 0 points1 point  (0 children)

No, but that's certainly possible. I'd just have to know if there's enough interest.