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, "«««", "«««");
+
+

Reply via email to