Readit News logoReadit News
Posted by u/cemdervis 4 months ago
Show HN: C++ Compiler Support Pagecppstat.dev...
Hi HN,

I have created a webpage that displays all C++ features since C++20 in a simple, searchable table.

It is intended to serve as a quick reference for C++ developers, whether as support for cross-platform development or simply to track the current support status out of curiosity.

I created it as a simpler, more structured, and more up-to-date alternative to the cppreference compiler support site. Please note that the page intentionally does not list LWG and CWG papers. This might change as I am continually updating the site and trying out new ideas.

Questions, feedback and suggestions are appreciated, either here or in the form of GitHub issues.

wscott · 3 months ago
For reference here is the cppreference page the OP is trying to improve: https://cppreference.com/w/cpp/compiler_support.html

Personally I am not not sure the live search on this new page saves me time, but perhaps if you added the ability to only show missing features it could be useful. For example if I could pick that I am interested in c++23 and earlier and that I use gcc-14 and clang-16 it should list the features that won't work for me. That would be useful compared to trying to scan the full list.

cemdervis · 3 months ago
Hi, the live search is for developers that want to quickly look up the support for a particular feature. The "missing features" feature and filtering by compiler versions is something I'm currently working on. Any suggestions are welcome, and thanks for your feedback.
peapicker · 4 months ago
My gosh. I'm having to support some older platforms (like OS/400) who STILL don't have C++11 support. And also for now, HP-UX and Solaris, which support up to C++14 (dead platforms - hoping to drop soon). Someday maybe I'll get to move on.
Panzerschrek · 3 months ago
How did you collect this information? Manually by checking all compilers? By writing tests? By parsing compilers documentation?
cemdervis · 3 months ago
Hi, I got the initial information from the cppreference compiler support site, then verified with each compiler vendors support tables and updated the information accordingly.

Then I wrote a bot that watches all known (and most importantly, reliable) sources for changes, that then notifies me. The data itself is kept in very simple yaml files. So whenever something changes, I verify and update the info accordingly (The site itself is then regenerated and uploaded automatically).

For features that are not fully implemented yet, or where the vendor does not provide any information (e.g. Apple's conformance table), I set up a conformance test suite on my machine that runs most of these across all toolchains.

Please note that I won't be the only person that maintains this site. I'm in the process of open-sourcing and automating most of it, so that everyone can contribute via GitHub. It's just that keeping up with C++ is part of my job, and also a personal interest of mine. So I do this as a "labour of love".

JonChesterfield · 3 months ago
Trusting that the compiler docs correspond to reality is a bit of a risk here.

I lost a bunch of my evening to gcc refusing to find glibc headers and the docs wouldn't have helped me there. I did find a wontfix bugzilla from 2020 though, so that's nice.

The alternative would be to start stoically writing test programs and gradually reinvent part of autotools. Maybe run your conformance tests on the platforms that do have docs as well. Sounds like you may already be doing that :)

devnullbrain · 3 months ago
How do you see someone using this page?

Feature names tend not to be very approachable. They often use very precise terminology or refer to papers with names that are targeted for a very in-the-know population.

As an example, one of the features listed is '`constexpr` `std::shared_ptr` and friends'. You seem to have a search that can cope with backticks but this feature doesn't show up if I search for 'constexpr shared_ptr'. That can be solved technically, but the bigger problem is that this feature also changes things for `weak_ptr` - or 'smart pointers' as a concept.

I can't picture a situation where I end up wanting to know the status of that feature's implementation in isolation.

For what it's worth, cppreference isn't any better at this, since it doesn't have any notes on the addition of support for `constexpr`ness of either pointer type. But with enough will I can change that.

cemdervis · 3 months ago
Hi, I first designed this site as a way for C++ developers to quickly look up support for particular features (as you've described, in isolation). But in the long run, I think we can extract much more meaning out of these numbers, which is why I added the conformance overview as a first test candidate.

As for feature names: I agree that the paper titles tend to be very technical / niche. However, I didn't want to distort them and rename them, since the site is targeted at the in-the-know population you've mentioned. Do you have an idea how this could be improved?

Regarding the search: This is something I'm working on improving, so that coarse searches like "constexp sharedptr" would correctly yield the constexpr std::shared_ptr proposal.

captain_coffee · 3 months ago
Nice! Just curious about one aspect: how much demand is there for C++ nowadays for new projects and what is the anticipated demand mid to long term [5+ years]? Asking as I am seriously considering if it would be a good idea to transition to C++ development (professionally, not as a hobby). Wondering if it would make sense from the POV of projected/anticipated future demand, job security and salaries (VERY important) - in the context of how bad the job market is at the moment.
krior · 3 months ago
C++ was and is reasonably popular, even when all new projects start using rust I guess there will be demand due to all the legacy code that cannot be rewritten. On the other hand you will be working with legacy C++, from what I heard its like selling your soul for job security.
pjmlp · 3 months ago
Plenty, because despite the noise around the alternatives, even those alternatives are built with help of GCC and LLVM, written in C++ and aren't getting any rewrite short term.

Then there are whole industries where only C, C++ and Assembly matter, including standards, so it will take a while for new contenders to be taken seriously on such industries.

coffeeaddict1 · 3 months ago
gcc and LLVM being written in C++ is ortogonal to the demand for new projects to use C++.
jll29 · 3 months ago
If you care about job security and salary, I recommend specializing in maintaining COBOL legacy codebases for the financial services sector.

There are not enough oldtimers alive to do it, and the younger guys refuse to learn it. That drove up the hourly salaries enormously.

captain_coffee · 3 months ago
I am non-ironically considering this as I probably have double-digit organizations within a radius of 10 miles that probably still have core systems in production written in COBOL.
rs186 · 3 months ago
What about your sanity
butterisgood · 3 months ago
This is really nice! I have not been keeping up with the features as I used to. "delete with a reason" strikes me as a really good idea.

Deleted Comment

lainzhow · 3 months ago
Neat tool, but I noticed it shows that modules are mostly supported when they are at best partially supported. You can double check with the famous "Are we modules yet?" website.
cemdervis · 3 months ago
Hi, thanks. I agree, modules support is kind of there, but not really. I think we could only go by what the compiler vendors state, and add some notes about what's missing.