Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package ctre for openSUSE:Factory checked in at 2026-05-19 17:51:38 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/ctre (Old) and /work/SRC/openSUSE:Factory/.ctre.new.1966 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ctre" Tue May 19 17:51:38 2026 rev:5 rq:1354036 version:3.11.0 Changes: -------- --- /work/SRC/openSUSE:Factory/ctre/ctre.changes 2025-06-20 16:50:10.770171367 +0200 +++ /work/SRC/openSUSE:Factory/.ctre.new.1966/ctre.changes 2026-05-19 17:52:14.689287055 +0200 @@ -1,0 +2,9 @@ +Fri May 15 15:03:37 UTC 2026 - Atri Bhattacharya <[email protected]> + +- Update to version 3.11.0: + * Update Experimental CMAKE_IMPORT_STD Flags + (gh#hanickadot/compile-time-regular-expressions#354). + * Improved bugs of >127 characters when using char is signed. +- Drop unsigned-char.patch: fixed upstream. + +------------------------------------------------------------------- Old: ---- ctre-3.10.0.tar.gz unsigned-char.patch New: ---- ctre-3.11.0.tar.gz ----------(Old B)---------- Old: * Improved bugs of >127 characters when using char is signed. - Drop unsigned-char.patch: fixed upstream. ----------(Old E)---------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ ctre.spec ++++++ --- /var/tmp/diff_new_pack.oEFofA/_old 2026-05-19 17:52:15.437318002 +0200 +++ /var/tmp/diff_new_pack.oEFofA/_new 2026-05-19 17:52:15.441318168 +0200 @@ -1,7 +1,7 @@ # # spec file for package ctre # -# Copyright (c) 2025 SUSE LLC +# Copyright (c) 2026 SUSE LLC and contributors # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -16,18 +16,13 @@ # -%if 0%{?suse_version} <= 1550 -%define gcc_ver 11 -%endif Name: ctre -Version: 3.10.0 +Version: 3.11.0 Release: 0 Summary: Compile time regular expressions library License: Apache-2.0 URL: https://compile-time.re Source: https://github.com/hanickadot/compile-time-regular-expressions/archive/refs/tags/v%{version}.tar.gz#/%{name}-%version.tar.gz -# https://github.com/hanickadot/compile-time-regular-expressions/issues/253 -Patch1: unsigned-char.patch BuildRequires: cmake BuildRequires: gcc%{?gcc_ver}-c++ BuildRequires: pkgconfig ++++++ ctre-3.10.0.tar.gz -> ctre-3.11.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compile-time-regular-expressions-3.10.0/.github/workflows/tests.yml new/compile-time-regular-expressions-3.11.0/.github/workflows/tests.yml --- old/compile-time-regular-expressions-3.10.0/.github/workflows/tests.yml 2025-05-20 07:57:30.000000000 +0200 +++ new/compile-time-regular-expressions-3.11.0/.github/workflows/tests.yml 2026-05-08 10:47:27.000000000 +0200 @@ -4,7 +4,7 @@ appleclang: strategy: matrix: - macos: [13, 14, 15] + macos: [14, 15, 26] standard: [17, 20] fail-fast: false name: "AppleClang (MacOS ${{ matrix.macos }}, C++${{ matrix.standard }})" @@ -35,7 +35,7 @@ clang: strategy: matrix: - clang: [14, 15, 16, 17, 18, 19, 20] + clang: [14, 15, 16, 17, 18, 19] stdlib: ["libc++", "libstdc++"] standard: [17, 20] fail-fast: false @@ -52,6 +52,29 @@ - uses: actions/checkout@v2 - run: c++ -v - run: make CXX=c++ CXX_STANDARD=2a CXXFLAGS=-stdlib=${{ matrix.stdlib }} + if: ${{ matrix.standard == '20' }} + - run: make CXX=c++ CXX_STANDARD=17 CXXFLAGS=-stdlib=${{ matrix.stdlib }} + if: ${{ matrix.standard == '17' }} + clang-2: + strategy: + matrix: + clang: [20, 21, 22] + stdlib: ["libc++", "libstdc++"] + standard: [17, 20] + fail-fast: false + name: "Clang ${{ matrix.clang }} (C++${{ matrix.standard }}, ${{ matrix.stdlib }})" + runs-on: ubuntu-latest + steps: + - name: "Install Clang" + uses: egor-tensin/setup-clang@v1 + with: + version: ${{ matrix.clang }} + - name: "Install libc++" + if: ${{ matrix.stdlib == 'libc++' }} + run: sudo apt-get install libc++abi-${{ matrix.clang }}-dev libc++-${{ matrix.clang }}-dev + - uses: actions/checkout@v2 + - run: c++ -v + - run: make CXX=c++ CXX_STANDARD=2a CXXFLAGS=-stdlib=${{ matrix.stdlib }} if: ${{ matrix.standard == '20' }} - run: make CXX=c++ CXX_STANDARD=17 CXXFLAGS=-stdlib=${{ matrix.stdlib }} if: ${{ matrix.standard == '17' }} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compile-time-regular-expressions-3.10.0/CMakeLists.txt new/compile-time-regular-expressions-3.11.0/CMakeLists.txt --- old/compile-time-regular-expressions-3.10.0/CMakeLists.txt 2025-05-20 07:57:30.000000000 +0200 +++ new/compile-time-regular-expressions-3.11.0/CMakeLists.txt 2026-05-08 10:47:27.000000000 +0200 @@ -1,8 +1,19 @@ -cmake_minimum_required(VERSION 3.14...3.29) +cmake_minimum_required(VERSION 3.14...4.3) -if(CMAKE_VERSION VERSION_GREATER_EQUAL "3.29.20240416") - set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD "0e5b6991-d74f-4b3d-a41c-cf096e0b2508") - set(CMAKE_CXX_MODULE_STD 1) + +if(NOT CMAKE_EXPERIMENTAL_CXX_STD AND NOT CMAKE_CXX_MODULE_STD) + if(CMAKE_VERSION VERSION_GREATER_EQUAL "3.30" AND CMAKE_VERSION VERSION_LESS_EQUAL "4.0") + set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD "0e5b6991-d74f-4b3d-a41c-cf096e0b2508") + elseif(CMAKE_VERSION VERSION_GREATER_EQUAL "4.0" AND CMAKE_VERSION VERSION_LESS "4.0.3") + set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD "a9e1cf81-9932-4810-974b-6eccaf14e457") + + elseif(CMAKE_VERSION VERSION_GREATER_EQUAL "4.0.3" AND CMAKE_VERSION VERSION_LESS "4.3") + set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD "d0edc3af-4c50-42ea-a356-e2862fe7a444") + set(CMAKE_CXX_MODULE_STD 1) + elseif(CMAKE_VERSION VERSION_GREATER_EQUAL "4.3") + set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD "451f2fe2-a8a2-47c3-bc32-94786d8fc91b") + set(CMAKE_CXX_MODULE_STD 1) + endif() endif() # When updating to a newer version of CMake, see if we can use the following diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compile-time-regular-expressions-3.10.0/include/ctre/atoms_characters.hpp new/compile-time-regular-expressions-3.11.0/include/ctre/atoms_characters.hpp --- old/compile-time-regular-expressions-3.10.0/include/ctre/atoms_characters.hpp 2025-05-20 07:57:30.000000000 +0200 +++ new/compile-time-regular-expressions-3.11.0/include/ctre/atoms_characters.hpp 2026-05-08 10:47:27.000000000 +0200 @@ -40,7 +40,7 @@ } } } - return value == V; + return static_cast<std::make_unsigned_t<CharT>>(value) == V; } }; @@ -79,7 +79,7 @@ } } } - return (value >= A) && (value <= B); + return (static_cast<std::make_unsigned_t<CharT>>(value) >= A) && (static_cast<std::make_unsigned_t<CharT>>(value) <= B); } }; using word_chars = set<char_range<'A','Z'>, char_range<'a','z'>, char_range<'0','9'>, character<'_'> >; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compile-time-regular-expressions-3.10.0/include/ctre/atoms_unicode.hpp new/compile-time-regular-expressions-3.11.0/include/ctre/atoms_unicode.hpp --- old/compile-time-regular-expressions-3.10.0/include/ctre/atoms_unicode.hpp 2025-05-20 07:57:30.000000000 +0200 +++ new/compile-time-regular-expressions-3.11.0/include/ctre/atoms_unicode.hpp 2026-05-08 10:47:27.000000000 +0200 @@ -28,7 +28,7 @@ // unicode TS#18 level 1.2 general_category template <uni::detail::binary_prop Property> struct binary_property<uni::detail::binary_prop, Property> { template <typename CharT> inline static constexpr bool match_char(CharT c, const flags &) noexcept { - return uni::detail::get_binary_prop<Property>(static_cast<char32_t>(c)); + return uni::detail::get_binary_prop<Property>(static_cast<char32_t>(static_cast<std::make_unsigned_t<CharT>>(c))); } }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compile-time-regular-expressions-3.10.0/include/ctre/utf8.hpp new/compile-time-regular-expressions-3.11.0/include/ctre/utf8.hpp --- old/compile-time-regular-expressions-3.10.0/include/ctre/utf8.hpp 2025-05-20 07:57:30.000000000 +0200 +++ new/compile-time-regular-expressions-3.11.0/include/ctre/utf8.hpp 2026-05-08 10:47:27.000000000 +0200 @@ -13,6 +13,10 @@ #define CTRE_ENABLE_UTF8_RANGE #endif +#if defined(__cpp_impl_three_way_comparison) && (__cpp_impl_three_way_comparison >= 201907L) +#define CTRE_NO_NEED_FOR_ADDITIONAL_COMPARISONS +#endif + namespace ctre { struct utf8_iterator { @@ -43,7 +47,7 @@ friend constexpr auto operator==(self_type, const char8_t * other_ptr) noexcept { return *other_ptr == char8_t{0}; } -#if !defined(__cpp_impl_three_way_comparison) || __cpp_impl_three_way_comparison < 201907L +#ifndef CTRE_NO_NEED_FOR_ADDITIONAL_COMPARISONS friend constexpr auto operator!=(self_type, const char8_t * other_ptr) noexcept { return *other_ptr != char8_t{0}; } @@ -60,7 +64,7 @@ const char8_t * ptr{nullptr}; const char8_t * end{nullptr}; -#if !defined(__cpp_impl_three_way_comparison) || __cpp_impl_three_way_comparison < 201907L +#ifndef CTRE_NO_NEED_FOR_ADDITIONAL_COMPARISONS constexpr friend bool operator!=(const utf8_iterator & lhs, sentinel) { return lhs.ptr < lhs.end; } @@ -85,7 +89,7 @@ return lhs.ptr == rhs.ptr; } -#if !defined(__cpp_impl_three_way_comparison) || __cpp_impl_three_way_comparison < 201907L +#ifndef CTRE_NO_NEED_FOR_ADDITIONAL_COMPARISONS constexpr friend bool operator!=(sentinel, const utf8_iterator & rhs) { return rhs.ptr < rhs.end; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compile-time-regular-expressions-3.10.0/single-header/ctre-unicode.hpp new/compile-time-regular-expressions-3.11.0/single-header/ctre-unicode.hpp --- old/compile-time-regular-expressions-3.10.0/single-header/ctre-unicode.hpp 2025-05-20 07:57:30.000000000 +0200 +++ new/compile-time-regular-expressions-3.11.0/single-header/ctre-unicode.hpp 2026-05-08 10:47:27.000000000 +0200 @@ -1598,7 +1598,7 @@ } } } - return value == V; + return static_cast<std::make_unsigned_t<CharT>>(value) == V; } }; @@ -1637,7 +1637,7 @@ } } } - return (value >= A) && (value <= B); + return (static_cast<std::make_unsigned_t<CharT>>(value) >= A) && (static_cast<std::make_unsigned_t<CharT>>(value) <= B); } }; using word_chars = set<char_range<'A','Z'>, char_range<'a','z'>, char_range<'0','9'>, character<'_'> >; @@ -1899,7 +1899,7 @@ // unicode TS#18 level 1.2 general_category template <uni::detail::binary_prop Property> struct binary_property<uni::detail::binary_prop, Property> { template <typename CharT> inline static constexpr bool match_char(CharT c, const flags &) noexcept { - return uni::detail::get_binary_prop<Property>(static_cast<char32_t>(c)); + return uni::detail::get_binary_prop<Property>(static_cast<char32_t>(static_cast<std::make_unsigned_t<CharT>>(c))); } }; @@ -3106,6 +3106,10 @@ #define CTRE_ENABLE_UTF8_RANGE #endif +#if defined(__cpp_impl_three_way_comparison) && (__cpp_impl_three_way_comparison >= 201907L) +#define CTRE_NO_NEED_FOR_ADDITIONAL_COMPARISONS +#endif + namespace ctre { struct utf8_iterator { @@ -3136,7 +3140,7 @@ friend constexpr auto operator==(self_type, const char8_t * other_ptr) noexcept { return *other_ptr == char8_t{0}; } -#if !defined(__cpp_impl_three_way_comparison) || __cpp_impl_three_way_comparison < 201907L +#ifndef CTRE_NO_NEED_FOR_ADDITIONAL_COMPARISONS friend constexpr auto operator!=(self_type, const char8_t * other_ptr) noexcept { return *other_ptr != char8_t{0}; } @@ -3153,7 +3157,7 @@ const char8_t * ptr{nullptr}; const char8_t * end{nullptr}; -#if !defined(__cpp_impl_three_way_comparison) || __cpp_impl_three_way_comparison < 201907L +#ifndef CTRE_NO_NEED_FOR_ADDITIONAL_COMPARISONS constexpr friend bool operator!=(const utf8_iterator & lhs, sentinel) { return lhs.ptr < lhs.end; } @@ -3178,7 +3182,7 @@ return lhs.ptr == rhs.ptr; } -#if !defined(__cpp_impl_three_way_comparison) || __cpp_impl_three_way_comparison < 201907L +#ifndef CTRE_NO_NEED_FOR_ADDITIONAL_COMPARISONS constexpr friend bool operator!=(sentinel, const utf8_iterator & rhs) { return rhs.ptr < rhs.end; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compile-time-regular-expressions-3.10.0/single-header/ctre.hpp new/compile-time-regular-expressions-3.11.0/single-header/ctre.hpp --- old/compile-time-regular-expressions-3.10.0/single-header/ctre.hpp 2025-05-20 07:57:30.000000000 +0200 +++ new/compile-time-regular-expressions-3.11.0/single-header/ctre.hpp 2026-05-08 10:47:27.000000000 +0200 @@ -1595,7 +1595,7 @@ } } } - return value == V; + return static_cast<std::make_unsigned_t<CharT>>(value) == V; } }; @@ -1634,7 +1634,7 @@ } } } - return (value >= A) && (value <= B); + return (static_cast<std::make_unsigned_t<CharT>>(value) >= A) && (static_cast<std::make_unsigned_t<CharT>>(value) <= B); } }; using word_chars = set<char_range<'A','Z'>, char_range<'a','z'>, char_range<'0','9'>, character<'_'> >; @@ -1896,7 +1896,7 @@ // unicode TS#18 level 1.2 general_category template <uni::detail::binary_prop Property> struct binary_property<uni::detail::binary_prop, Property> { template <typename CharT> inline static constexpr bool match_char(CharT c, const flags &) noexcept { - return uni::detail::get_binary_prop<Property>(static_cast<char32_t>(c)); + return uni::detail::get_binary_prop<Property>(static_cast<char32_t>(static_cast<std::make_unsigned_t<CharT>>(c))); } }; @@ -3103,6 +3103,10 @@ #define CTRE_ENABLE_UTF8_RANGE #endif +#if defined(__cpp_impl_three_way_comparison) && (__cpp_impl_three_way_comparison >= 201907L) +#define CTRE_NO_NEED_FOR_ADDITIONAL_COMPARISONS +#endif + namespace ctre { struct utf8_iterator { @@ -3133,7 +3137,7 @@ friend constexpr auto operator==(self_type, const char8_t * other_ptr) noexcept { return *other_ptr == char8_t{0}; } -#if !defined(__cpp_impl_three_way_comparison) || __cpp_impl_three_way_comparison < 201907L +#ifndef CTRE_NO_NEED_FOR_ADDITIONAL_COMPARISONS friend constexpr auto operator!=(self_type, const char8_t * other_ptr) noexcept { return *other_ptr != char8_t{0}; } @@ -3150,7 +3154,7 @@ const char8_t * ptr{nullptr}; const char8_t * end{nullptr}; -#if !defined(__cpp_impl_three_way_comparison) || __cpp_impl_three_way_comparison < 201907L +#ifndef CTRE_NO_NEED_FOR_ADDITIONAL_COMPARISONS constexpr friend bool operator!=(const utf8_iterator & lhs, sentinel) { return lhs.ptr < lhs.end; } @@ -3175,7 +3179,7 @@ return lhs.ptr == rhs.ptr; } -#if !defined(__cpp_impl_three_way_comparison) || __cpp_impl_three_way_comparison < 201907L +#ifndef CTRE_NO_NEED_FOR_ADDITIONAL_COMPARISONS constexpr friend bool operator!=(sentinel, const utf8_iterator & rhs) { return rhs.ptr < rhs.end; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compile-time-regular-expressions-3.10.0/tests/generating.cpp new/compile-time-regular-expressions-3.11.0/tests/generating.cpp --- old/compile-time-regular-expressions-3.10.0/tests/generating.cpp 2025-05-20 07:57:30.000000000 +0200 +++ new/compile-time-regular-expressions-3.11.0/tests/generating.cpp 2026-05-08 10:47:27.000000000 +0200 @@ -53,9 +53,14 @@ static_assert(same_f(CTRE_GEN("\\x40"), ctre::character<char{0x40}>())); static_assert(same_f(CTRE_GEN("\\x7F"), ctre::character<char{0x7F}>())); // only characters with value < 128 are char otherwise they are internally char32_t -static_assert(same_f(CTRE_GEN("\\x80"), ctre::character<char32_t{0x80}>())); -static_assert(same_f(CTRE_GEN("\\xFF"), ctre::character<char32_t{0xFF}>())); -static_assert(same_f(CTRE_GEN("\\x{FF}"), ctre::character<char32_t{0xFF}>())); +constexpr unsigned char_length = (std::numeric_limits<char>::max)(); +constexpr bool char_is_unsigned = (char_length == 255); +// I wish I could have operator implication here :( +using expected_type = std::conditional_t<char_is_unsigned, char, char32_t>; +static_assert(same_f(CTRE_GEN("\\x80"), ctre::character<expected_type{0x80}>())); +static_assert(same_f(CTRE_GEN("\\xFF"), ctre::character<expected_type{0xFF}>())); +static_assert(same_f(CTRE_GEN("\\x{FF}"), ctre::character<expected_type{0xFF}>())); + static_assert(same_f(CTRE_GEN("\\x{FFF}"), ctre::character<char32_t{0xFFF}>())); static_assert(same_f(CTRE_GEN("\\x{ABCD}"), ctre::character<char32_t{0xABCD}>())); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compile-time-regular-expressions-3.10.0/tests/matching3.cpp new/compile-time-regular-expressions-3.11.0/tests/matching3.cpp --- old/compile-time-regular-expressions-3.10.0/tests/matching3.cpp 2025-05-20 07:57:30.000000000 +0200 +++ new/compile-time-regular-expressions-3.11.0/tests/matching3.cpp 2026-05-08 10:47:27.000000000 +0200 @@ -246,3 +246,7 @@ TEST_MATCH(234, "[^]+", "x"); TEST_MATCH(235, "[^]?", ""); +// issue #357 (unsigned chars vs signed chars) +TEST_MATCH(236, "«««", "«««"); + +
