Skip to content

Releases: kimwalisch/primesieve

primesieve-12.13

07 Feb 08:05

Choose a tag to compare

This is a bugfix release, it is fully backwards compatible with the previous release.

Due to incomplete/incorrect changes in the CMakeLists.txt file of the previous primesieve-12.12 release, the version number was missing in the primesieve.pc (pkg-config) file. This release fixes that bug.

  • primesieve.pc.in: * Fix missing version in .pc file #176.
  • Doxyfile.in: * Fix missing version #176.

primesieve-12.12

26 Jan 15:34
9e99af9

Choose a tag to compare

This is a new maintenance release, it is fully backwards compatible with the previous release.

ChangeLog

  • CMakeLists.txt: Fix CMAKE_PROJECT_VERSION not defined.
  • doc/Doxyfile.in: Reverse workaround for Doxygen/LaTeX broken tables #172.
  • Automated building Windows binaries using GitHub Actions CI.
  • build_clang_x64.ps1: New Clang Windows x64 build script.
  • build_clang_arm64.ps1: New Clang Windows ARM64 build script.

primesieve-12.11

16 Dec 11:16

Choose a tag to compare

This is a new maintenance release, it is fully backwards compatible with the previous release.

The code for printing primes to stdout has been significantly improved using a new zero-copy & zero-allocation algorithm. This improvement speeds up writing primes to a text file by up to 10x. On my MacBook M2, primesieve can now write primes to disk at a rate of more than 1 GB/s.

  • calculator.hpp: Update to version 2.0 with improved error handling.
  • test/calculator.cpp: Add much more tests for calculator.hpp.
  • PreSieve.cpp: Simplify SIMD runtime dispatching.
  • CountPrintPrimes.cpp: Faster printing of primes to stdout.
  • CmdOptions.cpp: Prevent multiple different --print options.
  • CMakeLists.txt: Set CMAKE_VISIBILITY_INLINES_HIDDEN=ON by default.
  • BUILD.md: Update MSVC build instructions.

primesieve-12.10

05 Nov 17:08

Choose a tag to compare

This is a new maintenance release, it is fully backwards compatible with the previous release.

  • Add workaround for Doxygen/LaTeX broken tables #170
  • 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.

primesieve-12.9

17 May 17:37

Choose a tag to compare

This is a new maintenance release, it is fully backwards compatible with the previous release.

  • CMakeLists.txt: Speed up build by removing compile dependencies.
  • Move private header files from /include to /src.
  • src/CMakeLists.txt: Update for private header files in /src.
  • test/CMakeLists.txt: Update for private header files in /src.
  • Vector.hpp: Get rid of std::is_trivial which is deprecated in C++26.

primesieve-12.8

14 Apr 10:46

Choose a tag to compare

This is a new maintenance release, it is fully backwards compatible with the previous release.

  • Vectorize primesieve::iterator.prev_prime() using AVX512.
  • api.cpp: Tune sieve array size.
  • PreSieve.cpp: Simplify SIMD code.
  • PreSieve_default.hpp: New algorithm that is also fast using -Os and -O2.
  • PreSieve_arm_neon.hpp: New file, contains ARM NEON algorithm.
  • PreSieve_arm_sve.hpp: New file, contains ARM SVE algorithm.
  • PreSieve_x86_avx512.hpp: New file, contains AVX512 algorithm.
  • PreSieve_x86_sse2.hpp: New file, contains SSE2 algorithm.
  • ci/benchmark.yaml: Add CI test to detect performance regressions.
  • README.md: Fix Markdown math formula.
  • README.md: Add stress testing section.
  • C_API.md: Fix Markdown math formula.
  • CPP_API.md: Fix Markdown math formula.

primesieve-12.7

02 Mar 19:21

Choose a tag to compare

This release adds ARM SVE runtime dispatching, it is enabled by default on Linux for ARM64 CPUs and it has also been implemented for Windows (but support in Microsoft's Windows.h is still missing). The C/C++ API and ABI of this release are fully backwards compatible with primesieve-12.*

  • multiarch_sve_arm.cmake: Improve ARM SVE detection.
  • src/arch/arm/sve.cpp: Detect ARM SVE on Linux and Windows.
  • EratBig.cpp: Simplify bucket handling.
  • Erat.cpp: Tune sieve size using FACTOR_SIEVESIZE.
  • README.md: Add Sponsors section.

Thanks to @AndrewVSutherland and @AlgoWin for being primesieve sponsors in this release cycle!

primesieve-12.6

18 Nov 16:07

Choose a tag to compare

This is a new maintenance release, it is fully backwards compatible with the previous release.

  • PreSieve.cpp: Added AVX512 and ARM SVE pre-sieving, up to 3% faster.
  • PreSieve.cpp: Increased pre-sieving to primes ≀ 163 (previously primes ≀ 100). Memory usage of pre-sieve lookup tables has been reduced from 210 kilobytes to 123 kilobytes and the pre-sieve lookup tables are now static (not generated at runtime anymore).
  • CpuInfo.cpp: More robust CPU cache size detection.

primesieve-12.5

25 Oct 16:37

Choose a tag to compare

This release improves the thread load balancing on CPUs with a large number of CPU cores. The worker threads now process smaller sieve intervals which improves the performance of short computations ≀10 seconds. On a 4th Gen AMD EPYC 9R14 CPU with 192 threads counting the primes up to 10^12 now runs 10% faster (in 1.187 secs) and counting the primes up to 10^11 runs 70% faster (in 0.115 secs).

ChangeLog

  • ParallelSieve.cpp: Tune thread load balancing.

primesieve-12.4

01 Aug 19:13

Choose a tag to compare

This is a maintenance release, the C/C++ API and ABI are fully backwards compatible with primesieve-12.*

ChangeLog

  • Move x86 CPUID code from cpuid.hpp to src/x86/cpuid.cpp.
  • multiarch_x86_popcnt.cmake: Detect x86 POPCNT support.
  • CMakeLists.txt: Use CMake list for all compile time definitions.
  • CMakeLists.txt: Use CMake list for all link libraries.