Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package primesieve for openSUSE:Factory 
checked in at 2025-11-06 18:13:15
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/primesieve (Old)
 and      /work/SRC/openSUSE:Factory/.primesieve.new.1980 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "primesieve"

Thu Nov  6 18:13:15 2025 rev:20 rq:1315763 version:12.10

Changes:
--------
--- /work/SRC/openSUSE:Factory/primesieve/primesieve.changes    2025-05-20 
09:39:04.547964216 +0200
+++ /work/SRC/openSUSE:Factory/.primesieve.new.1980/primesieve.changes  
2025-11-06 18:14:48.999506092 +0100
@@ -1,0 +2,9 @@
+Tue Nov 03 16:40:00 UTC 2025 - Kim Walisch <[email protected]>
+
+- Update to primesieve-12.10
+- Fix undefined behavior in Bucket allocation
+- Enable ARM SVE for Mingw-w64 on ARM64
+- Improve Windows libprimesieve.dll support
+- BUILD.md: Add WebAssembly/Emscripten build instructions
+
+-------------------------------------------------------------------

Old:
----
  primesieve-12.9.tar.gz

New:
----
  primesieve-12.10.tar.gz

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

Other differences:
------------------
++++++ primesieve.spec ++++++
--- /var/tmp/diff_new_pack.ZMMakw/_old  2025-11-06 18:14:50.347562964 +0100
+++ /var/tmp/diff_new_pack.ZMMakw/_new  2025-11-06 18:14:50.375564146 +0100
@@ -17,7 +17,7 @@
 
 
 Name:           primesieve
-Version:        12.9
+Version:        12.10
 Release:        0
 Summary:        A prime number generator
 License:        BSD-2-Clause

++++++ primesieve-12.9.tar.gz -> primesieve-12.10.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/primesieve-12.9/.github/workflows/ci.yml 
new/primesieve-12.10/.github/workflows/ci.yml
--- old/primesieve-12.9/.github/workflows/ci.yml        2025-05-14 
19:36:21.000000000 +0200
+++ new/primesieve-12.10/.github/workflows/ci.yml       2025-11-03 
16:57:58.000000000 +0100
@@ -125,6 +125,61 @@
       - name: primesieve 1e10 -d1e8 -p6 | md5sum
         run: if [ "$(./primesieve 1e10 -d1e8 -p6 | md5sum | cut -f1 -d' ')" != 
"5a0bc83fdef0bb116d60f356adfde52f" ]; then exit 1; fi
 
+  linux_emscripten:
+    strategy:
+      matrix:
+        platform: ['ubuntu-latest']
+        config: ['Release']
+    runs-on: ${{ matrix.platform }}
+    steps:
+      - uses: actions/checkout@v4
+      - name: Install Emscripten SDK
+        run: |
+          git clone https://github.com/emscripten-core/emsdk.git
+          cd emsdk
+          ./emsdk install latest
+          ./emsdk activate latest
+      - name: Configure (CMake)
+        run: |
+          source $GITHUB_WORKSPACE/emsdk/emsdk_env.sh
+          mkdir build
+          cd build
+          emcmake cmake .. -DCMAKE_BUILD_TYPE=${{matrix.config}} 
-DCMAKE_CXX_FLAGS="-Wall -Wextra -pedantic -Werror"
+      - name: Build (emmake make)
+        run: |
+          source $GITHUB_WORKSPACE/emsdk/emsdk_env.sh
+          cd build
+          emmake make -j2
+      - name: primesieve 1e10
+        run: source $GITHUB_WORKSPACE/emsdk/emsdk_env.sh; node 
build/primesieve.js 1e10
+      - name: primesieve 1e8 --nth-prime
+        run: source $GITHUB_WORKSPACE/emsdk/emsdk_env.sh; node 
build/primesieve.js 1e8 --nth-prime
+      # Test printing primes and prime k-tuplets
+      - name: primesieve 1e8 -p | md5sum
+        run: source $GITHUB_WORKSPACE/emsdk/emsdk_env.sh; if [ "$(node 
build/primesieve.js 1e8 -p | md5sum | cut -f1 -d' ')" != 
"4e2b0027288a27e9c99699364877c9db" ]; then exit 1; fi
+      - name: primesieve 1e8 -p2 | md5sum
+        run: source $GITHUB_WORKSPACE/emsdk/emsdk_env.sh; if [ "$(node 
build/primesieve.js 1e8 -p2 | md5sum | cut -f1 -d' ')" != 
"5076d235d5b03389034ec107227eab98" ]; then exit 1; fi
+      - name: primesieve 1e8 -p3 | md5sum
+        run: source $GITHUB_WORKSPACE/emsdk/emsdk_env.sh; if [ "$(node 
build/primesieve.js 1e8 -p3 | md5sum | cut -f1 -d' ')" != 
"1b40d7e67868ccc857df11c3e0f7e0f5" ]; then exit 1; fi
+      - name: primesieve 1e8 -p4 | md5sum
+        run: source $GITHUB_WORKSPACE/emsdk/emsdk_env.sh; if [ "$(node 
build/primesieve.js 1e8 -p4 | md5sum | cut -f1 -d' ')" != 
"b998d7cdbeae6623cdecba1b921cb2e1" ]; then exit 1; fi
+      - name: primesieve 1e8 -p5 | md5sum
+        run: source $GITHUB_WORKSPACE/emsdk/emsdk_env.sh; if [ "$(node 
build/primesieve.js 1e8 -p5 | md5sum | cut -f1 -d' ')" != 
"1ec7d5704d7399caf43667090b5bf836" ]; then exit 1; fi
+      - name: primesieve 1e8 -p6 | md5sum
+        run: source $GITHUB_WORKSPACE/emsdk/emsdk_env.sh; if [ "$(node 
build/primesieve.js 1e8 -p6 | md5sum | cut -f1 -d' ')" != 
"0fb813d345c94cf2012588d1f71328b5" ]; then exit 1; fi
+      - name: primesieve 1e10 -d1e8 -p | md5sum
+        run: source $GITHUB_WORKSPACE/emsdk/emsdk_env.sh; if [ "$(node 
build/primesieve.js 1e10 -d1e8 -p | md5sum | cut -f1 -d' ')" != 
"5fbe254a97ad3bbc07c224908c9d59b2" ]; then exit 1; fi
+      - name: primesieve 1e10 -d1e8 -p2 | md5sum
+        run: source $GITHUB_WORKSPACE/emsdk/emsdk_env.sh; if [ "$(node 
build/primesieve.js 1e10 -d1e8 -p2 | md5sum | cut -f1 -d' ')" != 
"7a7a770c1841a17a9a63b92b7b6532b9" ]; then exit 1; fi
+      - name: primesieve 1e10 -d1e8 -p3 | md5sum
+        run: source $GITHUB_WORKSPACE/emsdk/emsdk_env.sh; if [ "$(node 
build/primesieve.js 1e10 -d1e8 -p3 | md5sum | cut -f1 -d' ')" != 
"72323b08c62ad8342f7331e3d6d45a64" ]; then exit 1; fi
+      - name: primesieve 1e10 -d1e8 -p4 | md5sum
+        run: source $GITHUB_WORKSPACE/emsdk/emsdk_env.sh; if [ "$(node 
build/primesieve.js 1e10 -d1e8 -p4 | md5sum | cut -f1 -d' ')" != 
"c2b0818499f77aa35681db3826caf3f6" ]; then exit 1; fi
+      - name: primesieve 1e10 -d1e8 -p5 | md5sum
+        run: source $GITHUB_WORKSPACE/emsdk/emsdk_env.sh; if [ "$(node 
build/primesieve.js 1e10 -d1e8 -p5 | md5sum | cut -f1 -d' ')" != 
"11b50e4f75899891a62465f6d68fb76e" ]; then exit 1; fi
+      - name: primesieve 1e10 -d1e8 -p6 | md5sum
+        run: source $GITHUB_WORKSPACE/emsdk/emsdk_env.sh; if [ "$(node 
build/primesieve.js 1e10 -d1e8 -p6 | md5sum | cut -f1 -d' ')" != 
"5a0bc83fdef0bb116d60f356adfde52f" ]; then exit 1; fi
+
   macos_clang:
     strategy:
       matrix:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/primesieve-12.9/.gitignore 
new/primesieve-12.10/.gitignore
--- old/primesieve-12.9/.gitignore      2025-05-14 19:36:21.000000000 +0200
+++ new/primesieve-12.10/.gitignore     2025-11-03 16:57:58.000000000 +0100
@@ -18,6 +18,7 @@
 install_manifest.txt
 CTestTestfile.cmake
 /primesieve*
+!/primesieve.pc.in
 /libprimesieve*
 doc/primesieve.xml
 doc/Doxyfile
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/primesieve-12.9/CMakeLists.txt 
new/primesieve-12.10/CMakeLists.txt
--- old/primesieve-12.9/CMakeLists.txt  2025-05-14 19:36:21.000000000 +0200
+++ new/primesieve-12.10/CMakeLists.txt 2025-11-03 16:57:58.000000000 +0100
@@ -1,7 +1,7 @@
 cmake_minimum_required(VERSION 3.4...3.27)
 project(primesieve CXX)
-set(PRIMESIEVE_VERSION "12.9")
-set(PRIMESIEVE_SOVERSION "12.9.0")
+set(PRIMESIEVE_VERSION "12.10")
+set(PRIMESIEVE_SOVERSION "12.10.0")
 
 # Build options ######################################################
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/primesieve-12.9/ChangeLog 
new/primesieve-12.10/ChangeLog
--- old/primesieve-12.9/ChangeLog       2025-05-14 19:36:21.000000000 +0200
+++ new/primesieve-12.10/ChangeLog      2025-11-03 16:57:58.000000000 +0100
@@ -1,3 +1,14 @@
+Changes in version 12.10, 03/11/2025
+====================================
+
+* src/MemoryPool.cpp: Fix undefined behavior in Bucket allocation.
+* build_mingw64_arm64.sh: Enable ARM SVE for Mingw-w64 on ARM64.
+* test/CMakeLists.txt: Improve Windows libprimesieve.dll support.
+* examples/c/CMakeLists.txt: Improve Windows libprimesieve.dll support.
+* examples/cpp/CMakeLists.txt: Improve Windows libprimesieve.dll support.
+* ci.yml: Add WebAssembly/Emscripten test.
+* BUILD.md: Add WebAssembly/Emscripten build instructions.
+
 Changes in version 12.9, 14/05/2025
 ===================================
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/primesieve-12.9/README.md 
new/primesieve-12.10/README.md
--- old/primesieve-12.9/README.md       2025-05-14 19:36:21.000000000 +0200
+++ new/primesieve-12.10/README.md      2025-11-03 16:57:58.000000000 +0100
@@ -17,8 +17,8 @@
 [wheel factorization](https://en.wikipedia.org/wiki/Wheel_factorization).
 This algorithm has a run time complexity of $O(n\ \log\ \log\ n)$ operations 
and uses
 $O(\sqrt{n})$ memory. Furthermore primesieve uses the
-[bucket sieve](http://sweet.ua.pt/tos/software/prime_sieve.html)
-algorithm which improves the cache efficiency when generating primes > 
2<sup>32</sup>.
+[bucket sieve algorithm](http://sweet.ua.pt/tos/software/prime_sieve.html)
+which improves the cache efficiency when generating primes > 2<sup>32</sup>.
 primesieve uses 8 bytes per sieving prime, in practice its memory usage is 
about
 $\pi(\sqrt{n})\times 8$ bytes per thread.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/primesieve-12.9/doc/BUILD.md 
new/primesieve-12.10/doc/BUILD.md
--- old/primesieve-12.9/doc/BUILD.md    2025-05-14 19:36:21.000000000 +0200
+++ new/primesieve-12.10/doc/BUILD.md   2025-11-03 16:57:58.000000000 +0100
@@ -1,6 +1,18 @@
 # primesieve build instructions
 
-## Prerequisites
+# Contents
+
+* [Prerequisites](#prerequisites)
+* [Unix-like OSes](#unix-like-oses)
+* [MinGW/MSYS2 (Windows)](#mingwmsys2-windows)
+* [Microsoft Visual C++](#microsoft-visual-c)
+* [Emscripten/WebAssembly](#emscriptenwebassembly)
+* [CMake configure options](#cmake-configure-options)
+* [Run the tests](#run-the-tests)
+* [API documentation](#api-documentation)
+* [Man page regeneration](#man-page-regeneration)
+
+# Prerequisites
 
 You need to have installed a C++ compiler which supports C++11 (or later) and 
CMake ≥ 3.4.
 
@@ -27,7 +39,7 @@
     </tr>
 </table>
 
-## Unix-like OSes
+# Unix-like OSes
 
 Open a terminal, cd into the primesieve directory and run:
 
@@ -38,7 +50,7 @@
 sudo ldconfig
 ```
 
-## MinGW/MSYS2 (Windows)
+# MinGW/MSYS2 (Windows)
 
 Open a terminal, cd into the primesieve directory and run:
 
@@ -47,7 +59,7 @@
 cmake --build . --parallel
 ```
 
-## Microsoft Visual C++
+# Microsoft Visual C++
 
 First install [Visual Studio](https://visualstudio.microsoft.com/downloads/)
 (includes CMake) on your Windows PC. Then go to the start menu, select Visual
@@ -63,7 +75,29 @@
 cmake --install . --config Release
 ```
 
-## CMake configure options
+# Emscripten/WebAssembly
+
+Using the Emscripten compiler you can compile the primesieve C/C++ library to 
WebAssembly:
+
+```bash
+# Install the Emscripten compiler
+git clone https://github.com/emscripten-core/emsdk.git
+cd emsdk
+./emsdk install latest
+./emsdk activate latest
+source emsdk_env.sh
+
+# Compile primesieve to WebAssembly
+git clone https://github.com/kimwalisch/primesieve.git
+cd primesieve
+emcmake cmake .
+emmake make -j4
+
+# Run the primesieve WebAssembly binary
+node ./primesieve.js 1e10
+```
+
+# CMake configure options
 
 By default the primesieve binary and the static/shared libprimesieve will be
 built. The build options can be modified at the configure step using e.g.
@@ -82,7 +116,7 @@
 option(WITH_MSVC_CRT_STATIC "Link primesieve.lib with /MT instead of the 
default /MD" OFF)
 ```
 
-## Run the tests
+# Run the tests
 
 Open a terminal, cd into the primesieve directory and run:
 
@@ -97,16 +131,7 @@
 about primesieve testing such as testing in debug mode and testing
 using GCC/Clang sanitizers.
 
-## C/C++ examples
-
-Open a terminal, cd into the primesieve directory and run:
-
-```bash
-cmake -DBUILD_EXAMPLES=ON .
-cmake --build . --parallel
-```
-
-## API documentation
+# API documentation
 
 To build the primesieve C/C++ API documentation in html/PDF format
 you need to have installed the ```doxygen```, ```doxygen-latex``` and
@@ -117,7 +142,7 @@
 cmake --build . --target doc
 ```
 
-## Man page regeneration
+# Man page regeneration
 
 primesieve includes an up to date man page at ```doc/primesieve.1```.
 That man page has been generated from ```doc/primesieve.txt``` using
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/primesieve-12.9/doc/CPP_API.md 
new/primesieve-12.10/doc/CPP_API.md
--- old/primesieve-12.9/doc/CPP_API.md  2025-05-14 19:36:21.000000000 +0200
+++ new/primesieve-12.10/doc/CPP_API.md 2025-11-03 16:57:58.000000000 +0100
@@ -179,7 +179,7 @@
 
 Before using ```primesieve::iterator::prev_prime()``` you must change the 
start number
 either in the constructor or using the ```jump_to()``` method (because the 
start number is
-initialized to 0 be default).
+initialized to 0 by default).
 
 * Please note that the first ```prev_prime()``` invocation returns the first 
prime ≤ start number.
   If want to generate primes < start number you need to use e.g. 
```jump_to(start-1)```.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/primesieve-12.9/doc/C_API.md 
new/primesieve-12.10/doc/C_API.md
--- old/primesieve-12.9/doc/C_API.md    2025-05-14 19:36:21.000000000 +0200
+++ new/primesieve-12.10/doc/C_API.md   2025-11-03 16:57:58.000000000 +0100
@@ -162,7 +162,7 @@
 ## ```primesieve_prev_prime()```
 
 Before using ```primesieve_prev_prime()``` you must first change the start 
number using the
-```primesieve_jump_to()``` function (because the start number is initialized 
to 0 be default).
+```primesieve_jump_to()``` function (because the start number is initialized 
to 0 by default).
 
 * Please note that the first ```primesieve_prev_prime()``` call returns the 
first prime ≤ start
   number. If want to generate primes < start number you need to use e.g. 
```primesieve_jump_to(iter, start-1, stop)```.
@@ -330,7 +330,7 @@
 ## ```primesieve_iterator.is_error```
 
 For the ```primesieve_iterator```, you can check if the return value of 
```primesieve_next_prime()```
-is ```PRIMESIEVE_ERROR``` to know if an error occured. However, 
```primesieve_iterator``` also supports
+is ```PRIMESIEVE_ERROR``` to know if an error occurred. However, 
```primesieve_iterator``` also supports
 a 2nd option for error handling: by default ```primesieve_iterator.is_error``` 
is initialized to 0 in
 ```primesieve_init()```, if any error occurs 
```primesieve_iterator.is_error``` is set to 1.
 This is useful to check after a computation that no error has occurred, this 
way you don't have to
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/primesieve-12.9/doc/Doxyfile.in 
new/primesieve-12.10/doc/Doxyfile.in
--- old/primesieve-12.9/doc/Doxyfile.in 2025-05-14 19:36:21.000000000 +0200
+++ new/primesieve-12.10/doc/Doxyfile.in        2025-11-03 16:57:58.000000000 
+0100
@@ -32,3 +32,4 @@
 GENERATE_LATEX         = @HAVE_LATEX@
 FULL_PATH_NAMES        = NO
 HAVE_DOT               = @HAVE_DOT@
+LATEX_EXTRA_STYLESHEET = @PROJECT_SOURCE_DIR@/doc/override_tables.sty
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/primesieve-12.9/doc/override_tables.sty 
new/primesieve-12.10/doc/override_tables.sty
--- old/primesieve-12.9/doc/override_tables.sty 1970-01-01 01:00:00.000000000 
+0100
+++ new/primesieve-12.10/doc/override_tables.sty        2025-11-03 
16:57:58.000000000 +0100
@@ -0,0 +1,101 @@
+\NeedsTeXFormat{LaTeX2e}
+
+% Packages used by this style file
+\RequirePackage{doxygen}
+
+% Used by parameter lists
+\renewenvironment{DoxyParams}[2][]{%
+    \tabulinesep=1mm%
+    \par%
+    \ifthenelse{\equal{#1}{}}%
+      {\begin{longtable}[l]{|l|l|}}% name + description
+    {\ifthenelse{\equal{#1}{1}}%
+      {\begin{longtable}[l]{|l|l|l|}}% in/out + name + desc
+      {\begin{longtable}[l]{|l|l|l|l|}}% in/out + type + name + desc
+    }
+    
\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray}
 #2}\\[1ex]%
+    \endfirsthead%
+    
\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray}
 #2}\\[1ex]%
+    \endhead%
+    \hline%
+}{%
+    \end{longtable}%
+    \vspace{6pt}%
+}
+
+% Used for fields of simple structs
+\renewenvironment{DoxyFields}[1]{%
+    \tabulinesep=1mm%
+    \par%
+    \begin{longtable}[l]{|l|l|l|}%
+    
\multicolumn{3}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray}
 #1}\\[1ex]%
+    \endfirsthead%
+    
\multicolumn{3}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray}
 #1}\\[1ex]%
+    \endhead%
+    \hline%
+}{%
+    \end{longtable}%
+    \vspace{6pt}%
+}
+
+% Used for fields simple class style enums
+\renewenvironment{DoxyEnumFields}[2][]{%
+    \tabulinesep=1mm%
+    \par%
+    \ifthenelse{\equal{#1}{2}}%
+      {\begin{longtable}[l]{|l|l|}}%
+      {\begin{longtable}[l]{|l|l|l|}}% with init value
+    
\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray}
 #2}\\[1ex]%
+    \endfirsthead%
+    
\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray}
 #2}\\[1ex]%
+    \endhead%
+    \hline%
+}{%
+    \end{longtable}%
+    \vspace{6pt}%
+}
+
+% Used by return value lists
+\renewenvironment{DoxyRetVals}[1]{%
+    \tabulinesep=1mm%
+    \par%
+    \begin{longtable}[l]{|l|l|}%
+    
\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray}
 #1}\\[1ex]%
+    \endfirsthead%
+    
\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray}
 #1}\\[1ex]%
+    \endhead%
+    \hline%
+}{%
+    \end{longtable}%
+    \vspace{6pt}%
+}
+
+% Used by exception lists
+\renewenvironment{DoxyExceptions}[1]{%
+    \tabulinesep=1mm%
+    \par%
+    \begin{longtable}[l]{|l|l|}%
+    
\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray}
 #1}\\[1ex]%
+    \endfirsthead%
+    
\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray}
 #1}\\[1ex]%
+    \endhead%
+    \hline%
+}{%
+    \end{longtable}%
+    \vspace{6pt}%
+}
+
+% Used by template parameter lists
+\renewenvironment{DoxyTemplParams}[1]{%
+    \tabulinesep=1mm%
+    \par%
+    \begin{longtable}[l]{|l|l|}%
+    
\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray}
 #1}\\[1ex]%
+    \endfirsthead%
+    
\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray}
 #1}\\[1ex]%
+    \endhead%
+    \hline%
+}{%
+    \end{longtable}%
+    \vspace{6pt}%
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/primesieve-12.9/examples/c/CMakeLists.txt 
new/primesieve-12.10/examples/c/CMakeLists.txt
--- old/primesieve-12.9/examples/c/CMakeLists.txt       2025-05-14 
19:36:21.000000000 +0200
+++ new/primesieve-12.10/examples/c/CMakeLists.txt      2025-11-03 
16:57:58.000000000 +0100
@@ -5,4 +5,14 @@
     get_filename_component(binary_name ${file} NAME_WE)
     add_executable(${binary_name}_c ${file})
     target_link_libraries(${binary_name}_c primesieve::primesieve)
+
+    # Copy primesieve.dll to test directory.
+    # On Windows the DLLs must be in the same directory
+    # as the binaries that depend on them.
+    if (WIN32 AND NOT STATICALLY_LINK_LIBPRIMESIEVE)
+        add_custom_command(TARGET ${binary_name}_c POST_BUILD
+            COMMAND ${CMAKE_COMMAND} -E copy_if_different
+                $<TARGET_FILE:libprimesieve>
+                $<TARGET_FILE_DIR:${binary_name}_c>)
+    endif()
 endforeach()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/primesieve-12.9/examples/cpp/CMakeLists.txt 
new/primesieve-12.10/examples/cpp/CMakeLists.txt
--- old/primesieve-12.9/examples/cpp/CMakeLists.txt     2025-05-14 
19:36:21.000000000 +0200
+++ new/primesieve-12.10/examples/cpp/CMakeLists.txt    2025-11-03 
16:57:58.000000000 +0100
@@ -3,4 +3,14 @@
     get_filename_component(binary_name ${file} NAME_WE)
     add_executable(${binary_name} ${file})
     target_link_libraries(${binary_name} primesieve::primesieve)
+
+    # Copy primesieve.dll to test directory.
+    # On Windows the DLLs must be in the same directory
+    # as the binaries that depend on them.
+    if (WIN32 AND NOT STATICALLY_LINK_LIBPRIMESIEVE)
+        add_custom_command(TARGET ${binary_name} POST_BUILD
+            COMMAND ${CMAKE_COMMAND} -E copy_if_different
+                $<TARGET_FILE:libprimesieve>
+                $<TARGET_FILE_DIR:${binary_name}>)
+    endif()
 endforeach()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/primesieve-12.9/include/primesieve.h 
new/primesieve-12.10/include/primesieve.h
--- old/primesieve-12.9/include/primesieve.h    2025-05-14 19:36:21.000000000 
+0200
+++ new/primesieve-12.10/include/primesieve.h   2025-11-03 16:57:58.000000000 
+0100
@@ -15,9 +15,9 @@
 #ifndef PRIMESIEVE_H
 #define PRIMESIEVE_H
 
-#define PRIMESIEVE_VERSION "12.9"
+#define PRIMESIEVE_VERSION "12.10"
 #define PRIMESIEVE_VERSION_MAJOR 12
-#define PRIMESIEVE_VERSION_MINOR 9
+#define PRIMESIEVE_VERSION_MINOR 10
 
 #include <primesieve/iterator.h>
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/primesieve-12.9/include/primesieve.hpp 
new/primesieve-12.10/include/primesieve.hpp
--- old/primesieve-12.9/include/primesieve.hpp  2025-05-14 19:36:21.000000000 
+0200
+++ new/primesieve-12.10/include/primesieve.hpp 2025-11-03 16:57:58.000000000 
+0100
@@ -13,9 +13,9 @@
 #ifndef PRIMESIEVE_HPP
 #define PRIMESIEVE_HPP
 
-#define PRIMESIEVE_VERSION "12.9"
+#define PRIMESIEVE_VERSION "12.10"
 #define PRIMESIEVE_VERSION_MAJOR 12
-#define PRIMESIEVE_VERSION_MINOR 9
+#define PRIMESIEVE_VERSION_MINOR 10
 
 #include <primesieve/iterator.hpp>
 #include <primesieve/primesieve_error.hpp>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/primesieve-12.9/scripts/build_mingw64_arm64.sh 
new/primesieve-12.10/scripts/build_mingw64_arm64.sh
--- old/primesieve-12.9/scripts/build_mingw64_arm64.sh  2025-05-14 
19:36:21.000000000 +0200
+++ new/primesieve-12.10/scripts/build_mingw64_arm64.sh 2025-11-03 
16:57:58.000000000 +0100
@@ -48,7 +48,7 @@
 mkdir build-release
 cd build-release
 
-clang++ -static -O3 -flto -DNDEBUG -D_WIN32_WINNT=0x0A00 -Wall -Wextra 
-pedantic -I../include -I../src ../src/*.cpp ../src/app/*.cpp -o primesieve.exe
+clang++ -static -O3 -flto -DENABLE_MULTIARCH_ARM_SVE -DNDEBUG 
-D_WIN32_WINNT=0x0A00 -Wall -Wextra -pedantic -I../include -I../src 
../src/*.cpp ../src/arch/arm/sve.cpp ../src/app/*.cpp -o primesieve.exe
 strip primesieve.exe
 
 # Create a release zip archive
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/primesieve-12.9/src/MemoryPool.cpp 
new/primesieve-12.10/src/MemoryPool.cpp
--- old/primesieve-12.9/src/MemoryPool.cpp      2025-05-14 19:36:21.000000000 
+0200
+++ new/primesieve-12.10/src/MemoryPool.cpp     2025-11-03 16:57:58.000000000 
+0100
@@ -94,6 +94,21 @@
   if_unlikely(count_ < 10)
     throw primesieve_error("MemoryPool: insufficient buckets allocated!");
 
+#if __cplusplus >= 201703L
+  // Start lifetime of each Bucket object using placement new.
+  // * new (ptr) Bucket[count]{}; -> starts lifetime, zero-initializes members.
+  // * new (ptr) Bucket[count];   -> starts lifetime, members are left 
uninitialized.
+  // Hence, the compiler will optimize away this code.
+  buckets = new (buckets) Bucket[count_];
+#else
+  // Start lifetime of each Bucket object using placement new.
+  // * new (ptr) Bucket(); -> starts lifetime, zero-initializes members.
+  // * new (ptr) Bucket;   -> starts lifetime, members are left uninitialized.
+  // Hence, the compiler will optimize away this loop.
+  for (std::size_t i = 0; i < count_; i++)
+    new (&buckets[i]) Bucket;
+#endif
+
   for (std::size_t i = 0; i < count_ - 1; i++)
   {
     buckets[i].reset();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/primesieve-12.9/test/CMakeLists.txt 
new/primesieve-12.10/test/CMakeLists.txt
--- old/primesieve-12.9/test/CMakeLists.txt     2025-05-14 19:36:21.000000000 
+0200
+++ new/primesieve-12.10/test/CMakeLists.txt    2025-11-03 16:57:58.000000000 
+0100
@@ -8,4 +8,14 @@
     target_include_directories(${binary_name} PRIVATE ${CMAKE_SOURCE_DIR}/src)
     target_compile_definitions(${binary_name} PRIVATE 
${PRIMESIEVE_COMPILE_DEFINITIONS})
     add_test(NAME ${binary_name} COMMAND ${binary_name})
+
+    # Copy primesieve.dll to test directory.
+    # On Windows the DLLs must be in the same directory
+    # as the binaries that depend on them.
+    if (WIN32 AND NOT STATICALLY_LINK_LIBPRIMESIEVE)
+        add_custom_command(TARGET ${binary_name} POST_BUILD
+            COMMAND ${CMAKE_COMMAND} -E copy_if_different
+                $<TARGET_FILE:libprimesieve>
+                $<TARGET_FILE_DIR:${binary_name}>)
+    endif()
 endforeach()

Reply via email to