diff --git a/doc/source/history.rst b/doc/source/history.rst index 8e4989991b..e0493bf318 100644 --- a/doc/source/history.rst +++ b/doc/source/history.rst @@ -6,21 +6,170 @@ History and changes FLINT version history ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +????-??-?? -- FLINT 3.2.0-dev +------------------------------------------------------------------------------- + +Main contributors: Albin Ahlbäck (AA), Bill Allombert (BA), Ricardo Buring (RB), +Edgar Costa (EC), Fredrik Johansson (FJ), Vincent Neiger (VN). + +* Features + + * Add new module ``mpn_mod`` for fixed-size modulo arithmetic (FJ). + * Implement computing qqbar roots of qqbar polynomials (FJ). + * Add generic C mulhigh (FJ). + * Implement ``n_factor_evaluate`` (AA). + +* Examples + + * Add AKS primality example program (FJ). + * Add example on double exponential integration (Hartmut Monien). + +* Performance + + * Implement ``flint_mpn_2add_n_inplace`` for x86_64 architectures supporting + the ADX instruction set for adding two `n` limbed integers onto another `n` + limbed integer inplace, returning the carry (AA). + * Replace ``flint_mpn_divexact_1`` with ``mpn_divexact_1`` (AA). + * Implement generic ``flint_mpn_mulhigh`` and ``flint_mpn_sqrhigh`` for all + ranges based on Mulders' algorithm (FJ). + * Add ``flint_mpn_mul_Xn`` for `X < 16` on Arm v8, outperforming GMP on Apple + M1 (AA). + * Add ``flint_mpn_mul_2`` for Arm v8 (AA). + * Push some parameters into ``flint-mparam.h``, mainly thresholds for FFT + multiplication, currently only for Skylake, Zen 3 and Apple M1 (AA). + * Add inline assembly version of ``MPN_IORD_U``, where the x86 version is + taken from GMP, and an Arm v8 version was added as well (AA). + * Use ``flint_mpn_mulhigh`` in ``mpn_*_preinvn`` methods (FJ). + * Avoid 8x excessive memory allocation in ``fmpz`` preinvn functions (FJ). + * Use ``flint_mpn_mulhigh`` for unbalances preinvn divisions (FJ). + * Minimize 32-bit instructions in ``x86_64`` assembly. + * Add ``flint_mpn_mullow_N`` for `N \le 8` on x86_64 architectures supporting + the ADX instruction set (AA). + * Add ``flint_mpn_mullow_basecase`` for x86_64 architectures supporting the + ADX instruction set (AA). + * Micro-optimize ``flint_mpn_mulhigh`` (AA). + * Add ``flint_mpn_sqr_N`` routines for `N \le 9` for Arm v8 (AA). + * Add ``flint_mpn_mulhigh_N`` routines for `N \le 8` for Arm v8 (AA). + * Add ``flint_mpn_sqrhigh_N`` routines for `N \le 8` for Arm v8 (AA). + * Add ``_flint_mpn_mulhigh_basecase`` routines Arm v8 optimized for Apple M1 + (AA). + +* Bug fixes + + * Fix segfault in ``examples/fq_poly`` (FJ, reported by Andrea Lesavourey). + * Fix uninitialized and uncleared variables (FJ). + * Fix wrong stack usage in x86 and Arm assembly routines (AA). + * Fix missing break statement in example program (FJ). + * Fix assertion in ``flint_mpn_mulhigh`` (AA). + * Fix bug in ``gr_series`` (FJ). + * Fix primitive root prime (VN). + * Do not include ``crt_helpers.h`` on 32-bit systems (FJ). + +* Build system + + * Add GMP's ``config.guess`` and utilize it (AA). + * Check for more CPUs in ``config.guess``, including Intel Comet Lake and + Github's Apple M1 virtual runner (AA). + * Valdidate more CPUs in ``config.guess``, including ``x86_64v3`` (AA). + * Set compiler architecture dependent flags depending on ``$host`` in + Autotools (AA). + * Add check for Aarch64/Arm v8 (AA). + * Search for more GMP internal functions (AA). + * Implement parameter files ``flint-mparam.h`` based on architecture (AA). + * Create an include directory to build examples in ``Makefile`` (BA). + * Fix missing header (VN). + * Use CXX when testing NTL (George Huebner). + +* Tests + + * Fix test for ``flint_mpn_mul`` where testing for big inputs was not done + correctly (AA). + * Cleanup tests related to assembly routines in ``mpn_extras`` (AA). + * Add more test code for ``gr_series`` (FJ). + * Fix warning in test (AA). + +* Profiling + + * Add profile program for ``flint_mpn_divrem_preinvn`` (FJ). + * Add profiler for ``flint_mpn_mullow`` (AA). + +* Maintenance + + * Add notes that CMake is only recommended for Windows users (AA). + * Convert TODO from txt-format to Markdown (AA). + * Generate and install CMake configuration files (Mehdi Chinoune). + * Define GMP internal functions, if they are available, in ``mpn_extras.h`` + (AA). + * Change ``#ifdef FLINT_HAVE_FFT_SMALL`` to ``#if FLINT_HAVE_FFT_SMALL`` (AA). + * Enable running specific tests in modules via ``make check MOD=XXX + ARGS=YYY`` (AA). + * Add Codecov key to CI (AA, FJ). + * Force Unix-type newlines through git on Cygwin CI (AA). + * Remove debug code from ``qqbar_roots_poly_squarefree`` (FJ). + * Remove ``FLINT_HAVE_AVX*`` definitions (AA). + * Update ``flint-config.h.in`` (AA). + * Fix a macro (?) (FJ). + * Simplify definition of ``mp_limb_pair_t`` (FJ). + * Use ``#include `` in examples (BA). + * Change ``__mpz_struct *`` to ``mpz_ptr`` (EC). + * Move mpn macros from ``flint.h`` to ``mpn_extras.h`` (AA) + * Enable compiling with ``-Wextra -Werror`` for a big part of the library + (AA). + * Disable static build by default (AA). + * Do not remove intermediate assembly files for making debugging easier (AA). + * Add ``make debug MOD=XXX ARGS=YYY`` shortcut for debugging with GDB (AA). + * Add ``gdb_history`` and ``vgcore.*`` to ``.gitignore`` (AA). + +* Continuous integration + + * Add nightly build to Github (EC). + * Add SHAsum (EC). + * Remove Ubuntu CMake runner as we no longer recommend CMake for building + FLINT on non-Windows systems (AA). + * Add runner that checks against regression when compiling with ``-Wextra + -Werror`` (AA). + * Publish prepreleases only as drafts (Mahrud Sayrafi). + +* Documentation + + * Fix typos (EC). + * Clarify usage of inline assembly addition and subtraction macros such as + ``add_ssaaaa`` (AA). + * Fix another typo (BA). + * Some explanations for ``mpn_ctx_mpn_mul`` (?) (FJ). + * Add human-readable text to documentation of ``ordering_t`` (RB). + * Document Generic Ring setters for infinities and extended values (RB). + * Fix documentation of ``gr_comp_other`` (Marc Mezzarobba). + +* ``flint_ctypes``: wrap ``is_zero_ring`` (?) (FJ). +* handle valuations and exact results in ``gr_series_div`` (?) (FJ). +* gr series mods based directly on gr_poly (?) (FJ). +* fix setting generator names for univariate gr rings (FJ). +* gr fmpz_mod: is finite characteristic (?) (FJ). +* fix bug; test matrices (?) (FJ). +* verbose tests (?) (FJ). +* fix bug; test some more (?) (FJ). + +Note to Fredrik: Please expand more on ``mpn_mod`` stuff, and perhaps more GR +stuff! I stopped reading your commits past +32c4d71005a511c1e91301ac576012fa45246eb3 + + 2024-03-18 -- FLINT 3.1.2 ------------------------------------------------------------------------------- -Main contributors: Albin Ahlbäck (AA) +Main contributors: Albin Ahlbäck (AA). * Maintenance * Remove the need for ``ldconfig`` completely in FLINT's Autotools build - system. + system (AA). 2024-03-07 -- FLINT 3.1.1 ------------------------------------------------------------------------------- -Main contributors: Albin Ahlbäck (AA) +Main contributors: Albin Ahlbäck (AA). * Bug fixes