ABI are not backwards compatible, see the "API changes" sections
further down for more information.
1. Use CMake build system instead of Autotools.
2. Use C++11 instead of C++98.
3. Use C++11 threads instead of OpenMP.
4. C/C++ API is now parallel by default.
5. Add many C/C++ libprimesieve tests (./test).
6. Improved error messages.
C++ API changes
---------------
The C++ API is now parallel by default i.e. the
primesieve::count_*() and primesieve::nth_prime() functions use all
CPU cores. Hence the old primesieve::parallel_*() functions have been
removed.
Removed from C++ API:
uint64_t parallel_count_primes(uint64_t start, uint64_t stop);
uint64_t parallel_count_twins(uint64_t start, uint64_t stop);
uint64_t parallel_count_triplets(uint64_t start, uint64_t stop);
uint64_t parallel_count_quadruplets(uint64_t start, uint64_t stop);
uint64_t parallel_count_quintuplets(uint64_t start, uint64_t stop);
uint64_t parallel_count_sextuplets(uint64_t start, uint64_t stop);
uint64_t parallel_nth_prime(int64_t n, uint64_t start = 0);
void callback_primes(uint64_t start, uint64_t stop, void (*callback)(uint64_t prime));
void callback_primes(uint64_t start, uint64_t stop, primesieve::Callback<uint64_t>* callback);
bool primesieve_test();
C API changes
-------------
The C API is now parallel by default i.e. the
primesieve_count_*() and primesieve_nth_prime() functions use all
CPU cores. Hence the old primesieve_parallel_*() functions have been
removed.
Removed from C API:
uint64_t primesieve_parallel_count_primes(uint64_t start, uint64_t stop);
uint64_t primesieve_parallel_count_twins(uint64_t start, uint64_t stop);
uint64_t primesieve_parallel_count_triplets(uint64_t start, uint64_t stop);
uint64_t primesieve_parallel_count_quadruplets(uint64_t start, uint64_t stop);
uint64_t primesieve_parallel_count_quintuplets(uint64_t start, uint64_t stop);
uint64_t primesieve_parallel_count_sextuplets(uint64_t start, uint64_t stop);
uint64_t primesieve_parallel_nth_prime(int64_t n, uint64_t start);
void primesieve_callback_primes(uint64_t start, uint64_t stop, void (*callback)(uint64_t prime));
int primesieve_test();
Changes in version 5.7.3, 19/11/2016
====================================
The API and ABI are backwards compatible.
1. New ./configure option: --enable-maintainer-mode
If this option is used the primesieve man page will be
regenerated in the make step.
See doc/README.md for more information.
Changes in version 5.7.2, 21/08/2016
====================================
The API and ABI are backwards compatible.
1. doc/primesieve.1: Add primesieve man page.
2. configure.ac: Add --with-help2man option to regenerate man page.
3. scripts/update_version.sh: Script that automatically updates the
version in all files, see RELEASE.md for more information.
Changes in version 5.7.1, 13/08/2016
====================================
The API and ABI are backwards compatible.
1. New --no-status command-line option to turn off the progressing
status while counting primes or prime k-tuplets.
2. README.md: New "Package managers" section.
Changes in version 5.7.0, 31/07/2016
====================================
1. primesieve can now find primes up to 2^64-1 (UINT64_MAX), the
previous limit was 2^64 - 2^32 * 10. Thanks to Huang Yuanbing
(author of ktprime) for submitting the patch.
2. Cleaned up pre-sieving: uses less memory + faster initialization.
3. Faster primesieve::iterator initialization.
C/C++ API changes
-----------------
The MAX_THREADS constant has been removed.
Changes in version 5.6.0, 29/11/2015
====================================
1. The C API prime generation functions now return true C arrays which
can be deallocated using free() in the user's code.
2. New high resolution icon size for primesieve GUI app.
3. primesieve GUI app: Bug fix for CPUs with L1 data cache size that
is not a power of 2 e.g. Intel Z2480 Atom (24 KB L1 cache).
4. Renamed doxygen directory to doc.
5. doc/Doxyfile.in: Fix out of source builds.
C++ API changes
---------------
All parallel callback functions have been removed. This was just crazy
functionality which I should never have implemented ...
void parallel_callback_primes(uint64_t start, uint64_t stop, void (*callback)(uint64_t prime));
void parallel_callback_primes(uint64_t start, uint64_t stop, primesieve::Callback<uint64_t>* callback);
void parallel_callback_primes(uint64_t start, uint64_t stop, void (*callback)(uint64_t prime, int thread_id));
void parallel_callback_primes(uint64_t start, uint64_t stop, primesieve::Callback<uint64_t, int>* callback);
C API changes
-------------
All parallel callback functions have been removed:
void primesieve_parallel_callback_primes(uint64_t start, uint64_t stop, void (*callback)(uint64_t prime, int thread_id));
Changes in version 5.5.0, 06/11/2015
====================================
This release contains many small incremental improvements. There are
2 minor backwards incompatible API changes which are described further
down.
1. primesieve GUI app: Runtime detection of CPU L1 cache size.
2. primesieve.pc.in: Added support for pkg-config.
3. appveyor.yml: Automated Windows (MSVC++) testing.
4. README.md: New "Bindings for other languages" section.
5. include/config.h: tune for Intel Skylake CPUs.
6. include/WheelFactorization.hpp: Slightly faster initialization.
7. src/primesieve/EratMedium.cpp: Unroll sieving loop, up to 5% speed up.
8. src/primesieve/popcount.cpp: Faster popcount algorithm.
9. examples/c/previous_prime.c: Shows how to use primesieve_previous_prime().
C++ API changes
---------------
primesieve::test() has been renamed to primesieve::primesieve_test()
in order to prevent naming collisions.
primesieve::iterator::previous_prime() now returns 0 if input <= 2,
previously an error was thrown. Rationale of this change:
https://github.com/kimwalisch/primesieve/issues/11#issuecomment-148939336
C API changes
-------------
primesieve_previous_prime() now returns 0 if input <= 2, previously
PRIMESIEVE_ERROR was returned. Rationale of this change:
https://github.com/kimwalisch/primesieve/issues/11#issuecomment-148939336
Changes in version 5.4.2, 04/04/2015
====================================
This is a minor new release, the API and ABI are backwards compatible.
1. Use silent building on Unix-like operating systems.
2. Add screenshot to README.md.
3. Makefile.am: Add autogen.sh to EXTRA_DIST.
Changes in version 5.4.1, 09/11/2014
====================================
This is a minor new release, the API and ABI are backwards compatible.
1. Fixed a bug in the configure.ac script which used SIEVESIZE=0
instead of SIEVESIZE=32 on QEMU virtual machines.
2. Introduce patch version (3rd version number) in order not to
increase the minor version for bug fix only releases.
Changes in version 5.4, 14/09/2014
==================================
This is a minor new release which fixes two bugs in the computation of
prime k-tuplets (twin primes, prime triplets, ...).
1. The primesieve::print_*() functions for prime k-tuplets have been
fixed, they were broken since primesieve-5.1.
https://github.com/kimwalisch/primesieve/commit/ff2fb6f7acfb7c83827803dbb09a73f4a47ab222
2. Prime 7-tuplets have been removed from primesieve (see API changes
further down). Below are the two modulo 30 patterns for prime
7-tuplets:
1) 30*k + { 7, 11, 13, 17, 19, 23, 29}
2) 30*k + {29, 31, 37, 41, 43, 47, 49}
Up until now primesieve only found prime 7-tuplets of the first
pattern e.g. it missed 5610 + {29, 31, ...}. Unfortunately this bug
cannot be fixed because of implementation constraints. Thus I have
decided to completely remove prime 7-tuplets from primesieve.
C++ API changes
---------------
All functions related to prime 7-tuplets have been removed:
uint64_t primesieve::print_septuplets(uint64_t start, uint64_t stop);
uint64_t primesieve::count_septuplets(uint64_t start, uint64_t stop);
uint64_t primesieve::parallel_count_septuplets(uint64_t start, uint64_t stop);
C API changes
-------------
All functions related to prime 7-tuplets have been removed:
uint64_t primesieve_print_septuplets(uint64_t start, uint64_t stop);
uint64_t primesieve_count_septuplets(uint64_t start, uint64_t stop);
uint64_t primesieve_parallel_count_septuplets(uint64_t start, uint64_t stop);
Changes in version 5.3, 06/07/2014
==================================
This is a minor new release with an important bug fix and improved
documentation, the API and ABI are backwards compatible.
1. Fix use of uninitialized variable bug in primesieve::iterator:
https://github.com/kimwalisch/primesieve/commit/006d572ea8fa4958eaf46c1db24c983b1ce27e1b
2. README.md update: Explain how to build from master-branch.
3. New file HACKING.md: Explains source tree, useful for developers.
Changes in version 5.2, 13/04/2014
==================================
1. Added backwards nth prime search, if n < 0
primesieve::nth_prime(int64_t n, uint64_t start);
will find the nth prime < start.
2. Faster nth prime implementation, more accurate guessing of the nth
prime gives up to 20% speed up if n < 10^8.
3. Added continuous integration testing with Travis (travis-ci.org),
files: .travis.yml, Readme.md (shows build status).
API changes!!!
In order to be compatible with other mathematical software like
Mathematica, Maple and SymPy the functions below have been modified
to return a prime > start (or < start), previously these functions
returned a prime >= start (or <= start).
uint64_t primesieve::nth_prime(int64_t n, uint64_t start);
uint64_t primesieve::iterator::next_prime();
uint64_t primesieve::iterator::previous_prime();
Changes in version 5.1, 14/02/2014
==================================