You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Fix mimalloc C++ compilation error in debug builds.
The _mi_assert_fail declaration uses mi_decl_throw, which expands to __THROW (for __GNUC__ ). In C, __THROW is __attribute__((__nothrow__)) and works anywhere. In C++, __THROW is noexcept(true), which must come after the parameter list.
Before:
// C: __attribute__((__nothrow__)) void _mi_assert_fail(...);
// C++: noexcept(true) void _mi_assert_fail(...); <- Error, noexcept(...) must be after the params
Does this issue exists in mimalloc upstream as well?
It looks like upstream fixed this earlier. The change is semantically the same: they just moved mi_attr_noexcept to the end. However, the naming differs, our code uses mi_decl_throw, while upstream uses mi_attr_noexcept.
Note: test_cppext.TestInteralCAPI fails on Windows with Python built in release mode if I remove # if !defined(MS_WINDOWS) in Lib/test/test_cppext/extension.cpp. The change is correct: we should continue skipping the two pycore includes on Windows.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fix mimalloc C++ compilation error in debug builds.
The
_mi_assert_faildeclaration usesmi_decl_throw, which expands to__THROW(for__GNUC__). In C,__THROWis__attribute__((__nothrow__))and works anywhere. In C++,__THROWisnoexcept(true), which must come after the parameter list.Before:
After:
This fix also allows removing the
Py_DEBUGguard intest_cppext/extension.cpp, so internal C API headers are now tested in debug builds too.It’s possible this issue was introduced in #122587, though I haven’t verified it
Test:
cc: @vstinner @colesbury @DinoV