-
Notifications
You must be signed in to change notification settings - Fork 1.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
update boost-math
and fix std::ellint_2
#3077
Conversation
I believe we should update the hash in More importantly, we'll need to update the version of Boost.Math used in the MSVC-internal build, otherwise this fix won't "take effect" for the shipping product. Currently it's using a patched copy of Boost 1.66.0 (the patches are all upstreamed now). I believe it should be fairly simple to drop that and switch to standalone Boost.Math via submodule (with the greatest difficulty being MSBuild), except for the question of test coverage. Currently we have one test for Special Math that Casey prepared by deriving from Boost's tests (and it is internal-only because we haven't had time to deal with it; nothing was fundamentally blocking it from moving to GitHub though). That test will fail with the newer version of Boost.Math due to various implementation changes, probably all intentional. I don't believe we have a tracking issue for this, but IIRC Casey mentioned that an exhaustive test is probably not necessary. All we would need is a test that exercises every function for a few example data points, to verify that nothing is horribly messed up. I believe the only special focus such a test would need is for the extra logic we have to deal with divergence between the Standard and Boost's requirements (this is clearly commented in the source code). Would you be interested in adding such test coverage? I think we could find a maintainer to make the MSBuild changes and complete the upgrade. |
Yes, I can add couple tests for every special functions. |
Yes, I saw that, but I didn't add yet. I will add them tomorrow. and I will remove |
ready for a review |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Made the test changes I wanted to see; thanks for the work you've done!
The new test is failing for x86 only:
I haven't investigated, but perhaps we need an extra ULP? |
Yeah, I investigated - it looks like an issue with the non-SSE2 x86 implementation of |
Any update on this? |
I think it will be merged in VS 2022 17.6 Preview 2: https://github.com/microsoft/STL/wiki/Changelog#vc-redist-lockdown |
Until the redist unlocks in 17.6 Preview 2, we'll be running this test internally (1) statically linked with the new boost::math, and (2) dynamically linked with the old boost::math. The old version still has microsoftGH-3076, so we must avoid the regression test when running internally and using the STL DLLs.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just a couple of minor issues that I'll push fixes for.
We discussed in the maintainer meeting this week that we think it's fine to merge this even with the redist currently locked. The special math functions aren't the most heavily used, so we are willing to tell people that the workaround for GH-3076 is to link statically until 17.6 preview 2 unlocks the redist and we can update the DLLs. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks! Found a few missing tests, I'll validate and push changes.
@CaseyCarter @strega-nil-ms I pushed minor changes after you approved, to remove an unnecessary I also pushed a conflict-free merge with |
I'm mirroring this to the MSVC-internal repo - please notify me if any further changes are pushed. |
Thanks for fixing this bug and adding Special Math test coverage, so that we can now use Boost 1.80.0 to build the official STL DLLs! 😻 🎉 🧮 |
Fixes #3076 / VSO-1600625 / AB#1600625 / DevCom-10133797
I updated
boost-math
submodule to 1.80, https://github.com/boostorg/math/releases/tag/boost-1.80.0I copied
assert_close
from:STL/tests/std/tests/Dev09_158181_tr1_unordered_meow_swap/test.cpp
Lines 22 to 24 in f9697fc
Do we need to update something else like these hashes #2598 ?
Am I correct that this change is an
affects redist
change and it is blocked for now?