use of overloaded operator '<=>' is ambiguous

Description
I want to prepare the next release, but compiling the example file docs/examples/operator_spaceship__const_reference.c++20.cpp fails.
Reproduction steps
Compile file docs/examples/operator_spaceship__const_reference.c++20.cpp.

Delete docs/examples/operator_spaceship__const_reference.c++20.output
Call make -Cdocs create_output

Expected vs. actual results
Expected: No error.
Actual: Compilation error.

[X] I can successfully compile and run the unit tests.

this appear to be libcxx specific, as I couldn't reproduce it until I installed it and set CXX="clang++ -stdlib=libc++"

defining JSON_HAS_THREE_WAY_COMPARISON to 1 fixes the issue.  I see // # define __cpp_lib_three_way_comparison                 201907L in the libcxx sources (at least the revision I have fetched locally).  this trips the check in json.hpp.

Thanks for the hint.
With -DJSON_HAS_THREE_WAY_COMPARISON=1 and Apple Clang, I get:
❯ make create_output
standard
/Library/Developer/CommandLineTools/usr/bin/make examples/operator_spaceship__const_reference.c++20 \
                CPPFLAGS="-I ../single_include -DJSON_USE_GLOBAL_UDLS=0 -DJSON_HAS_THREE_WAY_COMPARISON=1" \
                CXXFLAGS="-std=c++20 -Wno-deprecated-declarations"
c++ -std=c++20 -Wno-deprecated-declarations -I ../single_include -DJSON_USE_GLOBAL_UDLS=0 -DJSON_HAS_THREE_WAY_COMPARISON=1   examples/operator_spaceship__const_reference.c++20.cpp   -o examples/operator_spaceship__const_reference.c++20
In file included from examples/operator_spaceship__const_reference.c++20.cpp:3:
../single_include/nlohmann/json.hpp:22948:33: error: invalid operands to binary expression ('array_t' (aka 'vector<basic_json<std::map, std::vector, string, bool, long long, unsigned long long, double, std::allocator, nlohmann::adl_serializer, vector<unsigned char, allocator<unsigned char>>, void>, allocator<basic_json<std::map, std::vector, string, bool, long long, unsigned long long, double, std::allocator, nlohmann::adl_serializer, vector<unsigned char, allocator<unsigned char>>, void>>>') and 'array_t')
        JSON_IMPLEMENT_OPERATOR(<=>, // *NOPAD*
        ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~
../single_include/nlohmann/json.hpp:22815:52: note: expanded from macro 'JSON_IMPLEMENT_OPERATOR'
                return (*lhs.m_data.m_value.array) op (*rhs.m_data.m_value.array);                                     \
                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^  ~~~~~~~~~~~~~~~~~~~~~~~~~~~
examples/operator_spaceship__const_reference.c++20.cpp:36:79: note: in instantiation of member function 'nlohmann::basic_json<>::operator<=>' requested here
    std::cout << array_1 << " <=> " << array_2 << " := " << to_string(array_1 <=> array_2) << '\n'; // *NOPAD*
                                                                              ^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__threading_support:682:17: note: candidate function not viable: no known conversion from 'array_t' (aka 'vector<basic_json<std::map, std::vector, string, bool, long long, unsigned long long, double, std::allocator, nlohmann::adl_serializer, vector<unsigned char, allocator<unsigned char>>, void>, allocator<basic_json<std::map, std::vector, string, bool, long long, unsigned long long, double, std::allocator, nlohmann::adl_serializer, vector<unsigned char, allocator<unsigned char>>, void>>>') to '__thread_id' for 1st argument
strong_ordering operator<=>(__thread_id __x, __thread_id __y) noexcept {
                ^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__variant/monostate.h:32:49: note: candidate function not viable: no known conversion from 'array_t' (aka 'vector<basic_json<std::map, std::vector, string, bool, long long, unsigned long long, double, std::allocator, nlohmann::adl_serializer, vector<unsigned char, allocator<unsigned char>>, void>, allocator<basic_json<std::map, std::vector, string, bool, long long, unsigned long long, double, std::allocator, nlohmann::adl_serializer, vector<unsigned char, allocator<unsigned char>>, void>>>') to 'monostate' for 1st argument
_LIBCPP_HIDE_FROM_ABI constexpr strong_ordering operator<=>(monostate, monostate) noexcept {
                                                ^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/system_error:481:1: note: candidate function not viable: no known conversion from 'array_t' (aka 'vector<basic_json<std::map, std::vector, string, bool, long long, unsigned long long, double, std::allocator, nlohmann::adl_serializer, vector<unsigned char, allocator<unsigned char>>, void>, allocator<basic_json<std::map, std::vector, string, bool, long long, unsigned long long, double, std::allocator, nlohmann::adl_serializer, vector<unsigned char, allocator<unsigned char>>, void>>>') to 'const error_code' for 1st argument
operator<=>(const error_code& __x, const error_code& __y) noexcept
^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/system_error:489:1: note: candidate function not viable: no known conversion from 'array_t' (aka 'vector<basic_json<std::map, std::vector, string, bool, long long, unsigned long long, double, std::allocator, nlohmann::adl_serializer, vector<unsigned char, allocator<unsigned char>>, void>, allocator<basic_json<std::map, std::vector, string, bool, long long, unsigned long long, double, std::allocator, nlohmann::adl_serializer, vector<unsigned char, allocator<unsigned char>>, void>>>') to 'const error_condition' for 1st argument
operator<=>(const error_condition& __x, const error_condition& __y) noexcept
^
../single_include/nlohmann/json.hpp:2894:34: note: candidate function not viable: no known conversion from 'array_t' (aka 'vector<basic_json<std::map, std::vector, string, bool, long long, unsigned long long, double, std::allocator, nlohmann::adl_serializer, vector<unsigned char, allocator<unsigned char>>, void>, allocator<basic_json<std::map, std::vector, string, bool, long long, unsigned long long, double, std::allocator, nlohmann::adl_serializer, vector<unsigned char, allocator<unsigned char>>, void>>>') to 'const value_t' for 1st argument
    inline std::partial_ordering operator<=>(const value_t lhs, const value_t rhs) noexcept // *NOPAD*
                                 ^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__utility/pair.h:444:1: note: candidate template ignored: could not match 'pair' against 'vector'
operator<=>(const pair<_T1,_T2>& __x, const pair<_T1,_T2>& __y)
^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__iterator/reverse_iterator.h:288:1: note: candidate template ignored: could not match 'reverse_iterator' against 'vector'
operator<=>(const reverse_iterator<_Iter1>& __x, const reverse_iterator<_Iter2>& __y)
^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__iterator/reverse_iterator.h:288:1: note: candidate template ignored: could not match 'reverse_iterator' against 'vector'
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__memory/unique_ptr.h:566:1: note: candidate template ignored: could not match 'unique_ptr' against 'vector'
operator<=>(const unique_ptr<_T1, _D1>& __x, const unique_ptr<_T2, _D2>& __y) {
^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__memory/unique_ptr.h:566:1: note: candidate template ignored: could not match 'unique_ptr' against 'vector'
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__memory/unique_ptr.h:658:1: note: candidate template ignored: could not match 'unique_ptr' against 'vector'
operator<=>(const unique_ptr<_T1, _D1>& __x, nullptr_t) {
^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__memory/unique_ptr.h:658:1: note: candidate template ignored: could not match 'unique_ptr' against 'vector'
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__memory/shared_ptr.h:1374:1: note: candidate template ignored: could not match 'shared_ptr' against 'vector'
operator<=>(shared_ptr<_Tp> const& __x, shared_ptr<_Up> const& __y) noexcept
^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__memory/shared_ptr.h:1374:1: note: candidate template ignored: could not match 'shared_ptr' against 'vector'
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__memory/shared_ptr.h:1483:1: note: candidate template ignored: could not match 'shared_ptr' against 'vector'
operator<=>(shared_ptr<_Tp> const& __x, nullptr_t) noexcept
^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__memory/shared_ptr.h:1483:1: note: candidate template ignored: could not match 'shared_ptr' against 'vector'
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/tuple:1572:1: note: candidate template ignored: could not match 'tuple' against 'vector'
operator<=>(const tuple<_Tp...>& __x, const tuple<_Up...>& __y)
^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/tuple:1572:1: note: candidate template ignored: could not match 'tuple' against 'vector'
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/string_view:784:1: note: candidate template ignored: could not match 'basic_string_view' against 'vector'
operator<=>(basic_string_view<_CharT, _Traits> __lhs, basic_string_view<_CharT, _Traits> __rhs) noexcept {
^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/string_view:797:38: note: candidate template ignored: could not match 'basic_string_view' against 'vector'
_LIBCPP_HIDE_FROM_ABI constexpr auto operator<=>(
                                     ^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/string_view:797:38: note: candidate template ignored: could not match 'basic_string_view' against 'vector'
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/variant:1659:1: note: candidate template ignored: could not match 'variant' against 'vector'
operator<=>(const variant<_Types...>& __lhs, const variant<_Types...>& __rhs) {
^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__iterator/move_iterator.h:282:6: note: candidate template ignored: could not match 'move_iterator' against 'vector'
auto operator<=>(const move_iterator<_Iter1>& __x, const move_iterator<_Iter2>& __y)
     ^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__iterator/move_iterator.h:282:6: note: candidate template ignored: could not match 'move_iterator' against 'vector'
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/string:4077:38: note: candidate template ignored: could not match 'basic_string' against 'vector'
_LIBCPP_HIDE_FROM_ABI constexpr auto operator<=>(
                                     ^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/string:4085:1: note: candidate template ignored: could not match 'basic_string' against 'vector'
operator<=>(const basic_string<_CharT, _Traits, _Allocator>& __lhs, const _CharT* __rhs) {
^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/string:4085:1: note: candidate template ignored: could not match 'basic_string' against 'vector'
In file included from examples/operator_spaceship__const_reference.c++20.cpp:3:
../single_include/nlohmann/json.hpp:22948:33: error: invalid operands to binary expression ('object_t' (aka 'map<std::string, nlohmann::basic_json<std::map, std::vector, std::string, bool, long long, unsigned long long, double, std::allocator, nlohmann::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char>>, void>, less<>, allocator<std::pair<const string, basic_json<std::map, std::vector, string, bool, long long, unsigned long long, double, std::allocator, nlohmann::adl_serializer, vector<unsigned char, allocator<unsigned char>>, void>>>>') and 'object_t')
        JSON_IMPLEMENT_OPERATOR(<=>, // *NOPAD*
        ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~
../single_include/nlohmann/json.hpp:22818:53: note: expanded from macro 'JSON_IMPLEMENT_OPERATOR'
                return (*lhs.m_data.m_value.object) op (*rhs.m_data.m_value.object);                                   \
                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__threading_support:682:17: note: candidate function not viable: no known conversion from 'object_t' (aka 'map<std::string, nlohmann::basic_json<std::map, std::vector, std::string, bool, long long, unsigned long long, double, std::allocator, nlohmann::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char>>, void>, less<>, allocator<std::pair<const string, basic_json<std::map, std::vector, string, bool, long long, unsigned long long, double, std::allocator, nlohmann::adl_serializer, vector<unsigned char, allocator<unsigned char>>, void>>>>') to '__thread_id' for 1st argument
strong_ordering operator<=>(__thread_id __x, __thread_id __y) noexcept {
                ^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__variant/monostate.h:32:49: note: candidate function not viable: no known conversion from 'object_t' (aka 'map<std::string, nlohmann::basic_json<std::map, std::vector, std::string, bool, long long, unsigned long long, double, std::allocator, nlohmann::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char>>, void>, less<>, allocator<std::pair<const string, basic_json<std::map, std::vector, string, bool, long long, unsigned long long, double, std::allocator, nlohmann::adl_serializer, vector<unsigned char, allocator<unsigned char>>, void>>>>') to 'monostate' for 1st argument
_LIBCPP_HIDE_FROM_ABI constexpr strong_ordering operator<=>(monostate, monostate) noexcept {
                                                ^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/system_error:481:1: note: candidate function not viable: no known conversion from 'object_t' (aka 'map<std::string, nlohmann::basic_json<std::map, std::vector, std::string, bool, long long, unsigned long long, double, std::allocator, nlohmann::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char>>, void>, less<>, allocator<std::pair<const string, basic_json<std::map, std::vector, string, bool, long long, unsigned long long, double, std::allocator, nlohmann::adl_serializer, vector<unsigned char, allocator<unsigned char>>, void>>>>') to 'const error_code' for 1st argument
operator<=>(const error_code& __x, const error_code& __y) noexcept
^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/system_error:489:1: note: candidate function not viable: no known conversion from 'object_t' (aka 'map<std::string, nlohmann::basic_json<std::map, std::vector, std::string, bool, long long, unsigned long long, double, std::allocator, nlohmann::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char>>, void>, less<>, allocator<std::pair<const string, basic_json<std::map, std::vector, string, bool, long long, unsigned long long, double, std::allocator, nlohmann::adl_serializer, vector<unsigned char, allocator<unsigned char>>, void>>>>') to 'const error_condition' for 1st argument
operator<=>(const error_condition& __x, const error_condition& __y) noexcept
^
../single_include/nlohmann/json.hpp:2894:34: note: candidate function not viable: no known conversion from 'object_t' (aka 'map<std::string, nlohmann::basic_json<std::map, std::vector, std::string, bool, long long, unsigned long long, double, std::allocator, nlohmann::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char>>, void>, less<>, allocator<std::pair<const string, basic_json<std::map, std::vector, string, bool, long long, unsigned long long, double, std::allocator, nlohmann::adl_serializer, vector<unsigned char, allocator<unsigned char>>, void>>>>') to 'const value_t' for 1st argument
    inline std::partial_ordering operator<=>(const value_t lhs, const value_t rhs) noexcept // *NOPAD*
                                 ^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__utility/pair.h:444:1: note: candidate template ignored: could not match 'pair' against 'map'
operator<=>(const pair<_T1,_T2>& __x, const pair<_T1,_T2>& __y)
^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__iterator/reverse_iterator.h:288:1: note: candidate template ignored: could not match 'reverse_iterator' against 'map'
operator<=>(const reverse_iterator<_Iter1>& __x, const reverse_iterator<_Iter2>& __y)
^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__iterator/reverse_iterator.h:288:1: note: candidate template ignored: could not match 'reverse_iterator' against 'map'
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__memory/unique_ptr.h:566:1: note: candidate template ignored: could not match 'unique_ptr' against 'map'
operator<=>(const unique_ptr<_T1, _D1>& __x, const unique_ptr<_T2, _D2>& __y) {
^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__memory/unique_ptr.h:566:1: note: candidate template ignored: could not match 'unique_ptr' against 'map'
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__memory/unique_ptr.h:658:1: note: candidate template ignored: could not match 'unique_ptr' against 'map'
operator<=>(const unique_ptr<_T1, _D1>& __x, nullptr_t) {
^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__memory/unique_ptr.h:658:1: note: candidate template ignored: could not match 'unique_ptr' against 'map'
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__memory/shared_ptr.h:1374:1: note: candidate template ignored: could not match 'shared_ptr' against 'map'
operator<=>(shared_ptr<_Tp> const& __x, shared_ptr<_Up> const& __y) noexcept
^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__memory/shared_ptr.h:1374:1: note: candidate template ignored: could not match 'shared_ptr' against 'map'
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__memory/shared_ptr.h:1483:1: note: candidate template ignored: could not match 'shared_ptr' against 'map'
operator<=>(shared_ptr<_Tp> const& __x, nullptr_t) noexcept
^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__memory/shared_ptr.h:1483:1: note: candidate template ignored: could not match 'shared_ptr' against 'map'
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/tuple:1572:1: note: candidate template ignored: could not match 'tuple' against 'map'
operator<=>(const tuple<_Tp...>& __x, const tuple<_Up...>& __y)
^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/tuple:1572:1: note: candidate template ignored: could not match 'tuple' against 'map'
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/string_view:784:1: note: candidate template ignored: could not match 'basic_string_view' against 'map'
operator<=>(basic_string_view<_CharT, _Traits> __lhs, basic_string_view<_CharT, _Traits> __rhs) noexcept {
^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/string_view:797:38: note: candidate template ignored: could not match 'basic_string_view' against 'map'
_LIBCPP_HIDE_FROM_ABI constexpr auto operator<=>(
                                     ^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/string_view:797:38: note: candidate template ignored: could not match 'basic_string_view' against 'map'
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/variant:1659:1: note: candidate template ignored: could not match 'variant' against 'map'
operator<=>(const variant<_Types...>& __lhs, const variant<_Types...>& __rhs) {
^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__iterator/move_iterator.h:282:6: note: candidate template ignored: could not match 'move_iterator' against 'map'
auto operator<=>(const move_iterator<_Iter1>& __x, const move_iterator<_Iter2>& __y)
     ^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__iterator/move_iterator.h:282:6: note: candidate template ignored: could not match 'move_iterator' against 'map'
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/string:4077:38: note: candidate template ignored: could not match 'basic_string' against 'map'
_LIBCPP_HIDE_FROM_ABI constexpr auto operator<=>(
                                     ^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/string:4085:1: note: candidate template ignored: could not match 'basic_string' against 'map'
operator<=>(const basic_string<_CharT, _Traits, _Allocator>& __lhs, const _CharT* __rhs) {
^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/string:4085:1: note: candidate template ignored: could not match 'basic_string' against 'map'
In file included from examples/operator_spaceship__const_reference.c++20.cpp:3:
../single_include/nlohmann/json.hpp:22948:33: error: invalid operands to binary expression ('binary_t' (aka 'byte_container_with_subtype<std::vector<unsigned char, std::allocator<unsigned char>>>') and 'binary_t')
        JSON_IMPLEMENT_OPERATOR(<=>, // *NOPAD*
        ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~
../single_include/nlohmann/json.hpp:22839:53: note: expanded from macro 'JSON_IMPLEMENT_OPERATOR'
                return (*lhs.m_data.m_value.binary) op (*rhs.m_data.m_value.binary);                                   \
                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__threading_support:682:17: note: candidate function not viable: no known conversion from 'binary_t' (aka 'byte_container_with_subtype<std::vector<unsigned char, std::allocator<unsigned char>>>') to '__thread_id' for 1st argument
strong_ordering operator<=>(__thread_id __x, __thread_id __y) noexcept {
                ^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__variant/monostate.h:32:49: note: candidate function not viable: no known conversion from 'binary_t' (aka 'byte_container_with_subtype<std::vector<unsigned char, std::allocator<unsigned char>>>') to 'monostate' for 1st argument
_LIBCPP_HIDE_FROM_ABI constexpr strong_ordering operator<=>(monostate, monostate) noexcept {
                                                ^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/system_error:481:1: note: candidate function not viable: no known conversion from 'binary_t' (aka 'byte_container_with_subtype<std::vector<unsigned char, std::allocator<unsigned char>>>') to 'const error_code' for 1st argument
operator<=>(const error_code& __x, const error_code& __y) noexcept
^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/system_error:489:1: note: candidate function not viable: no known conversion from 'binary_t' (aka 'byte_container_with_subtype<std::vector<unsigned char, std::allocator<unsigned char>>>') to 'const error_condition' for 1st argument
operator<=>(const error_condition& __x, const error_condition& __y) noexcept
^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__utility/pair.h:444:1: note: candidate template ignored: could not match 'pair' against 'byte_container_with_subtype'
operator<=>(const pair<_T1,_T2>& __x, const pair<_T1,_T2>& __y)
^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__iterator/reverse_iterator.h:288:1: note: candidate template ignored: could not match 'reverse_iterator' against 'byte_container_with_subtype'
operator<=>(const reverse_iterator<_Iter1>& __x, const reverse_iterator<_Iter2>& __y)
^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__iterator/reverse_iterator.h:288:1: note: candidate template ignored: could not match 'reverse_iterator' against 'byte_container_with_subtype'
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__memory/unique_ptr.h:566:1: note: candidate template ignored: could not match 'unique_ptr' against 'byte_container_with_subtype'
operator<=>(const unique_ptr<_T1, _D1>& __x, const unique_ptr<_T2, _D2>& __y) {
^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__memory/unique_ptr.h:566:1: note: candidate template ignored: could not match 'unique_ptr' against 'byte_container_with_subtype'
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__memory/unique_ptr.h:658:1: note: candidate template ignored: could not match 'unique_ptr' against 'byte_container_with_subtype'
operator<=>(const unique_ptr<_T1, _D1>& __x, nullptr_t) {
^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__memory/unique_ptr.h:658:1: note: candidate template ignored: could not match 'unique_ptr' against 'byte_container_with_subtype'
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__memory/shared_ptr.h:1374:1: note: candidate template ignored: could not match 'shared_ptr' against 'byte_container_with_subtype'
operator<=>(shared_ptr<_Tp> const& __x, shared_ptr<_Up> const& __y) noexcept
^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__memory/shared_ptr.h:1374:1: note: candidate template ignored: could not match 'shared_ptr' against 'byte_container_with_subtype'
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__memory/shared_ptr.h:1483:1: note: candidate template ignored: could not match 'shared_ptr' against 'byte_container_with_subtype'
operator<=>(shared_ptr<_Tp> const& __x, nullptr_t) noexcept
^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__memory/shared_ptr.h:1483:1: note: candidate template ignored: could not match 'shared_ptr' against 'byte_container_with_subtype'
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/tuple:1572:1: note: candidate template ignored: could not match 'tuple' against 'byte_container_with_subtype'
operator<=>(const tuple<_Tp...>& __x, const tuple<_Up...>& __y)
^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/tuple:1572:1: note: candidate template ignored: could not match 'tuple' against 'byte_container_with_subtype'
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/string_view:784:1: note: candidate template ignored: could not match 'basic_string_view' against 'byte_container_with_subtype'
operator<=>(basic_string_view<_CharT, _Traits> __lhs, basic_string_view<_CharT, _Traits> __rhs) noexcept {
^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/string_view:797:38: note: candidate template ignored: could not match 'basic_string_view' against 'byte_container_with_subtype'
_LIBCPP_HIDE_FROM_ABI constexpr auto operator<=>(
                                     ^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/string_view:797:38: note: candidate template ignored: could not match 'basic_string_view' against 'byte_container_with_subtype'
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/variant:1659:1: note: candidate template ignored: could not match 'variant' against 'byte_container_with_subtype'
operator<=>(const variant<_Types...>& __lhs, const variant<_Types...>& __rhs) {
^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__iterator/move_iterator.h:282:6: note: candidate template ignored: could not match 'move_iterator' against 'byte_container_with_subtype'
auto operator<=>(const move_iterator<_Iter1>& __x, const move_iterator<_Iter2>& __y)
     ^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__iterator/move_iterator.h:282:6: note: candidate template ignored: could not match 'move_iterator' against 'byte_container_with_subtype'
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/string:4077:38: note: candidate template ignored: could not match 'basic_string' against 'byte_container_with_subtype'
_LIBCPP_HIDE_FROM_ABI constexpr auto operator<=>(
                                     ^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/string:4085:1: note: candidate template ignored: could not match 'basic_string' against 'byte_container_with_subtype'
operator<=>(const basic_string<_CharT, _Traits, _Allocator>& __lhs, const _CharT* __rhs) {
^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/string:4085:1: note: candidate template ignored: could not match 'basic_string' against 'byte_container_with_subtype'
3 errors generated.
make[1]: *** [examples/operator_spaceship__const_reference.c++20] Error 1
make: *** [examples/operator_spaceship__const_reference.c++20.output] Error 2

And with GCC 13:
❯ CXX=g++-13 make create_output
standard
/Library/Developer/CommandLineTools/usr/bin/make examples/operator_spaceship__const_reference.c++20 \
                CPPFLAGS="-I ../single_include -DJSON_USE_GLOBAL_UDLS=0 -DJSON_HAS_THREE_WAY_COMPARISON=1" \
                CXXFLAGS="-std=c++20 -Wno-deprecated-declarations"
g++-13 -std=c++20 -Wno-deprecated-declarations -I ../single_include -DJSON_USE_GLOBAL_UDLS=0 -DJSON_HAS_THREE_WAY_COMPARISON=1   examples/operator_spaceship__const_reference.c++20.cpp   -o examples/operator_spaceship__const_reference.c++20
ld: warning: ignoring duplicate libraries: '-lgcc'
0  0x101017648  __assert_rtn + 72
1  0x100f4bfac  ld::AtomPlacement::findAtom(unsigned char, unsigned long long, ld::AtomPlacement::AtomLoc const*&, long long&) const + 1204
2  0x100f61924  ld::InputFiles::SliceParser::parseObjectFile(mach_o::Header const*) const + 15164
3  0x100f6ee30  ld::InputFiles::parseAllFiles(void (ld::AtomFile const*) block_pointer)::$_7::operator()(unsigned long, ld::FileInfo const&) const + 420
4  0x183e8f950  _dispatch_client_callout2 + 20
5  0x183ea2ba0  _dispatch_apply_invoke + 176
6  0x183e8f910  _dispatch_client_callout + 20
7  0x183ea13cc  _dispatch_root_queue_drain + 864
8  0x183ea1a04  _dispatch_worker_thread2 + 156
9  0x1840390d8  _pthread_wqthread + 228
ld: Assertion failed: (resultIndex < sectData.atoms.size()), function findAtom, file Relocations.cpp, line 1336.
collect2: error: ld returned 1 exit status
make[1]: *** [examples/operator_spaceship__const_reference.c++20] Error 1
make: *** [examples/operator_spaceship__const_reference.c++20.output] Error 2

seems that GCC discovered a bug in apple's ld there - 'fun'.
fwiw, I was testing against upstream llvm 17, so I'm not sure I can say what's going on on apple clang (but I suspect the <=> impl is incomplete, which'd be implied by the lack of the FTM, even in llvm 17)
sorry, I don't have an apple machine I could dig in further on :-/
I can post the output that GCC produced on my machine, if that helps, though

I really need help here. Beside yet another issue in the CI, this issue blocks the next release.

iirc, this was due to apple clang using outdated libcxx, and libcxx (even newer versions) not having all of three_way_compare implemented.  it worked on my system because we have recent enough libcxx in gentoo, so just telling json.h to ignore the FTM not existing worked well enough.
i'd either use gcc or newer clang and the workaround to get the release out

An example of faking for documentation
    #if JSON_HAS_THREE_WAY_COMPARISON

    // output values and comparisons
    std::cout << array_1 << " <=> " << array_2 << " := " << to_string(array_1 <=> array_2) << '\n'; // *NOPAD*
    std::cout << object_1 << " <=> " << object_2 << " := " << to_string(object_1 <=> object_2) << '\n'; // *NOPAD*
    std::cout << string << " <=> " << number << " := " << to_string(string <=> number) << '\n'; // *NOPAD*
    std::cout << string << " <=> " << discarded << " := " << to_string(string <=> discarded) << '\n'; // *NOPAD*

    #else

    // fake values and comparisons when compiler is not supporting
    std::cout << array_1 << " <=> " << array_2 << " := " << "less" << '\n'; // *NOPAD*
    std::cout << object_1 << " <=> " << object_2 << " := " << "equivalent" << '\n'; // *NOPAD*
    std::cout << string << " <=> " << number << " := " << "greater" << '\n'; // *NOPAD*
    std::cout << string << " <=> " << discarded << " := " << "unordered" << '\n'; // *NOPAD*

    #endif

writing definition explicitly for operator <=> is one of the solutions unless we want to wait for clang to include this definition for our consumption.

Hey there, this worked on my g++.exe (MinGW-W64 x86_64-ucrt-posix-seh, built by Brecht Sanders, r2) 14.2.0 compiler perfectly and didn't create an error. The operator worked fine , and haven't done any changes to the code you have provided. I ran it on my Windows 10 Environment.
Here is the output.
PS C:\Users\Agasthya Samyak Jnan\JSON\json\docs\examples> ./operator_spaceship
[1,2,3] <=> [1,2,4] := less
{"A":"a","B":"b"} <=> {"A":"a","B":"b"} := equivalent
"foo" <=> 17 := greater
"foo" <=>  := unordered
I think the issue is Apple Clang Compiler Specific?
I am a beginner, so I couldn't figure out much in this. Operator overloading was not needed since it worked for me directly.


Fuzzer fails on expression with regex_replace Spark function

Bug description
To reproduce, run
spark_expression_fuzzer_test --enable_variadic_signatures --lazy_vector_generation_ratio 0.2 --velox_fuzzer_enable_column_reuse --velox_fuzzer_enable_expression_reuse --max_expression_trees_per_step 2 --retry_with_try --duration_sec 1800 --logtostderr=1 --minloglevel=0 --seed 532472015

I20231204 08:41:41.080447 420554 ExpressionFuzzerVerifier.cpp:451] ==============================> Started iteration 0 (seed: 532472015)
I20231204 08:41:41.085498 420554 ExpressionVerifier.cpp:97] Executing expression 0 : regex_replace("c0",least(o'TB-#q4~K"Xc5sX{^Js-nVOHUAo?w:-.]sC^d&5Sn'eLzMwg4chYq-'w_|t[Ec[Ht\bh#/n@!tV>vdf,sha1("c1"),null),regex_replace("c2",least(o'TB-#q4~K"Xc5sX{^Js-nVOHUAo?w:-.]sC^d&5Sn'eLzMwg4chYq-'w_|t[Ec[Ht\bh#/n@!tV>vdf,sha1("c1"),null),sha1("c1"),7820211085474237582),4480153776208645342)
I20231204 08:41:41.112323 420554 FuzzerToolkit.cpp:103] Exceptions match.
I20231204 08:41:41.112435 420554 ExpressionFuzzerVerifier.cpp:501] Both paths failed with compatible exceptions. Retrying expression using try().
I20231204 08:41:41.112671 420554 ExpressionVerifier.cpp:97] Executing expression 0 : try(regex_replace("c0",least(o'TB-#q4~K"Xc5sX{^Js-nVOHUAo?w:-.]sC^d&5Sn'eLzMwg4chYq-'w_|t[Ec[Ht\bh#/n@!tV>vdf,sha1("c1"),null),regex_replace("c2",least(o'TB-#q4~K"Xc5sX{^Js-nVOHUAo?w:-.]sC^d&5Sn'eLzMwg4chYq-'w_|t[Ec[Ht\bh#/n@!tV>vdf,sha1("c1"),null),sha1("c1"),7820211085474237582),4480153776208645342))
E20231204 08:41:41.149097 420554 Exceptions.h:69] Line: /Users/mbasmanova/cpp/velox-1/velox/expression/tests/ExpressionVerifier.cpp:82, Function:operator(), Expression: left->equalValueAt(right.get(), row, row) Different results at idx '4': 'null' vs. 'fk2WNxd8Hs'DlQb}w{o>FN/w)jhf9u8_cZ6|i')KLA1l6vF-IKPY`)38TqAS7.rlzt', Source: RUNTIME, ErrorCode: INVALID_STATE
I20231204 08:41:41.149194 420554 ExpressionVerifier.cpp:263] Skipping persistence because repro path is empty.
libc++abi: terminating due to uncaught exception of type facebook::velox::VeloxRuntimeError: Exception: VeloxRuntimeError
Error Source: RUNTIME
Error Code: INVALID_STATE
Reason: Different results at idx '4': 'null' vs. 'fk2WNxd8Hs'DlQb}w{o>FN/w)jhf9u8_cZ6|i')KLA1l6vF-IKPY`)38TqAS7.rlzt'
Retriable: False
Expression: left->equalValueAt(right.get(), row, row)
Function: operator()
File: /Users/mbasmanova/cpp/velox-1/velox/expression/tests/ExpressionVerifier.cpp
Line: 82

CC: @rui-mo @codyschierbeck
System information
n/a
Relevant logs
No response

@codyschierbeck Any chance you could take a look into this? This is failing on many PRs.

Okay, looking into it now.
On Fri, Dec 15, 2023 at 2:17 PM Maria Basmanova @.***>
wrote:

@codyschierbeck https://github.com/codyschierbeck Any chance you could
take a look into this? This is failing on many PRs.
—
Reply to this email directly, view it on GitHub
https://github.com/facebookincubator/velox/issues/7856#issuecomment-1858500666,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ADRYPMTKIKBIE6BIGGUYEQ3YJS467AVCNFSM6AAAAABAGAFYR2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQNJYGUYDANRWGY
.
You are receiving this because you were mentioned.Message ID:
@.***>

@codyschierbeck Thank you.

@codyschierbeck We will remove it from registry while the function name & fuzzer is being fixed, is that ok for you?

@mbasmanova How is the fuzzer generating expressions? In my attempts to replicate I am getting a different error:
terminate called after throwing an instance of 'facebook::velox::VeloxUserError'
what():  Exception: VeloxUserError
Error Source: USER
Error Code: INVALID_ARGUMENT
Reason: Scalar function regexp_replace not registered with arguments: (VARCHAR, VARCHAR). Found function registered with the following signatures:
((varchar,varchar,varchar,bigint) -> varchar)
((varchar,varchar,varchar) -> varchar)
Pasting the relevant part of the expression then the entire expression.
regexp_replace("c1",+!~TreZnqG!Hl*QAC4ES<18$j,~S7aO@j$>=](jAi/"Pld33JIDK(e2.LU4`Q3h6xCi9rZ^)).
From what I can tell, the fuzzer is trying to create an expression that works for regexp_replace, but for some reason the above line parses to (VARCHAR, VARCHAR) instead of any of the supported signatures.
Here is the entire expression.
Executing expression 0 : try(greatest("c0",endswith(o'TB-#q4~K"Xc5sX{^Js-nVOHUAo?w:-.]sC^d&5Sn'eLzMwg4chYq-'w_|t[Ec[Ht\bh#/n@!tV>vdf,Zq]Lk#+P:f7cl7M?a'1u)ub6w-{A:'"P?^mB),endswith(o'TB-#q4~K"Xc5sX{^Js-nVOHUAo?w:-.]sC^d&5Sn'eLzMwg4chYq-'w_|t[Ec[Ht\bh#/n@!tV>vdf,Zq]Lk#+P:f7cl7M?a'1u)u\b6w-{A:'"P?^mB),endswith(8cPYq+>(A(|5HIqP,regexp_replace("c1",+!~TreZnqG!Hl*QAC4ES<18$j,~S7aO@j$>=,greaterthanorequal("c2",DF-4&x9^[{aXv[qOj}{!7bygwNR:g-m7'zvw\7JR6qdZ+;R}W:|X$=P!pxZo74!7a>R2LtC}),null))

@codyschierbeck Cody, which command are you using? What are the command line options you are passing?

I ran the following command:
_build/debug/velox/expression/tests/spark_expression_fuzzer_test --enable_variadic_signatures --lazy_vector_generation_ratio 0.2 --velox_fuzzer_enable_column_reuse --velox_fuzzer_enable_expression_reuse --max_expression_trees_per_step 2 --retry_with_try --duration_sec 1800 --logtostderr=1 --minloglevel=0 --seed 532472015
This was in an attempt to replicate as you explained above. I rebased my fork to match the current changes in the repository. I am not super familiar with how the fuzzer works, but from what I read in the documentation we may be getting different fuzzer behavior with the same seed due to platform differences.
This could be cased by different behaviors of random generator on different platforms
I am running on Intel(R) Xeon(R) Platinum 8360Y CPU.

@codyschierbeck Cody, I see. Maybe do some debugging to figure out what's going on.
CC: @kagamiori

Hi @codyschierbeck, thank you for helping investigate the issue! Regarding your question,

How is the fuzzer generating expressions?

Expression fuzzer picks a random function signature among all registered ones, and for each of its parameter, pick another random function signature that could return that parameter type, or generate a vector containing random data of the parameter type as the input column. I'm not sure why the fuzzer attempt to generate incorrect number of arguments in your case because I think only regex_replace was registered in spark.
But I managed to reproduce a similar error as what @mbasmanova described originally on a more recent commit. Could you try the following command on the commit c6ad4bce13188d6934608efba82367711ea6171e?
/path/to/your/spark_expression_fuzzer_test --duration_sec 60 --enable_variadic_signatures --lazy_vector_generation_ratio 0.2 --velox_fuzzer_enable_column_reuse --velox_fuzzer_enable_expression_reuse --max_expression_trees_per_step 2 --retry_with_try --enable_dereference --seed<PHONE_NUMBER> --logtostderr=1 --minloglevel=0

This command gives me the following error.
I20231218 11:09:54.807032 14304714 ExpressionFuzzerVerifier.cpp:308] ==============================> Started iteration 0 (seed:<PHONE_NUMBER>)
I20231218 11:09:54.808187 14304714 ExpressionVerifier.cpp:97] Executing expression 0 : regex_replace(substring_index(bin(6188141833437959806),"c0",1762469232),trim("c0"),substring_index(bin(6188141833437959806),"c0",1762469232))
I20231218 11:09:54.811709 14304714 FuzzerToolkit.cpp:103] Exceptions match.
I20231218 11:09:54.811741 14304714 ExpressionFuzzerVerifier.cpp:358] Both paths failed with compatible exceptions. Retrying expression using try().
I20231218 11:09:54.811776 14304714 ExpressionVerifier.cpp:97] Executing expression 0 : try(regex_replace(substring_index(bin(6188141833437959806),"c0",1762469232),trim("c0"),substring_index(bin(6188141833437959806),"c0",1762469232)))
/Users/weihe/Development/presto_upstream/presto-native-execution/re2/re2/re2.cc:205: Error parsing 'N<Z]?B7^.DarIIF}@dj7e{olG]2\(I)2f6u??(sO'uJ`*H': unexpected ): N<Z]?B7^.DarIIF}@dj7e{olG]2\(I)2f6u??(sO'uJ`*H
...
E20231218 11:09:54.828224 14304714 Exceptions.h:69] Line: /Users/weihe/Development/velox/velox/expression/tests/ExpressionVerifier.cpp:82, Function:operator(), Expression: left->equalValueAt(right.get(), row, row) Different results at idx '15': '[15->93] null' vs. '101010111100000101100100011011000011001110011011101011001111110', Source: RUNTIME, ErrorCode: INVALID_STATE
I20231218 11:09:54.828271 14304714 ExpressionVerifier.cpp:263] Skipping persistence because repro path is empty.
libc++abi: terminating due to uncaught exception of type facebook::velox::VeloxRuntimeError: Exception: VeloxRuntimeError
Error Source: RUNTIME
Error Code: INVALID_STATE
Reason: Different results at idx '15': '[15->93] null' vs. '101010111100000101100100011011000011001110011011101011001111110'
Retriable: False
Expression: left->equalValueAt(right.get(), row, row)
Function: operator()
File: /Users/weihe/Development/velox/velox/expression/tests/ExpressionVerifier.cpp
Line: 82

@mbasmanova @kagamiori
I have discovered what is going wrong, but I am still working on a solution.
It appears the underlying buffer pointer for "pattern" is being modified in the code at some point. So when the fuzzer passes in the buffer on its second and third attempts, it is passing in different input and thus we are getting different output. I am trying to find what part of the code is making these modifications because as far as I can tell everything is being passed as constant references.
Here are some screenshots that show this modification.
First fuzzer pass:

Second fuzzer pass:

Not included in these screenshots is the value of pattern.size_, which is 21. The value of pattern found in the second image occurs at index 22 of the first image, it appears the buffer is being iterated by exactly "size_" with each call.

@mbasmanova @kagamiori I believe I have resolved the issue. The fuzzer sees that the call function returns void, so when we find issues with regexes or parameters and throw an exception the fuzzer fails because it did not expect that.
I tried two ways of modifying the code. At first I used the documentation that says Simple functions are compatible with the TRY expression by default. The framework wraps the “call” and “callNullable” methods in a try-catch and reports errors using context.setError., so I just changed the functions to return booleans, and added return true to wherever it was required.
This still broke the fuzzer. But when I changed all the VELOX_USER_CHECKs to just checks that return false, the fuzzer did not break.
I don't why this is the case. Do you have ideas?

@mbasmanova @kagamiori I tried to setup two commits on my branch to showcase the issue described above, but now I am running into the same error I was getting before:

Here are the registration functions:

Why is the fuzzer trying to supply regexp_replace with incorrect parameters?

Hi @codyschierbeck, thank you for looking into the error!

It appears the underlying buffer pointer for "pattern" is being modified in the code at some point. So when the fuzzer passes in the buffer on its second and third attempts, it is passing in different input and thus we are getting different output...

I wonder whether this is because every input row has a different "pattern" argument. This could also explain your observation: "The value of pattern found in the second image occurs at index 22 of the first image, it appears the buffer is being iterated by exactly "size_" with each call."

so I just changed the functions to return booleans, and added return true to wherever it was required. This still broke the fuzzer.

I think it's because void call(...) is equivalent to bool call(...) that always returns true.

But when I changed all the VELOX_USER_CHECKs to just checks that return false, the fuzzer did not break.

When call(...) throw an exception and when the expression is wrapped in try(), the exception is caught and try() set the result at the corresponding row to NULL. So when you make the VELOX_USER_CHECK throw on all input rows, the result becomes an all-NULL vector. It's good to know that in this situation, the results from the regular expression evaluator and the simplified expression evaluator match. (There is a description about how expression fuzzer work in the first 3 paragraphs in https://facebookincubator.github.io/velox/develop/testing/fuzzer.html#expression-and-aggregation-fuzzer.)
I'll take a look at the issue where fuzzer generate less arguments than expected tomorrow.

Hi @codyschierbeck, I'm not able to reproduce the error of "Scalar function not registered with arguments (VARCHAR, VARCHAR)" because my fuzzer test keeps hitting the error of different results. Could you share the commit where you ran the fuzzer and hit the "Scalar function not registered..." error and the seed? If you hit that error with your local change, could you publish your change as a draft so that I can patch it?

Hi @kagamiori, draft PR is here @ #8132
Commit is: 1fa1fecc962e016b816a95877a0ac2c74dc5eaa0
Having issues with this branch, specifically with squashing commits. Please let me know if you need a fresh branch to replicate.

Hi @kagamiori, draft PR is here @ #8132
Commit is: 1fa1fec
Having issues with this branch, specifically with squashing commits. Please let me know if you need a fresh branch to replicate.

Thanks, @codyschierbeck! I'm able to reproduce that error. I'll take a look.

Hi @kagamiori, draft PR is here @ #8132
Commit is: 1fa1fec
Having issues with this branch, specifically with squashing commits. Please let me know if you need a fresh branch to replicate.

Hi @codyschierbeck, this is a bug in ExpressionFuzzer. What happens is that ExpressionFuzzer incorrectly generates arguments for regexp_replace based on Presto's regexp_replace function signatures. Would you be interested in helping fix this issue? More details can be found here: https://github.com/facebookincubator/velox/issues/8157.

Hi @kagamiori, I would love to help out. It's a part of the codebase that I am not familiar with, but your explanation in the https://github.com/facebookincubator/velox/issues/8157 is a great place for me to start.
I'll get started tomorrow.


test: temporarily disable most of the throughput tests

Although the PR built and tested fine, the merged build keeps
timing out with no log output. Let's see if the throughput tests
are causing a problem.
Signed-off-by: David Scott<EMAIL_ADDRESS>

This patch was merged a while ago as part of another PR.


coffee-coverage and CoffeeScript 1.11.x (ES2015 modules)

With the release of 1.11, CoffeeScript has begun moving toward the ES2015+ standard. In particular, CoffeeScript now supports ES2015 import/export directives.
These do not play well with coffee-coverage right now, producing errors like this:
> mocha --recursive --compilers coffee:coffee-script/register --require coffee-coverage/register-istanbul

/Users/wcj/dev/ormojo/node_modules/ormojo/node_modules/coffee-coverage/lib/coffeeCoverage.js:321
      throw new CoverageError("Could not compile " + fileName + " after instrumenting: " + err.stack);
      ^
CoverageError: Could not compile /Users/wcj/dev/ormojo/node_modules/ormojo/src/Backend.coffee after instrumenting: SyntaxError: export statements must be at top-level scope

Presumably, export and import statements should simply be ignored when instrumenting, as they are meant to be declarative.

I'm currently having troubles with this too. I've toyed with this a bit, this error is caused because the code is instrumented by default with the bare options set to false by default.
It's still unclear to me how we can set this options when using coffee-coverage/register-istanbul.
Anyway, code compiled with bare blow mocha anyway, as mocha doesn't understand the import statement, and we can't chain coffee-coverage/register-istanbul or coffee-script/registerwithbabel-register`.
Out of curiosity, @wcjohnson did you find a solution which doesn't involve to compile your sources before running the tests?

@Florian-R
I'm afraid not. I've just been running coverage on the transpiled code, then mentally translating it back to the CoffeeScript. It's workable but ugly.

I've achieved something that does the job. See chaplinjs/chaplin#895.
I'd like to get rid of having to define the global variable manually, but this breaks with babel-register. Here, the coverageVar is set as a global if not defined, and this don't play well with use strict.
@jwalton will you be OK with a PR that switch to something like ?
init = """
  if (typeof #{@coverageVar} === 'undefined') global.#{@coverageVar} = {};

@Florian-R Yeah, if you can do this correctly for browsers, I'm happy with it.
If you want to try compiling with bare: true you need to write a custom loader to use in place of coffee-coverage/register-istanbul.
@wcjohnson coffee-script compiles this to a JS file with imports and exports in it, yes?  But node 6/7 don't support import and export natively, so how are you even going to run this?  Does it go through Babel afterwards?  If you have a sample project, I'd be interested in seeing it.

@jwalton
Yes, coffee-script passes the statement through, and indeed Node does not handle ES2015 modules (and won't for awhile, according to the word on the street) -- but I'm writing isomorphic code and on the browser side things are moving more quickly.
There is a Babel step at the end of my build chain that generates a CommonJS build and an ES2015 build. The tests are run in Node under the CommonJS build.
This project uses my current best build and coverage chain:
https://github.com/wcjohnson/redux-components
You will need to have nyc installed; then npm run coverage should work.
As I said above, since moving away from coffee-coverage I'm stuck just transpiling and running coverage on the resulting JS, then "mentally translating" the coverage reports back to CS. I've tried source maps and they just don't work right. It would be nice to run through coffee-coverage for proper instrumentation, then through Babel.

I think this can be done.  Back when I first started integrating with
Istanbul, they'd use a randomly generated coverage variable, which was
obnoxious because you couldn't instrument your code ahead-of-time, but I'm
pretty sure nyc always uses "coverage".  I'll clone your project and
see what I can do.
On Feb 26, 2017 12:54, "William C. Johnson"<EMAIL_ADDRESS>wrote:

@jwalton https://github.com/jwalton
Yes, coffee-script passes the statement through, and indeed Node does not
handle ES2015 modules (and won't for awhile, according to the word on the
street) -- but I'm writing isomorphic code and on the browser side things
are moving more quickly.
There is a Babel step at the end of my build chain that generates a
CommonJS build and an ES2015 build. The tests are run in Node under the
CommonJS build.
This project uses my current best build and coverage chain:
https://github.com/wcjohnson/redux-components
You will need to have nyc installed; then npm run coverage should work.
As I said above, since moving away from coffee-coverage I'm stuck just
transpiling and running coverage on the resulting JS, then "mentally
translating" the coverage reports back to CS. I've tried source maps and
they just don't work right. It would be nice to run through coffee-coverage
for proper instrumentation, then through Babel.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/benbria/coffee-coverage/issues/82#issuecomment-282573638,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ABsF-4opDi7T1lXTKcpR4IMcvRab0DE1ks5rgbxBgaJpZM4KkM-O
.


Mentions Log Analytics Agent but not the Azure Monitor Agent

Hi,
This mentions that the ARC connected machine agent does not replace the log analytics agent but is there an assumption that this also does not replace the Azure Monitor Agent either? LA agent is deprecated and being replaced by AMA...
Thanks
Alex

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: f4debb68-9d24-ec7e-dd09-0ea02e150265
Version Independent ID: 477928d8-2c58-297f-28aa-6c93b535d2a1
Content: Azure Arc-enabled servers Overview - Azure Arc
Content Source: articles/azure-arc/servers/overview.md
Service: azure-arc
Sub-service: azure-arc-servers
GitHub Login: @johnmarco
Microsoft Alias: johnmarc

@AlexcFrench Thanks for reaching out! This Arc Connected Machine agent doesn't replace the AMA (Azure Monitor Agent) as well because as per this Azure document, AMA will replace Log Analytics agent, Telegraf agent and Diagnostics extension.

Thanks Krishna, appreciate the quick reply.
I understand the impact but the page only mentions the Log Analytics Agent
and not the AMA - could it be updated to mention both agents ?
On Wed, 18 May 2022 at 14:11, KrishnaG-MSFT @.***>
wrote:

@AlexcFrench https://github.com/AlexcFrench Thanks for reaching out!
This Arc Connected Machine agent doesn't replace the AMA (Azure Monitor
Agent) as well because as per this
https://docs.microsoft.com/en-us/azure/azure-monitor/agents/azure-monitor-agent-overview?tabs=PowerShellWindows#relationship-to-other-agents
Azure document, AMA will replace Log Analytics agent, Telegraf agent and
Diagnostics extension.
—
Reply to this email directly, view it on GitHub
https://github.com/MicrosoftDocs/azure-docs/issues/93087#issuecomment-1129998923,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AMA2YEW7BLA33RDJ7XSWHOTVKTT6ZANCNFSM5WIMPKGA
.
You are receiving this because you were mentioned.Message ID:
@.***>

Sure. I will make sure it's updated to avoid any confusion.

Great, thank you
On Thu, 19 May 2022, 04:26 KrishnaG-MSFT, @.***> wrote:

Sure. I will make sure it's updated to avoid any confusion.
—
Reply to this email directly, view it on GitHub
https://github.com/MicrosoftDocs/azure-docs/issues/93087#issuecomment-1131146896,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AMA2YEXE75ZC67EIRVP3TITVKWYE7ANCNFSM5WIMPKGA
.
You are receiving this because you were mentioned.Message ID:
@.***>

@AlexcFrench We have verified and updated the document as required. Thanks again!


coc, hie, ghci stack ... ghci cannot find the modules defined by the project

Hello -
I moved from a prior config using ALE and others to the new hie.  I'm excited about what you all have accomplished.  I'm getting the following error:
Could not find module ‘DB.API’ Use -v (or `:set -v` in ghci) to see a list of the files searched for. |22 | import qualified DB.API as Lib
etc... for all of the modules defined in my project

Despite my best judgment, I have hie installed globally.  However, I have package.yaml and hie.yaml in my project root folder.
cradle:
  stack:
    component: "haskell-ide-engine:lib"

dependencies:
  - package.yaml

Also, when I run hie from my root folder, it echoes/prints the project file names.
A. Am I "barking up the right tree" reaching out to the hie team?
B. If A, then what am I missing to get ghci to see my project modules?
Thank you in advance!
- E

Yes, you have barked up the right tree :)
The hie.yaml looks like it has been copied from some other example.
It should reflect a map from filepaths to components. Components in haskell are things like library, executable, test or benchmark.
For example, a simplified hie.yaml for HIE codebase:
cradle:
  stack:
    - path: "./hie-plugin-api/"
      component: "hie-plugin-api:lib"

    - path: "./app/MainHie.hs"
      component: "haskell-ide-engine:exe:hie"

    - path: "./app/HieWrapper.hs"
      component: "haskell-ide-engine:exe:hie-wrapper"

    - path: "./"
      component: "haskell-ide-engine:lib"

Here we say, any FilePath that starts with hie-plugin-api should be loaded by hie-plugin-api:lib. It resembles the invocation stack repl hie-plugin-api:lib which we use to obtain the compilation flags for the component hie-plugin-api:lib. When we have those we can compile the component and provide diagnostics.
We can also provide a File, not only directories, as seen with ./app/MainHie.hs.
This is the path to the executable haskell-ide-engine:exe:hie which needs to be loaded by HIE to actually typecheck the modules.
You need to provide something equivalent for your codebase. The components in your project can be obtained with stack ide targets.

Thank you for your help.  The information was useful.  I used the stack repl xxx command to test each entry into the configuration.  It seems to work.  However, in nvim I'm getting errors for all of my imports... It seems like I have to  package.yaml -> hie.yaml..?
I installed hie using the default script; this uses the latest supported ghc version.  That seems to be 8.8.2 based on what I can see in the list of hie-xxx links in my ~/.local/bin directory.
However, I get these warning messages when installing hie:
# stack (for hie-8.8.2)
Stack has not been tested with GHC versions above 8.6, and using 8.8.2, this may fail
Stack has not been tested with Cabal versions above 2.4, but version <IP_ADDRESS> was found, this may fail

Is this something I need to consider when troubleshooting? (my app lts is set to a value that uses the same, 8.8.2 version of ghc.  I could imagine that it's mostly not something to worry about given my use of the default script and what it promises: "using the latest supported ghc".
Despite this logic, the "more I can do" is to install hie with 8.6.5 and ditto for my app... I'm not getting the warning but still have the same problem.
Here is my updated hie.yam where each entry is the output of stack ide targests:
cradle:
  stack:
    - path: "./app/Main.hs"
      component: "mms:exe:mms-exe"

    - path: "./src"
      component: "mms:lib"

    - path: "./tests/Spec.hs"
      component: "mms:test:mms-test"

Running HIE(hie-8.6.5)
 Version 1.2, Git revision 35f62cffb6bae6c3f86113cb0c55f52b7192689d (3841 commits) x86_64 ghc-8.6.5

this hints that hie version 8.6.5 is used for some reason. Is your resolver updated to use the same ghc version?
Could you paste the full output of hie-wrapper --debug?
the rest seems pretty reasonable and seems like the executable can not be loaded?
BTW, the error about "Setup.hs" is fine.

Unbelievable -- hie seems to be behaving as expected.  The funny thing was, when I sent the commands from the root project, it seemed to know where the files were. But, I was getting errors in nvim.
The issue: I still had ale loading up and had only partially disabled it
Solution: remove or otherwise completely disable ale
Also, there were several prior fixes to help the prior haskell stack of tools find the root directory among others e.g., haskell_stack_bin.  I commented them out "to be safe".
For the next person, what was helpful were the following; once I could confirm the configuration, I was finally able to get expand my imagination for what could be going on.

Knowing which entries to include in the hie.yaml configuration using stack ide targets (fool proof)
manually testing each of the entries using stack repl xxx
confirming which version of ghci stack was using using stack ghci --ghci-options --version (totally obvious that stack will chose the right ghc version, but when things go wrong it's nice to be reminded)
in hindsight, not worrying about the warning re using the latest ghc version (the builds take time)

Thank you for your help.
- E

... FYI: In my statement regarding stack ghci --ghci-options --version  I thought that the ghc version would always align with what we would expect given the lts setting in stack.yaml.  However, I'm getting ghc version 8.8.3 with lts-15.3.  I would have expected 8.8.2 (see https://www.stackage.org/lts-15.3)
It's turning out to be an issue as I try to coordinate my hie build version with the app I'm working on with hie.


feat(bin/projext): add log messages for all the steps

What does this PR do?
This has been bothering me for some time now: the bin commands are SLOW. My theory is that the problem is a mix of sync calls on the file system and commander.
On the long run, the idea is to fix those issues (go async when possible and replace commander), but for now, I added more log mesages on the binary so you can at least know what's happening while you wait.
How should it be tested manually?
Install the branch and try running a target, you'll see step by step what is projext doing.

Pull Request Test Coverage Report for Build 284

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 100.0%

Totals

Change from base Build 281:
0.0%

Covered Lines:
2144

Relevant Lines:
2144

💛  - Coveralls


Add armv7 & aarch64 build artifacts to the build workflow

Description of your pull request and other information

Adds another build job to the github CI pipeline to produce yt-dlp artifacts for linux_aarch64 and linux_armv7l. Namely, this has been achieved using a virtual QEMU build environment. Note that a consequence of the new dockerized build step is that the combined build time has increased quite substantially, but I think this is a tradeoff worth making considering the potential pay-off.
Resolves #5436
Template

Before submitting a pull request make sure you have:

[x] At least skimmed through contributing guidelines including yt-dlp coding conventions
[x] Searched the bugtracker for similar pull requests
[x] Checked the code with flake8 and ran relevant tests

In order to be accepted and merged into yt-dlp each piece of code must be in public domain or released under Unlicense. Check one of the following options:

[x] I am the original author of this code and I am willing to release it under Unlicense
[x] I am not the original author of this code but it is in public domain or released under Unlicense (provide reliable evidence)

What is the purpose of your pull request?

[ ] Fix or improvement to an extractor (Make sure to add/update tests)
[ ] New extractor (Piracy websites will not be accepted)
[x] Core bug fix/improvement
[] New feature (It is strongly recommended to open an issue first)

Related: https://github.com/yt-dlp/yt-dlp/pull/5423. I'll merge that one first and then we'll have to modify this accordingly

It should be noted that there is no armv7l Miniconda installer, and that The linux-aarch64 Miniconda installer requires glibc >=2.26 and thus will not work with CentOS 7, Ubuntu 16.04, or Debian 9 (“stretch”).. As stated in the conda docs


JW Player Demo is broken

https://dador.github.io/JavascriptSubtitlesOctopus/jwplayer.html
It seems that a file the demo relies on has disappeared. Thankfully, the file in question is well-preserved

Thank you for reporting!
I've fixed the issue.


[Test] Guard SwiftNativeNSXXXCoding tests behind #available(9999).

These tests fail when run against older runtimes since they don't have the fix.
rdar://problem/50504800

@swift-ci please test

Build failed
Swift Test Linux Platform
Git Sha - 5a8a0a816efe4f7eb1df6106b6f0e093ddb99de7

@swift-ci please test linux platform

Build failed
Swift Test Linux Platform
Git Sha - 5a8a0a816efe4f7eb1df6106b6f0e093ddb99de7

@swift-ci please test linux platform


miscellaneous quote changes

Closes #57

clean up the whole "quote categories" thing; everyone seems happy with fake users and this makes the code a lot simpler
.q/.lq now return null instead of throw exceptions to deal with benign errors like a user having zero quotes, which provides better typings and makes it far less annoying to run these commands under a debugger
.q/.lq's implementations now work with userIds instead of confusingly treating a non-member user as if they were a category
.q/.lq now prefer to output @mentions over name#1234
.help <quotealias> is now a thing
a lot of redundant code was deduplicated

There's always more that could be done (the add/remove/alias commands could be similarly modernized, we could remove the Quote type entirely, quote storage could be migrated to no longer stringify userIds, .help's other codepaths could search quotealiases for suggestions...), but this is good enough that I consider the issue of polishing quotes to be completed until we get asked to change stuff.

Welp, just like at my day job, it looks like we're gonna have to ignore CI because CI itself broke on us for no apparent reason


chore(dropdown): refactored returns in getDerivedStateFromProps

Returned object to merge into the state or null.

Warnings

:warning:
There are no updates provided to CHANGELOG. Ensure there are no publicly visible changes introduced by this PR.

  Generated by :no_entry_sign: dangerJS


Convert strings in context to unicode

Make strings in context unicode by default. This will avoid problems with manipulating strings of mix ascii and unicode type in expressions.

Codecov Report

Merging #98 into master will increase coverage by 0.06%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master      #98      +/-   ##
==========================================
+ Coverage   94.11%   94.17%   +0.06%
==========================================
  Files          38       38
  Lines        2309     2334      +25
  Branches      453      459       +6
==========================================
+ Hits         2173     2198      +25
  Misses         79       79
  Partials       57       57

Impacted Files
Coverage Δ

orquesta/expressions/yql.py
90% <100%> (+0.75%)
:arrow_up:

orquesta/utils/strings.py
100% <100%> (ø)
:arrow_up:

orquesta/expressions/jinja.py
92.48% <100%> (+0.29%)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update ad06833...363ab08. Read the comment docs.


Autofill on web doesn't work with semantics enabled

Is there an existing issue for this?

[X] I have searched the existing issues
[X] I have read the guide to filing a bug

Steps to reproduce

Launch flutter application without RendererBinding.instance.setSemanticsEnabled(true);
Fill out the form, reload the app
Autofill popup appears in top right corner
Launch flutter application with RendererBinding.instance.setSemanticsEnabled(true);
Observe that there is no key icon in url field and after reload the autofill popup doesn't appear

Expected results
Autofill is working when RendererBinding.instance.setSemanticsEnabled(true);
Actual results
Autofill is not working when RendererBinding.instance.setSemanticsEnabled(true);
Code sample
Code sample
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
import 'package:flutter/services.dart';

void main() {
  runApp(const MyApp());
  RendererBinding.instance.setSemanticsEnabled(true);
}

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({Key? key, required this.title}) : super(key: key);

  final String title;

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;

  void _incrementCounter() {
    setState(() {
      _counter++;
    });
  }

  TextEditingController username = TextEditingController();
  TextEditingController newPassword = TextEditingController();
  TextEditingController repeatNewPassword = TextEditingController();
  TextEditingController password = TextEditingController();

  bool isNewUser = true;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      floatingActionButton: FloatingActionButton(onPressed: () => TextInput.finishAutofillContext()),
      body: AutofillGroup(
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: <Widget>[
            const Text('Username'),
            TextField(controller: username, autofillHints: const [AutofillHints.username]),
            if (isNewUser) ...[
              const Text('Password'),
              TextField(obscureText: true, controller: newPassword, autofillHints: const [AutofillHints.newPassword]),
            ],
            if (isNewUser) ...[
              const Text('repeat password'),
              TextField(controller: repeatNewPassword, autofillHints: const [AutofillHints.newPassword]),
            ],
            if (!isNewUser) TextField(controller: password, autofillHints: const [AutofillHints.password]),
          ],
        ),
      ),
    );
  }
}

Screenshots or Video

Screenshots / Video demonstration
[Upload media here]

Logs
Logs
[Paste your logs here]

Flutter Doctor output
Doctor output
Flutter (Channel unknown, 3.7.7, on macOS 13.3 22E252 darwin-arm64, locale en-PL)
    ! Flutter version 3.7.7 on channel unknown at /Users/gleb/flutter
      Currently on an unknown channel. Run `flutter channel` to switch to an official channel.
      If that doesn't fix the issue, reinstall Flutter by following instructions at https://flutter.dev/docs/get-started/install.
    ! Unknown upstream repository.
      Reinstall Flutter by following instructions at https://flutter.dev/docs/get-started/install.
    • Framework revision 2ad6cd72c0 (8 months ago), 2023-03-08 09:41:59 -0800
    • Engine revision 1837b5be5f
    • Dart version 2.19.4
    • DevTools version 2.20.1
    • If those were intentional, you can disregard the above warnings; however it is recommended to use "git" directly to perform
      update checks and upgrades.

[!] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
    • Android SDK at /Users/gleb/Library/Android/sdk
    ✗ cmdline-tools component is missing
      Run `path/to/sdkmanager --install "cmdline-tools;latest"`
      See https://developer.android.com/studio/command-line for more details.
    ✗ Android license status unknown.
      Run `flutter doctor --android-licenses` to accept the SDK licenses.
      See https://flutter.dev/docs/get-started/install/macos#android-setup for more details.

[✓] Xcode - develop for iOS and macOS (Xcode 14.3.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 14E300c
    • CocoaPods version 1.12.1

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2022.2)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b802.4-9586694)

[✓] VS Code (version 1.82.3)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.74.0

[✓] Connected device (4 available)
    • sdk gphone64 arm64 (mobile) • emulator-5554                        • android-arm64  • Android 14 (API 34) (emulator)
    • iPhone 14 Pro Max (mobile)  • D091ACDC-2D49-4408-84DE-C3443F458CA1 • ios            •
      com.apple.CoreSimulator.SimRuntime.iOS-16-4 (simulator)
    • macOS (desktop)             • macos                                • darwin-arm64   • macOS 13.3 22E252 darwin-arm64
    • Chrome (web)                • chrome                               • web-javascript • Google Chrome 118.0.5993.88

[✓] HTTP Host Availability
    • All required HTTP hosts are available

@GlebZhytkouski
I see that you are on older version of the framework. Current is 3.13.8. Can you upgrade to latest and run your scenario again to check if the behavior still persists on it or not ?

@darshankawar I can reproduce this on stable.

Steps to reproduce

flutter create semantics_sample
paste the code sample
comment out ensureSemantics()
flutter run -d chrome
fill in the username field
fill in the password field
6a) if now using Tab to go to the next field, the autofill dialog is shown
6b) the dialog is also shown when clicking the repeat password field
6c) the dialog is not shown when the focus leaves the autofill group, probably intended
Press the save button in the dialog
Reload the app (refresh in browser or restart with terminal)
Double click the password field
Select the saved password
quit the app
enable ensureSemantics()
run the app again
try to repeat step 9 & 10
autofill information is not present

Code sample
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
import 'package:flutter/services.dart';

void main() {
  runApp(const MyApp());
  RendererBinding.instance.ensureSemantics();
}

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({Key? key, required this.title}) : super(key: key);

  final String title;

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  TextEditingController username = TextEditingController();
  TextEditingController newPassword = TextEditingController();
  TextEditingController repeatNewPassword = TextEditingController();
  TextEditingController password = TextEditingController();

  bool isNewUser = true;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      floatingActionButton: FloatingActionButton(onPressed: () => TextInput.finishAutofillContext()),
      body: AutofillGroup(
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: <Widget>[
            const Text('Username'),
            TextField(controller: username, autofillHints: const [AutofillHints.username]),
            if (isNewUser) ...[
              const Text('Password'),
              TextField(obscureText: true, controller: newPassword, autofillHints: const [AutofillHints.newPassword]),
            ],
            if (isNewUser) ...[
              const Text('repeat password'),
              TextField(controller: repeatNewPassword, autofillHints: const [AutofillHints.newPassword]),
            ],
            if (!isNewUser) TextField(controller: password, autofillHints: const [AutofillHints.password]),
          ],
        ),
      ),
    );
  }
}

flutter doctor -v
```
[✓] Flutter (Channel stable, 3.13.8, on macOS 14.0 23A344 darwin-x64, locale
    en-BE)
    • Flutter version 3.13.8 on channel stable at
      /Users/navaronbracke/Documents/flutter
    • Upstream repository git@github.com:navaronbracke/flutter.git
    • FLUTTER_GIT_URL = git@github.com:navaronbracke/flutter.git
    • Framework revision 6c4930c4ac (7 days ago), 2023-10-18 10:57:55 -0500
    • Engine revision 767d8c75e8
    • Dart version 3.1.4
    • DevTools version 2.25.0
[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
• Android SDK at /Users/navaronbracke/Library/Android/sdk
• Platform android-34, build-tools 34.0.0
• ANDROID_HOME = /Users/navaronbracke/Library/Android/sdk
• Java binary at: /Applications/Android
Studio.app/Contents/jbr/Contents/Home/bin/java
• Java version OpenJDK Runtime Environment (build
17.0.6+0-17.0.6b829.9-10027231)
• All Android licenses accepted.
[✓] Xcode - develop for iOS and macOS (Xcode 15.0.1)
• Xcode at /Applications/Xcode.app/Contents/Developer
• Build 15A507
• CocoaPods version 1.13.0
[✓] Chrome - develop for the web
• Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
[✓] Android Studio (version 2022.3)
• Android Studio at /Applications/Android Studio.app/Contents
• Flutter plugin can be installed from:
🔨 https://plugins.jetbrains.com/plugin/9212-flutter
• Dart plugin can be installed from:
🔨 https://plugins.jetbrains.com/plugin/6351-dart
• Java version OpenJDK Runtime Environment (build
17.0.6+0-17.0.6b829.9-10027231)
[✓] VS Code (version 1.83.1)
• VS Code at /Applications/Visual Studio Code.app/Contents
• Flutter extension version 3.74.0
[✓] Connected device (2 available)
• macOS (desktop) • macos  • darwin-x64     • macOS 14.0 23A344 darwin-x64
• Chrome (web)    • chrome • web-javascript • Google Chrome 118.0.5993.88
[✓] Network resources
• All expected network resources are available.
• No issues found!

</details>

Thanks for the update. Seeing the same behavior as above and originally reported.

 stable, master flutter doctor -v
[!] Flutter (Channel stable, 3.13.8, on macOS 12.2.1 21D62 darwin-x64, locale
    en-GB)
    • Flutter version 3.13.8 on channel stable at
      /Users/dhs/documents/fluttersdk/flutter
    ! Warning: `flutter` on your path resolves to
      /Users/dhs/Documents/Fluttersdk/flutter/bin/flutter, which is not inside
      your current Flutter SDK checkout at
      /Users/dhs/documents/fluttersdk/flutter. Consider adding
      /Users/dhs/documents/fluttersdk/flutter/bin to the front of your path.
    ! Warning: `dart` on your path resolves to
      /Users/dhs/Documents/Fluttersdk/flutter/bin/dart, which is not inside your
      current Flutter SDK checkout at /Users/dhs/documents/fluttersdk/flutter.
      Consider adding /Users/dhs/documents/fluttersdk/flutter/bin to the front
      of your path.
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 6c4930c4ac (5 days ago), 2023-10-18 10:57:55 -0500
    • Engine revision 767d8c75e8
    • Dart version 3.1.4
    • DevTools version 2.25.0
    • If those were intentional, you can disregard the above warnings; however
      it is recommended to use "git" directly to perform update checks and
      upgrades.

[!] Xcode - develop for iOS and macOS (Xcode 12.3)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    ! Flutter recommends a minimum Xcode version of 13.
      Download the latest version or update via the Mac App Store.
    • CocoaPods version 1.11.2

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] VS Code (version 1.62.0)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.21.0

[✓] Connected device (5 available)
    • SM G975F (mobile)       • RZ8M802WY0X • android-arm64   • Android 11 (API 30)
    • Darshan's iphone (mobile)  • 21150b119064aecc249dfcfe05e259197461ce23 •
      ios            • iOS 14.4.1 18D61
    • iPhone 12 Pro Max (mobile) • A5473606-0213-4FD8-BA16-553433949729     •
      ios            • com.apple.CoreSimulator.SimRuntime.iOS-14-3 (simulator)
    • macOS (desktop)            • macos                                    •
      darwin-x64     • Mac OS X 10.15.4 19E2269 darwin-x64
    • Chrome (web)               • chrome                                   •
      web-javascript • Google Chrome 98.0.4758.80

[✓] HTTP Host Availability
    • All required HTTP hosts are available

! Doctor found issues in 1 category.

[!] Flutter (Channel master, 3.16.0-17.0.pre.40, on macOS 12.2.1 21D62
    darwin-x64, locale en-GB)
    • Flutter version 3.16.0-17.0.pre.40 on channel master at
      /Users/dhs/documents/fluttersdk/flutter
    ! Warning: `flutter` on your path resolves to
      /Users/dhs/Documents/Fluttersdk/flutter/bin/flutter, which is not inside
      your current Flutter SDK checkout at
      /Users/dhs/documents/fluttersdk/flutter. Consider adding
      /Users/dhs/documents/fluttersdk/flutter/bin to the front of your path.
    ! Warning: `dart` on your path resolves to
      /Users/dhs/Documents/Fluttersdk/flutter/bin/dart, which is not inside your
      current Flutter SDK checkout at /Users/dhs/documents/fluttersdk/flutter.
      Consider adding /Users/dhs/documents/fluttersdk/flutter/bin to the front
      of your path.
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 2f45754aab (18 minutes ago), 2023-10-26 00:51:43 -0400
    • Engine revision f844ab9333
    • Dart version 3.3.0 (build 3.3.0-56.0.dev)
    • DevTools version 2.28.1
    • If those were intentional, you can disregard the above warnings; however
      it is recommended to use "git" directly to perform update checks and
      upgrades.

[!] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
    • Android SDK at /Users/dhs/Library/Android/sdk
    ✗ cmdline-tools component is missing
      Run `path/to/sdkmanager --install "cmdline-tools;latest"`
      See https://developer.android.com/studio/command-line for more details.
    ✗ Android license status unknown.
      Run `flutter doctor --android-licenses` to accept the SDK licenses.
      See https://flutter.dev/docs/get-started/install/macos#android-setup for
      more details.

[✓] Xcode - develop for iOS and macOS (Xcode 13.2.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 13C100
    • CocoaPods version 1.11.2

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] IntelliJ IDEA Ultimate Edition (version 2021.3.2)
    • IntelliJ at /Applications/IntelliJ IDEA.app
    • Flutter plugin version 65.1.4
    • Dart plugin version 213.7228

[✓] VS Code (version 1.62.0)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.29.0

[✓] Connected device (3 available)
    • Darshan's iphone (mobile) • 21150b119064aecc249dfcfe05e259197461ce23 • ios
      • iOS 15.3.1 19D52
    • macOS (desktop)           • macos                                    •
      darwin-x64     • macOS 12.2.1 21D62 darwin-x64
    • Chrome (web)              • chrome                                   •
      web-javascript • Google Chrome 109.0.5414.119

[✓] Network resources
    • All expected network resources are available.

! Doctor found issues in 1 category.

[!] Xcode - develop for iOS and macOS (Xcode 12.3)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    ! Flutter recommends a minimum Xcode version of 13.
      Download the latest version or update via the Mac App Store.
    • CocoaPods version 1.11.2

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] VS Code (version 1.62.0)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.21.0

[✓] Connected device (5 available)
    • SM G975F (mobile)       • RZ8M802WY0X • android-arm64   • Android 11 (API 30)
    • Darshan's iphone (mobile)  • 21150b119064aecc249dfcfe05e259197461ce23 •
      ios            • iOS 14.4.1 18D61
    • iPhone 12 Pro Max (mobile) • A5473606-0213-4FD8-BA16-553433949729     •
      ios            • com.apple.CoreSimulator.SimRuntime.iOS-14-3 (simulator)
    • macOS (desktop)            • macos                                    •
      darwin-x64     • Mac OS X 10.15.4 19E2269 darwin-x64
    • Chrome (web)               • chrome                                   •
      web-javascript • Google Chrome 98.0.4758.80

[✓] HTTP Host Availability
    • All required HTTP hosts are available

! Doctor found issues in 1 category.

@yjbanov To be clear, the issue I had filed earlier is a side effect of this bug then? Since Darshan was asking for a repro on the current stable, I went ahead and verified the bug myself. During debugging it, I saw the crash that I then reported, unaware if these issues were related.

@chunhtai is autofill information something that can be passed alongside semantics information, so that we can initialize our inputs with the relevant attributes? I think this would require framework changes, but we're running into a few issues that are related to the deferred setting of these attributes on inputs

Any update on this ticket? Is there any workaround for flutter 3.16.7 ?

cc @LongCatIsLooong ☝

I don't have the fullest context, but IIRC we only send the semantics information of visible render objects to the engine so that's not ideal for autofill (since a form can be only partially visible), and some platforms don't have semantics enabled by default.

we're running into a few issues that are related to the deferred setting of these attributes on inputs

The autofill information is sent to the engine as soon as possible at the end of the frame,  and IIRC the semantics data is sent to the engine only a bit earlier than that. I wonder what point in time is considered deferred for accessibility?

I don't have the fullest context, but IIRC we only send the semantics information of visible render objects to the engine so that's not ideal for autofill (since a form can be only partially visible), and some platforms don't have semantics enabled by default.

we're running into a few issues that are related to the deferred setting of these attributes on inputs

The autofill information is sent to the engine as soon as possible at the end of the frame, and IIRC the semantics data is sent to the engine only a bit earlier than that. I wonder what point in time is considered deferred for accessibility?

Ah I see, so non-visible inputs wouldn't be getting their corresponding autofill attributes.
Re: when is considered deferred, this may depend on the browser.  But based on my testing in Chrome, if an input is appended to the dom and then later assigned autofill attributes (which is the current flow on flutter web), we run into weird issues like partial autofilling, suggestions not showing up, etc.

Hi,
I still have this problem. Is any solution available?


Group related diagnostics visually

I understand that this can be a controversial change, so this is very much a suggestion. The idea would be to group related errors so that end-user understands what exactly caused the problems they've encountered.
An example from the tests:
Error: oops::my::bad

  × oops!
   ╭─[bad_file.rs:1:1]
 1 │ source
 2 │   text
   ·   ──┬─
   ·     ╰── this bit here
 3 │     here
   ╰────
  help: try doing it better next time?
╭─There were 2 related diagnostics:
├─ 1.Error: oops::my::bad
│
│
│   × oops!
│    ╭─[bad_file.rs:1:1]
│  1 │ source
│    · ───┬──
│    ·    ╰── this bit here
│  2 │   text
│    ╰────
│   help: try doing it better next time?
│ ╭─There were 1 related diagnostics:
│ ├─ 1.Error: oops::my::bad
│ │
│ │
│ │   × oops!
│ │    ╭─[bad_file.rs:1:1]
│ │  1 │ source
│ │    · ───┬──
│ │    ·    ╰── this bit here
│ │  2 │   text
│ │    ╰────
│ │   help: try doing it better next time?
│ │ ├─There were 0 related diagnostics:
│ │
│
├─ 2.Error: oops::my::bad
│
│
│   × oops!
│    ╭─[bad_file.rs:1:1]
│  1 │ source
│    · ───┬──
│    ·    ╰── this bit here
│  2 │   text
│    ╰────
│   help: try doing it better next time?
│ ├─There were 0 related diagnostics:
│

Several considerations from a user that would benefit greatly from this change:

"There were 1 related diagnostics" => "There was 1 related diagnostic"
"1.Error" => "1. Error"
As @LukeMathWalker pointed out, remove the "related" lead line if there are no related errors.
I still think this is too verbose for my use case. It may be worth the consideration of making the "related errors" style configurable for the GraphicalReportHandler and introduce some other styles. I'm especially thinking of an alternate, fully inline style (like what is currently done, but without just listing the different errors).

I also think it'd be nice to be able group related errors better. The way related errors are displayed right now, each error seem completely independent, which make them actually seem unrelated.
Here's (very) roughly what one of my use case look like:
  × A runtime error occurred

Error:
  × Cannot add a number to a bool
   ╭─[5:1]
 5 │             fn b($n)
 6 │                 $n + a()
   ·                 ─┬ ┬ ─┬─
   ·                  │ │  ╰── number
   ·                  │ ╰── invalid operation
   ·                  ╰── bool
 7 │             end
   ╰────
Error: code

  × error originated from here
    ╭─[8:1]
  8 │             fn c($n)
  9 │                 b($n)
    ·                 ──┬──
    ·                   ╰── error originated here
 10 │             end
    ╰────
Error: code

  × error originated from here
    ╭─[10:1]
 10 │             end
 11 │             c(true)
    ·             ───┬───
    ·                ╰── error originated here
 12 │
    ╰────

I see that it's still unsure what direction to take regarding this issue.
I find the current proposal rather verbose, and in my case I think it'd look much better just without the Error: ... clause. If there was an easy way to remove them, it'd make related errors more... related.

I don't think this is super salvageable anymore, but if anyone wants to pick this up, feel free to!


Request - Unraid Template

Curious to see if you'd be willing to create an official Unraid Template for your docker container.  This would make it MUCH easier for Unraid users to add your container since it's visible directly in the Unraid App Store.
You can find instructions here on how to do that here - https://forums.unraid.net/topic/57181-docker-faq/#comment-566084
Also additional info here - https://selfhosters.net/docker/templating/templating/
Thank you!

I don't have unraid, so I would need someone else to integrate this properly. Pushing some configs I couldn't test would be a little careless (there are always unexpected minor issues).
However, if you got time, I would appreciate your help with it :)


FAIL: test_time_field (salesforce.tests.test_integration.BasicSOQLRoTest)

Getting a strange failure from the unit tests across all versions. The test pipeline was re-triggered after I added the GitHub Sponsors config.
Test a TimeField (read, modify, verify).
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/travis/build/django-salesforce/django-salesforce/salesforce/tests/test_integration.py", line 493, in test_time_field
    self.assertEqual(obj.MondayStartTime, datetime.time(23, 59))
AssertionError: datetime.time(7, 59) != datetime.time(23, 59)

I've got no idea at all why the Monday start time would change.

Salesforce version Winter '20 requires the commit 40ec03b from hynekcer-for-new-version branch (added letter Z in JSON for TimeField to prevent a time shift by a time zone of the Organization. I think that it is a silly "improvement" by Salesforce if they interpret a value as a local time by default and they return everything converted to UTC. Every value saved by their web interface, e.g. an opening time 8 am is saved as 8 UTC, retrieved as 8 UTC and displayed on the web again as 8 am.) It was not too important because a TimeField can be used only with built-in BusinessHours object. Nobody set it probably by API.
It can be fixed by merging.


Replace deveel BigDecimal

Using the builtin decimal is also not an option as the exponent range is limited to between 0 and 28

Let's see if we can collaborate in fixing the Deveel.Math library ...