Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package robin-map for openSUSE:Factory 
checked in at 2025-10-13 17:27:14
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/robin-map (Old)
 and      /work/SRC/openSUSE:Factory/.robin-map.new.18484 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "robin-map"

Mon Oct 13 17:27:14 2025 rev:7 rq:1311161 version:1.4.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/robin-map/robin-map.changes      2025-03-26 
21:25:54.996706729 +0100
+++ /work/SRC/openSUSE:Factory/.robin-map.new.18484/robin-map.changes   
2025-10-13 17:33:33.310914912 +0200
@@ -1,0 +2,11 @@
+Fri Oct 13 13:26:05 UTC 2025 - Friedrich Haubensak <[email protected]>
+
+- Update to version 1.4.0:
+  * Add a CMake TSL_ROBIN_MAP_ENABLE_INSTALL option to explicitly 
+    enable/disable the install target
+  * Move to C++17 dropping C++11 support
+  * Bump cmake_minimum_required version to 3.5
+  * Fix load threshold on deserialization
+  * Use inline constexpr for PRIMES and MOD_PRIME arrays
+
+-------------------------------------------------------------------

Old:
----
  robin-map-1.3.0.tar.gz

New:
----
  robin-map-1.4.0.tar.gz

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

Other differences:
------------------
++++++ robin-map.spec ++++++
--- /var/tmp/diff_new_pack.Eilsaj/_old  2025-10-13 17:33:33.838937182 +0200
+++ /var/tmp/diff_new_pack.Eilsaj/_new  2025-10-13 17:33:33.842937351 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           robin-map
-Version:        1.3.0
+Version:        1.4.0
 Release:        0
 Summary:        C++ implementation of a fast hash map and hash set using robin 
hood hashing
 License:        MIT
@@ -61,7 +61,7 @@
 chmod 0644 %{SOURCE0}
 
 %build
-%cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.5
+%cmake
 
 %install
 %cmake_install

++++++ robin-map-1.3.0.tar.gz -> robin-map-1.4.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/robin-map-1.3.0/.github/workflows/ci.yml 
new/robin-map-1.4.0/.github/workflows/ci.yml
--- old/robin-map-1.3.0/.github/workflows/ci.yml        2024-04-19 
21:21:18.000000000 +0200
+++ new/robin-map-1.4.0/.github/workflows/ci.yml        2025-03-30 
15:39:10.000000000 +0200
@@ -29,13 +29,13 @@
           }
         - {
             name: macos-x64-gcc,
-            os:  macos-latest,
+            os:  macos-13,
             cxx: g++,
             cmake-build-type: Release
           }
         - {
             name: macos-x64-clang,
-            os:  macos-latest,
+            os:  macos-13,
             cxx: clang++,
             cmake-build-type: Release
           }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/robin-map-1.3.0/CMakeLists.txt 
new/robin-map-1.4.0/CMakeLists.txt
--- old/robin-map-1.3.0/CMakeLists.txt  2024-04-19 21:21:18.000000000 +0200
+++ new/robin-map-1.4.0/CMakeLists.txt  2025-03-30 15:39:10.000000000 +0200
@@ -1,10 +1,19 @@
-cmake_minimum_required(VERSION 3.3)
+cmake_minimum_required(VERSION 3.5)
 
-project(tsl-robin-map VERSION 1.3.0 LANGUAGES CXX)
+project(tsl-robin-map VERSION 1.4.0 LANGUAGES CXX)
 
 include(GNUInstallDirs)
 
 
+set(IS_MAIN_PROJECT FALSE)
+if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR)
+  set(IS_MAIN_PROJECT TRUE)
+endif()
+
+# Enable the install target if the project is used main project (disable by 
default if subproject)
+option(TSL_ROBIN_MAP_ENABLE_INSTALL "Enable install target" ${IS_MAIN_PROJECT})
+
+
 add_library(robin_map INTERFACE)
 # Use tsl::robin_map as target, more consistent with other libraries 
conventions (Boost, Qt, ...)
 add_library(tsl::robin_map ALIAS robin_map)
@@ -25,16 +34,8 @@
                    
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_DATAROOTDIR}/tsl-robin-map.natvis>")
 endif()
 
-
-
-
-set(IS_SUBPROJECT TRUE)
-if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR)
-  set(IS_SUBPROJECT FALSE)
-endif()
-
 # Installation
-if(NOT IS_SUBPROJECT)
+if(TSL_ROBIN_MAP_ENABLE_INSTALL)
     include(CMakePackageConfigHelpers)
 
     ## Install include directory and potential natvis file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/robin-map-1.3.0/README.md 
new/robin-map-1.4.0/README.md
--- old/robin-map-1.3.0/README.md       2024-04-19 21:21:18.000000000 +0200
+++ new/robin-map-1.4.0/README.md       2025-03-30 15:39:10.000000000 +0200
@@ -92,7 +92,7 @@
 
 The library is available in 
[vcpkg](https://github.com/Microsoft/vcpkg/tree/master/ports/robin-map) and 
[conan](https://conan.io/center/tsl-robin-map). It's also present in 
[Debian](https://packages.debian.org/buster/robin-map-dev), 
[Ubuntu](https://packages.ubuntu.com/disco/robin-map-dev) and 
[Fedora](https://apps.fedoraproject.org/packages/robin-map-devel) package 
repositories.
 
-The code should work with any C++11 standard-compliant compiler and has been 
tested with GCC 4.8.4, Clang 3.5.0 and Visual Studio 2015.
+The code should work with any C++17 standard-compliant compiler.
 
 To run the tests you will need the Boost Test library and CMake.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/robin-map-1.3.0/doxygen.conf 
new/robin-map-1.4.0/doxygen.conf
--- old/robin-map-1.3.0/doxygen.conf    2024-04-19 21:21:18.000000000 +0200
+++ new/robin-map-1.4.0/doxygen.conf    2025-03-30 15:39:10.000000000 +0200
@@ -1081,7 +1081,7 @@
 # specified with INPUT and INCLUDE_PATH.
 # This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES.
 
-CLANG_OPTIONS          = -std=c++11
+CLANG_OPTIONS          = -std=c++17
 
 #---------------------------------------------------------------------------
 # Configuration options related to the alphabetical class index
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/robin-map-1.3.0/include/tsl/robin_growth_policy.h 
new/robin-map-1.4.0/include/tsl/robin_growth_policy.h
--- old/robin-map-1.3.0/include/tsl/robin_growth_policy.h       2024-04-19 
21:21:18.000000000 +0200
+++ new/robin-map-1.4.0/include/tsl/robin_growth_policy.h       2025-03-30 
15:39:10.000000000 +0200
@@ -40,7 +40,7 @@
 #define TSL_RH_VERSION_MAJOR 1
 // A change of the minor version indicates the addition of a feature without
 // impact on the API/ABI
-#define TSL_RH_VERSION_MINOR 3
+#define TSL_RH_VERSION_MINOR 4
 // A change of the patch version indicates a bugfix without additional
 // functionality
 #define TSL_RH_VERSION_PATCH 0
@@ -253,7 +253,7 @@
 #define TSL_RH_NB_PRIMES 23
 #endif
 
-static constexpr const std::array<std::size_t, TSL_RH_NB_PRIMES> PRIMES = {{
+inline constexpr std::array<std::size_t, TSL_RH_NB_PRIMES> PRIMES = {{
     1u,
     5u,
     17u,
@@ -319,8 +319,7 @@
 // MOD_PRIME[iprime](hash) returns hash % PRIMES[iprime]. This table allows for
 // faster modulo as the compiler can optimize the modulo code better with a
 // constant known at the compilation.
-static constexpr const std::array<std::size_t (*)(std::size_t),
-                                  TSL_RH_NB_PRIMES>
+inline constexpr std::array<std::size_t (*)(std::size_t), TSL_RH_NB_PRIMES>
     MOD_PRIME = {{
         &mod<0>,  &mod<1>,  &mod<2>,  &mod<3>,  &mod<4>,  &mod<5>,
         &mod<6>,  &mod<7>,  &mod<8>,  &mod<9>,  &mod<10>, &mod<11>,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/robin-map-1.3.0/include/tsl/robin_hash.h 
new/robin-map-1.4.0/include/tsl/robin_hash.h
--- old/robin-map-1.3.0/include/tsl/robin_hash.h        2024-04-19 
21:21:18.000000000 +0200
+++ new/robin-map-1.4.0/include/tsl/robin_hash.h        2025-03-30 
15:39:10.000000000 +0200
@@ -66,12 +66,6 @@
 struct 
is_power_of_two_policy<tsl::rh::power_of_two_growth_policy<GrowthFactor>>
     : std::true_type {};
 
-// Only available in C++17, we need to be compatible with C++11
-template <class T>
-const T& clamp(const T& v, const T& lo, const T& hi) {
-  return std::min(hi, std::max(lo, v));
-}
-
 template <typename T, typename U>
 static T numeric_cast(U value,
                       const char* error_message = "numeric_cast() failed.") {
@@ -254,22 +248,14 @@
 
   value_type& value() noexcept {
     tsl_rh_assert(!empty());
-#if defined(__cplusplus) && __cplusplus >= 201703L
     return *std::launder(
         reinterpret_cast<value_type*>(std::addressof(m_value)));
-#else
-    return *reinterpret_cast<value_type*>(std::addressof(m_value));
-#endif
   }
 
   const value_type& value() const noexcept {
     tsl_rh_assert(!empty());
-#if defined(__cplusplus) && __cplusplus >= 201703L
     return *std::launder(
         reinterpret_cast<const value_type*>(std::addressof(m_value)));
-#else
-    return *reinterpret_cast<const value_type*>(std::addressof(m_value));
-#endif
   }
 
   distance_type dist_from_ideal_bucket() const noexcept {
@@ -541,7 +527,6 @@
   };
 
  public:
-#if defined(__cplusplus) && __cplusplus >= 201402L
   robin_hash(size_type bucket_count, const Hash& hash, const KeyEqual& equal,
              const Allocator& alloc,
              float min_load_factor = DEFAULT_MIN_LOAD_FACTOR,
@@ -569,47 +554,6 @@
     this->min_load_factor(min_load_factor);
     this->max_load_factor(max_load_factor);
   }
-#else
-  /**
-   * C++11 doesn't support the creation of a std::vector with a custom 
allocator
-   * and 'count' default-inserted elements. The needed contructor `explicit
-   * vector(size_type count, const Allocator& alloc = Allocator());` is only
-   * available in C++14 and later. We thus must resize after using the
-   * `vector(const Allocator& alloc)` constructor.
-   *
-   * We can't use `vector(size_type count, const T& value, const Allocator&
-   * alloc)` as it requires the value T to be copyable.
-   */
-  robin_hash(size_type bucket_count, const Hash& hash, const KeyEqual& equal,
-             const Allocator& alloc,
-             float min_load_factor = DEFAULT_MIN_LOAD_FACTOR,
-             float max_load_factor = DEFAULT_MAX_LOAD_FACTOR)
-      : Hash(hash),
-        KeyEqual(equal),
-        GrowthPolicy(bucket_count),
-        m_buckets_data(alloc),
-        m_buckets(static_empty_bucket_ptr()),
-        m_bucket_count(bucket_count),
-        m_nb_elements(0),
-        m_grow_on_next_insert(false),
-        m_try_shrink_on_next_insert(false) {
-    if (bucket_count > max_bucket_count()) {
-      TSL_RH_THROW_OR_TERMINATE(std::length_error,
-                                "The map exceeds its maximum bucket count.");
-    }
-
-    if (m_bucket_count > 0) {
-      m_buckets_data.resize(m_bucket_count);
-      m_buckets = m_buckets_data.data();
-
-      tsl_rh_assert(!m_buckets_data.empty());
-      m_buckets_data.back().set_as_last_bucket();
-    }
-
-    this->min_load_factor(min_load_factor);
-    this->max_load_factor(max_load_factor);
-  }
-#endif
 
   robin_hash(const robin_hash& other)
       : Hash(other),
@@ -1073,13 +1017,13 @@
   float max_load_factor() const { return m_max_load_factor; }
 
   void min_load_factor(float ml) {
-    m_min_load_factor = clamp(ml, float(MINIMUM_MIN_LOAD_FACTOR),
-                              float(MAXIMUM_MIN_LOAD_FACTOR));
+    m_min_load_factor = std::clamp(ml, float(MINIMUM_MIN_LOAD_FACTOR),
+                                   float(MAXIMUM_MIN_LOAD_FACTOR));
   }
 
   void max_load_factor(float ml) {
-    m_max_load_factor = clamp(ml, float(MINIMUM_MAX_LOAD_FACTOR),
-                              float(MAXIMUM_MAX_LOAD_FACTOR));
+    m_max_load_factor = std::clamp(ml, float(MINIMUM_MAX_LOAD_FACTOR),
+                                   float(MAXIMUM_MAX_LOAD_FACTOR));
     m_load_threshold = size_type(float(bucket_count()) * m_max_load_factor);
     tsl_rh_assert(bucket_count() == 0 || m_load_threshold < bucket_count());
   }
@@ -1524,6 +1468,9 @@
     } else {
       m_bucket_count = numeric_cast<size_type>(
           bucket_count_ds, "Deserialized bucket_count is too big.");
+      // Recompute m_load_threshold, during max_load_factor() the bucket count
+      // was still 0 which would trigger rehash on first insert
+      m_load_threshold = size_type(float(bucket_count()) * m_max_load_factor);
 
       GrowthPolicy::operator=(GrowthPolicy(m_bucket_count));
       // GrowthPolicy should not modify the bucket count we got from
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/robin-map-1.3.0/tests/CMakeLists.txt 
new/robin-map-1.4.0/tests/CMakeLists.txt
--- old/robin-map-1.3.0/tests/CMakeLists.txt    2024-04-19 21:21:18.000000000 
+0200
+++ new/robin-map-1.4.0/tests/CMakeLists.txt    2025-03-30 15:39:10.000000000 
+0200
@@ -8,7 +8,7 @@
                                    "robin_map_tests.cpp" 
                                    "robin_set_tests.cpp")
 
-target_compile_features(tsl_robin_map_tests PRIVATE cxx_std_11)
+target_compile_features(tsl_robin_map_tests PRIVATE cxx_std_17)
                                     
 if(CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID MATCHES 
"GNU")
     target_compile_options(tsl_robin_map_tests PRIVATE -Werror -Wall -Wextra 
-Wold-style-cast -DTSL_DEBUG -UNDEBUG)
@@ -18,7 +18,7 @@
 
 # Boost::unit_test_framework
 set(Boost_USE_STATIC_LIBS ON)
-find_package(Boost 1.54.0 REQUIRED COMPONENTS unit_test_framework)
+find_package(Boost REQUIRED COMPONENTS unit_test_framework)
 target_link_libraries(tsl_robin_map_tests PRIVATE Boost::unit_test_framework)  
 
 
 # tsl::robin_map

Reply via email to