Changes in fplll-5.0: - switched to C++11 - switched to more open development model on GitHub, cf. CONTRIBUTING.md - support for computing optimal pruning parameters for a given lattice dimension/shape/radius - BKZ 2.0: recursive BKZ preprocessing, extreme pruning, gaussian heuristic bound - precomputed BKZ (2.0) reduction strategies up to block size 90, cf. https://github.com/fplll/strategizer - Self-Dual BKZ and Slide reduction - faster, recursive enumeration implementation - Gaussian lattice sieving - Python interface at https://github.com/fplll/fpylll - optional dumping Gram-Schmidt vectors during execution of algorithm - q-ary lattice generator - instructions on how to cite - optional support for doubledouble and quaddouble - pkg-config support - API documentation at https://fplll.github.io/fplll/ - revised build system supporting parallel build - copyright headers - dropped fplllv3 compatibility layer - greatly increased test coverage, tests are run on every commit or pull request - coding/naming convention - FP API improved to allow for more readable/natural code Changes in fplll-4.0.4: - compatibility for packages that still expect to build against libfplll version 3. - updates of config.sub and config.guess - better check that MPFR and GMP are installed - compilation issue with NaN's Changes in fplll-4.0.3: - Compiler issues with Cygwin Changes in fplll-4.0.2: - Changed formulation for the license, in README.html Main changes in fplll-4.0.1: - Compiler warnings about unused parameters fixed Main changes in fplll-4.0.0: - BKZ reduction, available with 'fplll -a bkz -b block_size' ******************************************************************* Changes in fplll-3.1.3: - Fixed build process when DESTDIR is defined Changes in fplll-3.1.2: - Memory leak fixed in the wrapper. Main changes in fplll-3.1.1: - Some code is no longer included in the header files but is compiled in libfplll instead. The -lfplll option will now be required for apps which could be compiled without it. - 'make install' puts all header files but fplll.h in a subdirectory named fplll - New programming interface for the library (documented in README.html). - 'generate' renamed to 'latticegen'. - Removal of fplll_verbose. Use the '-v' option instead. - Minor bugs fixed in all versions of LLL. - More important bugs fixed in the SVP solver. - Optimization of the SVP solver. - By default, 'fplll -a svp' now gives the coordinates of a shortest vector in the _standard_ basis. ******************************************************************* The main differences between fplll-2.1 and fplll-3.0 are the following: - short lattice vector enumeration algorithm (by Xavier Pujol). - GPL -> LGPLv2 - no more need to specify the number of rows and columns in the input of the fplll binary. - new version of dpe.h [Patrick Pelissier and Paul Zimmermann] ******************************************************************* The main differences between fplll-2.1 and fplll-2.0 are the following: - "configure/make/make install" packaging (thanks to Martin Albrecht) - few minor changes to make fplll portable to SAGE (thanks to Martin Albrecht) - conversion scripts between MAGMA and fplll formats. - a bug fixed in fast_early (discovered by Martin Albrecht) ******************************************************************* fplll-2.0 is an improved version of fplll-1.3. Parts of it resemble Magma's LLL (Allan Steel, Damien Stehle) and/or NTL's LLL (Victor Shoup). The improvements from fplll-1.3 to fplll-2.0 were mostly performed by David Cade. Here is a brief summary of the changes: - the major algorithmic improvement is the so-called wrapper, which chooses for the user a guess of the right sequence of heuristic/proved variants to use, in order to finish as quick as possible, but in a reliable way. - the early-reduction strategy of Allan Steel has been integrated. It consists in size-reducing vectors earlier than what would have been done in the standard LLL. This is not integrated into the wrapper yet. - we switched from C to C++, to simplify our lives with the wrapper. It is extremely convenient for the use of the underlying arrithmetics (integers and floating-point numbers). - we translated the matrix indices by 1: the first matrix entry is B[0][0] instead of B[1][1]. - automatised triangular option: the code looks at the matrix and decides how close to upper-triangular it is.