This is an archive of the discontinued LLVM Phabricator instance.

[libc++][docs] Update documentation to reflect libc++'s compiler support policy
ClosedPublic

Authored by ldionne on Jul 7 2021, 10:36 AM.

Details

Summary

In https://lists.llvm.org/pipermail/llvm-dev/2021-March/148881.html, we
discussed updating the compiler support policy for libc++ to match more
closely what we do actually support.

This commit enshrines that policy decision in libc++'s documentation.

Diff Detail

Event Timeline

ldionne created this revision.Jul 7 2021, 10:36 AM
ldionne requested review of this revision.Jul 7 2021, 10:36 AM
Herald added a project: Restricted Project. · View Herald TranscriptJul 7 2021, 10:36 AM
Herald added a reviewer: Restricted Project. · View Herald Transcript

Adding folks who might want to see this as a heads up, and folks who posted in the original LLVM-dev thread (https://lists.llvm.org/pipermail/llvm-dev/2021-March/148881.html).

I'm going to land this once the CI is green, since the discussion has been had in March. After this change, we will finally document the support that we actually provide.

ldionne added a subscriber: dim.Jul 7 2021, 10:47 AM
ldionne added inline comments.
libcxx/docs/index.rst
116

@dim Would it be possible to set up a FreeBSD bot? I'm happy to help you with that, but we need one if we don't want to be lying here.

phosek added inline comments.Jul 7 2021, 11:28 AM
libcxx/docs/index.rst
113

I'd be interested in including Fuchsia here but we don't have bots yet, it's something we plan to work on in H2 2021.

115

Since we're distinguishing 32-bit and 64-bit x86, shall we also do the same for ARM, that is have ARM and ARM64?

117

FWIW we're using libc++ on ARM64 and we even run lib++ tests on ARM64 machines in our downstream CI so I'm pretty confident about Linux support for ARM64.

mstorsjo added inline comments.Jul 7 2021, 11:40 AM
libcxx/docs/index.rst
113

Windows is missing in this list. In practice it works for i386, x86_64, ARM and ARM64, but the CI setup covers x86_64. In my downstream usage it practically runs fine on all of them (but I haven't run full testsuite rounds on other than x86_64 and arm64).

Thanks for updating the documentation!

libcxx/docs/index.rst
117

We have build bots running for AArch64, Armv7, and Armv8.

rnk added inline comments.Jul 7 2021, 11:57 AM
libcxx/docs/index.rst
115

I think Chrome still builds libc++ statically for 10.11:
https://source.chromium.org/chromium/chromium/src/+/main:build/config/mac/mac_sdk.gni;l=21

Some time in the next year or two it will likely be raised, but I can't commit to a timeline. If someone lands changes that don't work on 10.11, someone from our team will try to put together a workaround patch for 10.11. The audience for this document is probably libc++ developers, so if they want to minimize the amount of post-commit code review work, it might be less work to use 10.11 here.

emaste added a subscriber: emaste.Jul 7 2021, 1:01 PM
emaste added inline comments.
libcxx/docs/index.rst
116

I'll take this on.

Thanks, Louis! Does this mean we officially no longer support Clang 10 (for example) on main? Or does this only come into effect after llvm 13 is released?

zoecarver accepted this revision as: zoecarver.Jul 7 2021, 1:01 PM
ldionne marked 7 inline comments as done.Jul 7 2021, 1:44 PM
ldionne added inline comments.
libcxx/docs/index.rst
113

@phosek Awesome, I'll be looking forward to helping you setup Fuchsia build bots and then adding it to the list.

@mstorsjo I'll add Windows to the list. I based this off of the list we had previously, but I guess it makes sense to complete it. Are there any plans to add real CI for Windows / arm64?

115

Oh yeah, you're right. Adjusting.

116

Awesome, thanks. What we're looking for is a BuildKite bot, as documented here: https://libcxx.llvm.org/AddingNewCIJobs.html#addingnewcijobs.

Feel free to ping me on Discord and I'll help you set them up, it's pretty easy.

ldionne updated this revision to Diff 357067.Jul 7 2021, 1:45 PM
ldionne marked 2 inline comments as done.

Address review comments

mstorsjo added inline comments.Jul 7 2021, 1:59 PM
libcxx/docs/index.rst
113

Windows/arm64 isn't available on any common cloud infra providers that I know of yet (I don't know about the setup where the current buildkite windows runners are hosted, but I doubt they have it easily accessible either), so probably no plans for that in the immediate future.

Mordante accepted this revision as: Mordante.Jul 7 2021, 10:33 PM

LGTM! Since there's one new review comment I only approve as myself.

ldionne marked an inline comment as done.Jul 8 2021, 8:56 AM
ldionne added inline comments.
libcxx/docs/index.rst
113

Alright, in that case I'm going to remove arm64 from Windows since we are unable to test it on a regular basis. I really want to avoid being hand-wavy -- when we say we support it, I want us to truly provide support for it, which we're unable to do if we don't test publicly on a regular basis.

ldionne updated this revision to Diff 357242.Jul 8 2021, 8:56 AM
ldionne marked an inline comment as done.

Remove arm64 from Windows

ldionne accepted this revision.Jul 8 2021, 8:56 AM
This revision is now accepted and ready to land.Jul 8 2021, 8:56 AM
This revision was landed with ongoing or failed builds.Jul 8 2021, 9:01 AM
This revision was automatically updated to reflect the committed changes.
mstorsjo added inline comments.Jul 12 2021, 2:03 PM
libcxx/docs/index.rst
113

I appreciate that you want to avoid being hand-wavy, but would you be ok with adding a separate paragraph clarifying what support means here, e.g. something along these lines?

"These are platform/architecture combinations that are continuously tested, that we support. In practice, the library also is regularly used on other architectures, but as they're not continuously tested they're not formally supported."

... because I've had my fair share of dealing with people interpreting lists like this as "the website says it *only* works on x86_64 on windows, so it's certainly broken on the other architectures". So that acknowledges that we're aware of it working well on other architectures too (even though that makes it a bit more hand-wavy), and that makes it a bit clearer that not being on the list doesn't make it more broken, just less continuously tested.