Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package fast_float for openSUSE:Factory 
checked in at 2026-06-13 18:45:18
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/fast_float (Old)
 and      /work/SRC/openSUSE:Factory/.fast_float.new.1981 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "fast_float"

Sat Jun 13 18:45:18 2026 rev:10 rq:1358812 version:8.2.9

Changes:
--------
--- /work/SRC/openSUSE:Factory/fast_float/fast_float.changes    2026-06-09 
14:22:50.638886570 +0200
+++ /work/SRC/openSUSE:Factory/.fast_float.new.1981/fast_float.changes  
2026-06-13 18:45:39.905263467 +0200
@@ -1,0 +2,7 @@
+Fri Jun 12 04:42:41 UTC 2026 - Jan Engelhardt <[email protected]>
+
+- Update to release 8.2.9
+  * Reject non-digit wide code units in uint8/uint16 integer
+    fast path.
+
+-------------------------------------------------------------------

Old:
----
  fast_float-8.2.8.tar.gz

New:
----
  fast_float-8.2.9.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ fast_float.spec ++++++
--- /var/tmp/diff_new_pack.6yJb6z/_old  2026-06-13 18:45:42.821384464 +0200
+++ /var/tmp/diff_new_pack.6yJb6z/_new  2026-06-13 18:45:42.853385791 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           fast_float
-Version:        8.2.8
+Version:        8.2.9
 Release:        0
 Summary:        Re-implementation of std::from_chars for parsing strings into 
numbers
 License:        Apache-2.0 OR BSL-1.0 OR MIT

++++++ _scmsync.obsinfo ++++++
--- /var/tmp/diff_new_pack.6yJb6z/_old  2026-06-13 18:45:43.177399235 +0200
+++ /var/tmp/diff_new_pack.6yJb6z/_new  2026-06-13 18:45:43.225401227 +0200
@@ -1,5 +1,5 @@
-mtime: 1780969843
-commit: ff5212b5693b154ad7890f0d001476d22b6f6b7e33c12ad2c1df8d6247a98a8e
+mtime: 1781239387
+commit: c08f2b9dd5a51dabcdbfe67518956946a4274d151e6199d8e388f46fc596c2d5
 url: https://src.opensuse.org/jengelh/fast_float
 revision: master
 

++++++ build.specials.obscpio ++++++

++++++ build.specials.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/.gitignore new/.gitignore
--- old/.gitignore      1970-01-01 01:00:00.000000000 +0100
+++ new/.gitignore      2026-06-12 06:43:07.000000000 +0200
@@ -0,0 +1 @@
+.osc

++++++ fast_float-8.2.8.tar.gz -> fast_float-8.2.9.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fast_float-8.2.8/CMakeLists.txt 
new/fast_float-8.2.9/CMakeLists.txt
--- old/fast_float-8.2.8/CMakeLists.txt 2026-06-08 21:29:36.000000000 +0200
+++ new/fast_float-8.2.9/CMakeLists.txt 2026-06-12 02:29:24.000000000 +0200
@@ -1,7 +1,7 @@
 cmake_minimum_required(VERSION 3.14)
 
 
-project(fast_float VERSION 8.2.8 LANGUAGES CXX)
+project(fast_float VERSION 8.2.9 LANGUAGES CXX)
 set(FASTFLOAT_CXX_STANDARD 11 CACHE STRING "the C++ standard to use for 
fastfloat")
 set(CMAKE_CXX_STANDARD ${FASTFLOAT_CXX_STANDARD})
 option(FASTFLOAT_TEST "Enable tests" OFF)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fast_float-8.2.8/README.md 
new/fast_float-8.2.9/README.md
--- old/fast_float-8.2.8/README.md      2026-06-08 21:29:36.000000000 +0200
+++ new/fast_float-8.2.9/README.md      2026-06-12 02:29:24.000000000 +0200
@@ -531,7 +531,7 @@
 FetchContent_Declare(
   fast_float
   GIT_REPOSITORY https://github.com/fastfloat/fast_float.git
-  GIT_TAG tags/v8.2.8
+  GIT_TAG tags/v8.2.9
   GIT_SHALLOW TRUE)
 
 FetchContent_MakeAvailable(fast_float)
@@ -547,7 +547,7 @@
 CPMAddPackage(
   NAME fast_float
   GITHUB_REPOSITORY "fastfloat/fast_float"
-  GIT_TAG v8.2.8)
+  GIT_TAG v8.2.9)
 ```
 
 ## Using as single header
@@ -559,7 +559,7 @@
 
 You may directly download automatically generated single-header files:
 
-<https://github.com/fastfloat/fast_float/releases/download/v8.2.8/fast_float.h>
+<https://github.com/fastfloat/fast_float/releases/download/v8.2.9/fast_float.h>
 
 ## Benchmarking
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fast_float-8.2.8/include/fast_float/ascii_number.h 
new/fast_float-8.2.9/include/fast_float/ascii_number.h
--- old/fast_float-8.2.8/include/fast_float/ascii_number.h      2026-06-08 
21:29:36.000000000 +0200
+++ new/fast_float-8.2.9/include/fast_float/ascii_number.h      2026-06-12 
02:29:24.000000000 +0200
@@ -600,7 +600,8 @@
 
   UC const *const start_digits = p;
 
-  FASTFLOAT_IF_CONSTEXPR17((std::is_same<T, std::uint8_t>::value)) {
+  FASTFLOAT_IF_CONSTEXPR17(
+      (std::is_same<T, std::uint8_t>::value && sizeof(UC) == 1)) {
     if (base == 10) {
       const size_t len = (size_t)(pend - p);
       if (len == 0) {
@@ -692,7 +693,8 @@
     }
   }
 
-  FASTFLOAT_IF_CONSTEXPR17((std::is_same<T, std::uint16_t>::value)) {
+  FASTFLOAT_IF_CONSTEXPR17(
+      (std::is_same<T, std::uint16_t>::value && sizeof(UC) == 1)) {
     if (base == 10) {
       const size_t len = size_t(pend - p);
       if (len == 0) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fast_float-8.2.8/include/fast_float/float_common.h 
new/fast_float-8.2.9/include/fast_float/float_common.h
--- old/fast_float-8.2.8/include/fast_float/float_common.h      2026-06-08 
21:29:36.000000000 +0200
+++ new/fast_float-8.2.9/include/fast_float/float_common.h      2026-06-12 
02:29:24.000000000 +0200
@@ -18,7 +18,7 @@
 
 #define FASTFLOAT_VERSION_MAJOR 8
 #define FASTFLOAT_VERSION_MINOR 2
-#define FASTFLOAT_VERSION_PATCH 8
+#define FASTFLOAT_VERSION_PATCH 9
 
 #define FASTFLOAT_STRINGIZE_IMPL(x) #x
 #define FASTFLOAT_STRINGIZE(x) FASTFLOAT_STRINGIZE_IMPL(x)
@@ -207,7 +207,11 @@
 // to a no-op elsewhere (e.g. pre-C++20 MSVC, which has no equivalent hint).
 #ifdef __has_cpp_attribute
 #if __has_cpp_attribute(unlikely) >= 201803L
-#define FASTFLOAT_USE_UNLIKELY_ATTR 1
+// g++-9 hits hits this branch, but then fails to compile
+// [[unlikely]]. This happens only with g++-9.
+#if !defined(__GNUC__) || (__GNUC__ != 9)
+#define FASTFLOAT_USE_UNLIKELY_ATTR
+#endif
 #endif
 #endif
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fast_float-8.2.8/tests/fast_int.cpp 
new/fast_float-8.2.9/tests/fast_int.cpp
--- old/fast_float-8.2.8/tests/fast_int.cpp     2026-06-08 21:29:36.000000000 
+0200
+++ new/fast_float-8.2.9/tests/fast_int.cpp     2026-06-12 02:29:24.000000000 
+0200
@@ -1295,6 +1295,59 @@
       return EXIT_FAILURE;
     }
   }
+  // The uint8_t and uint16_t base-10 paths use a byte-oriented fast path. A
+  // wider code unit whose low byte is an ASCII digit (e.g. U+2131..U+2139) 
must
+  // not be mistaken for that digit. The generic path already rejects these for
+  // int; the fixed-width fast paths must agree. Lengths of 1..5 exercise both
+  // the uint8_t path and the 4-digit uint16_t SWAR path.
+  {
+    const std::u16string bad16[] = {
+        u"ℹ", u"ℱℲ", u"ℱℲℳ", u"ℱℲℳℴ", u"ℱℲℳℴℵ",
+    };
+    const std::u32string bad32[] = {
+        U"ℹ",
+        U"ℱℲℳ",
+        U"ℱℲℳℴ",
+        U"ℱℲℳℴℵ",
+    };
+    bool failed = false;
+    for (auto const &s : bad16) {
+      uint8_t r8 = 123;
+      auto a8 = fast_float::from_chars(s.data(), s.data() + s.size(), r8);
+      if (a8.ec == std::errc()) {
+        failed = true;
+        std::cerr << "Incorrectly parsed wide units as uint8_t " << 
unsigned(r8)
+                  << "." << std::endl;
+      }
+      uint16_t r16 = 123;
+      auto a16 = fast_float::from_chars(s.data(), s.data() + s.size(), r16);
+      if (a16.ec == std::errc()) {
+        failed = true;
+        std::cerr << "Incorrectly parsed wide units as uint16_t " << r16 << "."
+                  << std::endl;
+      }
+    }
+    for (auto const &s : bad32) {
+      uint8_t r8 = 123;
+      auto a8 = fast_float::from_chars(s.data(), s.data() + s.size(), r8);
+      if (a8.ec == std::errc()) {
+        failed = true;
+        std::cerr << "Incorrectly parsed wide units as uint8_t " << 
unsigned(r8)
+                  << "." << std::endl;
+      }
+      uint16_t r16 = 123;
+      auto a16 = fast_float::from_chars(s.data(), s.data() + s.size(), r16);
+      if (a16.ec == std::errc()) {
+        failed = true;
+        std::cerr << "Incorrectly parsed wide units as uint16_t " << r16 << "."
+                  << std::endl;
+      }
+    }
+
+    if (failed) {
+      return EXIT_FAILURE;
+    }
+  }
 
   return EXIT_SUCCESS;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fast_float-8.2.8/tests/fixedwidthtest.cpp 
new/fast_float-8.2.9/tests/fixedwidthtest.cpp
--- old/fast_float-8.2.8/tests/fixedwidthtest.cpp       2026-06-08 
21:29:36.000000000 +0200
+++ new/fast_float-8.2.9/tests/fixedwidthtest.cpp       2026-06-12 
02:29:24.000000000 +0200
@@ -65,6 +65,4 @@
 #endif
   std::cout << "All tests passed successfully." << std::endl;
   return EXIT_SUCCESS;
-
-  return 0;
-}
\ No newline at end of file
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fast_float-8.2.8/tests/long_exhaustive32_64.cpp 
new/fast_float-8.2.9/tests/long_exhaustive32_64.cpp
--- old/fast_float-8.2.8/tests/long_exhaustive32_64.cpp 2026-06-08 
21:29:36.000000000 +0200
+++ new/fast_float-8.2.9/tests/long_exhaustive32_64.cpp 2026-06-12 
02:29:24.000000000 +0200
@@ -45,11 +45,6 @@
         std::cerr << "I got " << std::hexfloat << result_value
                   << " but I was expecting " << v << std::endl;
         abort();
-      } else if (std::isnan(v)) {
-        if (!std::isnan(result_value)) {
-          std::cerr << "not nan" << buffer << std::endl;
-          abort();
-        }
       } else if (result_value != v) {
         std::cerr << "no match ? " << buffer << std::endl;
         std::cout << "started with " << std::hexfloat << v << std::endl;

Reply via email to