There's another bug with SFINAE depth increases that's blowing up at Google.
I suspect we can get that back.
Wed, Apr 7
There's another bug with SFINAE depth increases that's blowing up at Google.
Fri, Apr 2
I like this patch. It's targeted and fixes the problem it's aiming at well.
Here is one regression I've found so far:
Thu, Apr 1
I'm a bit worried about some of the tests that were deleted. Not the ones for extensions, but some of the ones added to prevent regressions with SFINAE.
Thu, Mar 18
Can we please change the .compile.cpp to just .pass.cpp. There's very little to no cost to actually run the test, and doing so seems safer to me.
It avoids allowing runtime tests to be mistakenly added to these files without anybody noticing.
LGTM after addressing the current inline comments.
Please make sure the other reviewers don't have any unresolved comments before submitting.
Mar 11 2021
Due to some complexities libc++ has dealing with the allocator, as well some optimizations it would be a serious undertaking to restructure libc++ to properly construct the types in the hash containers,
This change would be greatly simpler and much appreciated.
LGTM. Nice tests, and thank you for moving the test header into support.
LGTM. I like Arthurs suggestion about the tests. But otherwise this change seems ready to go.
LGTM. I don't want to squash the conversation here, but I think we've discussed it enough. The actual changes here look solid, and I think they should be allowed to proceed.
Mar 4 2021
LGTM assuming the inline comments get addressed.
Feb 17 2021
I don't see any major issues with patch. It looks OK to me.
Jan 15 2021
We definitely want to unqualify __unwrap_iter to unbreak chromium. That's somewhat intended to be a customization point (until the proper contiguous iterator stuff lands).
Nov 30 2020
I don't see a reason to keep the builders.
Nov 17 2020
Bots are clean now.
Attempting to trigger rebuild
I'm trying to trigger a rebuild. Does accepting as libc++ do it?
Revert the addition of unneeded availability XFAIL's to variant tests.
Nov 12 2020
Oct 27 2020
After talking to @ldionne, the negative compilation tests aren't inappropriate here. I'm happy to see the stay.
I'm personally fine taking small bits of a paper.
I would rather it than have a full implementation get stuck in review.
Sep 9 2020
Sep 1 2020
Aug 17 2020
LGTM, this fixes some build failures at Google.
Aug 12 2020
Jul 15 2020
LGTM as well. Thanks for working on this!
Jul 13 2020
IDK if I know what's causing the issue, but this change LGTM.
Jun 19 2020
Jun 18 2020
This is not the ABI we want.
Jun 17 2020
Jun 15 2020
Jun 9 2020
How do we implement the "Mandates" requirement specified here?
Jun 4 2020
std::any, like other type erased types, cannot follow the allocator model and therefore does not use allocators.
All of that being said, this code is correct and LGTM**.
May 29 2020
Why is this code an improvement?
@mvels Do we have macro-benchmark results for this change?
May 13 2020
I'm a bit confused by the build size numbers you gave compared to the patch.
We could lift the two macros that depend on _NEWLIB_VERSION into the headers that use them.
Then we'll avoid the include in config.
May 7 2020
I can't find any usages of this internally.
Sorry for jumping in without context, but wanted to chime in on one thing.
Windows doesn't really have a concept of symlinks. So, when the monorepo is cloned, those symlinks turn to ordinary text files. Previously, if we cross-compiled libc++ for some symlink-friendly system (e. g. Linux) and ran tests on the target system, some tests would fail.
This isn't right. Windows has supported symbolic links since Vista. The big limitation was that you needed to be in an elevated process to be able to create symbolic links. Windows 10 lifted that limitation in Developer Mode starting with the April 2017 release (https://blogs.windows.com/windowsdeveloper/2016/12/02/symlinks-windows-10/). If git for Windows isn't creating symbolic links properly, that's a git issue and not a Windows issue (although I recognize it doesn't make much difference for the end user). Some searching suggests that you should be able to configure Git on Windows to handle symlinks correctly (https://github.com/libgit2/libgit2/pull/4713, and https://github.community/t5/How-to-use-Git-and-GitHub/git-bash-symbolic-links-on-windows/m-p/11488#M3732 shows an option to enable symbolic links when running the setup).
I am aware of this, and I even had some success turning on support for symlinks on Windows. Which gives me the right to say that this process requires a little more involvement than it should :-)
However, things are even more complicated on the buildbot (which is the main purpose of this effort). Namely, there are some limitations of the buildbot platform that won't allow passing custom flags to Git when cloning the repo.
May 6 2020
If we don't want the static env, we should remove it entirely.
Meaning, we should convert each of these tests to use dynamic_test_env and setup the required files like the remainder of the tests do.
I'm sorry, I've messed up. I first committed this as rG645ad5badbabdeca31de5c98ea8135c5a6e7d710, but then realized that I've committed the previous version of this patch. So I reverted it and recommitted as 52cc8bac7780dbfb90dcc8cfe24696618eeaa06e.
That said, I don't understand how this patch makes these tests pass on Windows.
If Windows doesn't support symlinks, how does dynamically creating them make a difference?
This patch is not about making them pass on Windows, but rather about making them pass on Linux in the case when we cross-compile them on Windows.
While I support this change, it should really be accompanied by a library working group issue or paper.
May 5 2020
Unless I'm mistaken, this change is racy. Tests in different files are run in parallel.
One test could be tearing down the static environment while another in trying to construct it.
When I initially wrote the filesystem tests, I had divided them between "static" and "dynamic"; that is, tests which modified the target filesystem and those which did not.
There are some simplifications suggested in the inline comments.
Once those are addressed, this LGTM.
Apr 23 2020
Apr 20 2020
Apr 16 2020
The entire point of the static test environment is that it's /static/.
Meaning it's checked in and not created on the fly.
Are you aware of https://llvm.org/docs/CommandGuide/lit.html#substitutions ("%T: parent directory of %t (not unique, deprecated, do not use)")? We've talked about this a bunch in the past, and the decision back then was to do mkdir %t in the tests that need a dir, and to remove %T over time.
This needs a bunch of additional tests. Specifically of the passing kind :-)
Apr 15 2020
Apr 10 2020
Apr 9 2020
Apr 8 2020
I assume this is a behavioral change? Why are there no new tests?
Committed as 601f7631827ae6ac08117a282c83a62b67dedf48
Apr 7 2020
I have some concerns with how we harden our concepts,
but these can be addressed in follow up commits.
Apr 4 2020
Apr 3 2020
I like tests.
Assuming all of them pass;: LGTM.
Mar 31 2020
Mar 26 2020
I don't necessarily agree.
Lets not start writing tests like this.
Mar 24 2020
We don't implement non-standard extensions in libc++.
Only when this trait is proposed for standardization can we consider adding it to the library
Mar 23 2020
I would like us to be even more aggressive bumping our compiler support,
but that's a conversation for another time.
These tests still require that "arbitrary" warning flag be enabled.
I don't understand? The only reason these tests were using that flag was to cause a compilation error (instead of a warning) on GCC. If we properly require that we're able to check the diagnostics, which is the goal, we can stop trying to make them fail arbitrarily on GCC.