Log changes in rmumps package
=============================

Version 5.9.1-1
---------------

* 2026-10-23
 - MUMPS updated from 5.2.1 to 5.9.1 (sequential, double precision real)
 - the bundled MUMPS, PORD and METIS 5.1.0 sources are now generated from
   the pristine upstream tarballs by a reproducible pipeline (tools/ in the
   source repository): pinned checksums, numbered patches, and automatic
   transforms that remove all output to the console, all process exits,
   file access and use of the Fortran/C random generators
 - SCOTCH is no longer bundled (RMUMPS_PERM_SCOTCH falls back to AUTO, as
   in 5.2.1-44)
 - MUMPS prints nothing any more (ICNTL(1:4) have no visible effect);
   errors are reported through INFO/INFOG and rmumps' messages
 - DMUMPS_STRUC_C has the MUMPS 5.9.1 layout (RMUMPS_DMUMPS_ABI 2). Client
   binaries built against older rmumps keep working: the legacy "dmumps_c"
   callable and the rmumps_dmumps_c*_abi1 entry points translate from the
   5.2.1 layout ('deficiency' is filled from INFOG(28)). Packages built
   from source must include <rmumps/rmumps_api.h> or <rmumps/dmumps_c.h>:
   the top-level copies of the MUMPS headers are removed
 - results do not depend on earlier calls: the generator MUMPS uses
   internally is reset before every call, and never touches R's
 - control parameters: rmumps sets the same ICNTL values as before
   (reviewed against the 5.9.1 defaults); parameters it does not set take
   the MUMPS 5.9.1 defaults, e.g. ICNTL(58) = 2 (symbolic factorization)
 - the Fortran sources compile with gfortran >= 10 without
   -fallow-argument-mismatch and with LLVM flang, the package builds
   without significant warnings under -Wall -pedantic (gfortran, gcc and
   clang), and a link-time-optimization build reports no type mismatch
   between the Fortran callers and the C and Fortran definitions
 - copyright holders and inst/COPYRIGHTS updated for the bundled code;
   the CeCILL-C and Apache-2.0 license texts are included

* 2026-10-26
 - the single-precision BLAS calls (sgemm, cgemm) of MUMPS 5.9.1's
   mixed-precision low-rank code are computed in Fortran instead: R's
   reference BLAS has no single-precision routines and the Windows DLL
   did not link (patch 0012). Double-precision results are unchanged
 - a GitHub Actions workflow runs R CMD check on macOS, Windows, Linux
   x86_64 (R devel, release, oldrel-1) and Linux arm64

* 2026-11-02
 - maintainer: Balasubramanian Narasimhan takes over from Serguei Sokol,
   at his request; the repository is now https://github.com/bnaras/rmumps

Version 5.2.1-44
----------------

* 2026-10-23
 - new C interface for other packages, <rmumps/rmumps_api.h>: registered
   entry points named after the DMUMPS_STRUC_C layout
   (rmumps_dmumps_c_safe_abi1, rmumps_dmumps_c_abi1) plus metadata
   (rmumps_api_version, rmumps_mumps_version, rmumps_orderings_available).
   The "safe" entry point never longjmps: R errors and interrupts raised
   inside MUMPS are returned as codes with a message, and the failed
   instance is marked (INFO(1) = -99999). The "dmumps_c" callable is kept.
 - MUMPS C headers are also installed under include/rmumps/; the top-level
   ones are kept for compatibility (they will go with MUMPS 5.9.x)
 - new pointer interface functions Rmumps__xptr(), Rmumps__symbolic(),
   Rmumps__numeric(), Rmumps__solvetptr(), Rmumps__set/get_icntl(),
   Rmumps__set/get_cntl(), Rmumps__get_infos(), Rmumps__det(),
   Rmumps__log2det(), Rmumps__get_sym_perm(), Rmumps__get_uns_perm(),
   Rmumps__set_perm_in(), Rmumps__mumps_version() (also callable from C++)
 - entry points are registered through Rcpp (no dynamic symbol lookup)
 - fixed undefined behavior: errors raised in the bundled C libraries threw
   C++ exceptions through Fortran code; all MUMPS calls now go through the
   error boundary above and give ordinary R errors
 - error messages describe the MUMPS INFO(1) code; positive INFO(1) values
   (MUMPS warnings) are now R warnings instead of errors
 - get_icntl(), get_cntl() and get_infos() return the full MUMPS vectors
   (ICNTL 60, CNTL 15, INFO/INFOG 80, RINFO/RINFOG 40); set_icntl(),
   set_cntl() and set_keep() accept all positions and reject invalid ones
 - RMUMPS_PERM_SCOTCH gives a warning and uses RMUMPS_PERM_AUTO
 - PORD ordering no longer fails on a 1 x 1 matrix
 - determinant() method fixed (it failed) and returns a "det" object
 - solvet() is exported
 - set_perm_in() keeps its own copy of the permutation
 - no deprecated Matrix coercions; out-of-core files go to tempdir()
 - rmumps.h no longer does 'using namespace Rcpp' and no longer includes
   rcpp_errwarn.h

Version 5.2.1-43
----------------

* 2026-05-28
 - fixed dmumps_c() declaration to include MUMPS_STRUC_C (signaled by R CRAN team)

VVersion 5.2.1-42
----------------

* 2026-05-26
 - accepted PR #4 by Balasubramanian Narasimhan exposing dmumps_c() to other packages
ersion 5.2.1-41
----------------

* 2026-03-13
 - fixed more LTO warnings (signaled by R CRAN team)

Version 5.2.1-40
----------------

* 2026-03-13
 - fixed gcc-san warnings in examples (signaled by R CRAN team)

Version 5.2.1-39
----------------

* 2026-03-12
 - fixed gcc-san warnings in tests (signaled by R CRAN team)

Version 5.2.1-38
----------------

* 2026-03-11
 - fixed gcc-15 warnings (signaled by R CRAN team)

Version 5.2.1-37
----------------

* 2026-02-27
 - replaced Rf_error() by Rcpp::stop() in C++ code (issue #3)

Version 5.2.1-36
----------------

* 2025-12-11
 - fixed gcc warning about FORTIFY_SOURCE under no optimization (signaled by R CRAN team)

Version 5.2.1-35
----------------

* 2025-05-16
 - removed warnings in scotch parser
 - more cleaning of read/write

Version 5.2.1-34
----------------

* 2025-04-08
 - even more cleaning 'write' calls

Version 5.2.1-33
----------------

* 2025-04-08
 - more cleaning 'write' calls

Version 5.2.1-32
----------------

* 2025-04-07
 - removed 'write' calls in *.F signaled by R CRAN team on debian system

Version 5.2.1-31
----------------

* 2025-04-02
 - removed printf, sprintf, abort, exit, rand, srand, std[in,out,err] signaled by R CRAN team

Version 5.2.1-30
----------------

* 2024-06-14
 - fixed buffer overflow on ubuntu/gcc13

Version 5.2.1-29
----------------

* 2024-03-29
 - added method 'log2det()' (requested in issue #2)

Version 5.2.1-28
----------------

* 2024-02-26
 - fixed gcc UBSAN issues signaled by CRAN

Version 5.2.1-27
----------------

* 2024-02-02
 - fixed warnings about _FORTIFY_SOURCE and fixed form fortran signaled by CRAN
Version 5.2.1-26
----------------

* 2023-11-28
 - fixed warnings about format string signaled by CRAN

Version 5.2.1-25
----------------

* 2023-11-02
 - fixed warnings on function prototype signaled by CRAN
 - fixed gcc UBSAN issues signaled by CRAN

Version 5.2.1-23
----------------

* 2023-03-08
 - added set_perm_in() method to set user provided permutation
 - fixed buffer overflow in memset() call, likely due to gcc optimization (signaled by CRAN team)
 - updated CITATION as recommended by win-builder header

Version 5.2.1-22
----------------

* 2023-01-11
 - fixed pointer qualifier discarding for clang15  (signaled by CRAN team)

Version 5.2.1-21
----------------

* 2023-01-10
 - fixed compilation errors in C23 mode (signaled by CRAN team)

Version 5.2.1-20
----------------

* 2022-10-19
 - fixed compilation errors about function prototypes (signaled by CRAN team)

Version 5.2.1-18
----------------

* 2022-10-03
 - fixed metis/gklib compilation error from clang-15 (signaled by CRAN team)

Version 5.2.1-15
----------------

* 2022-03-25
 - fixed rank mismatch errors from gcc-12 (signaled by CRAN team)
 
Version 5.2.1-14
----------------

* 2021-08-11
 - fixed -Wunneeded-internal-declaration (signaled by CRAN team)

Version 5.2.1-13
----------------

* 2021-07-19
 - fixed -Wswitch (signaled by CRAN team)
 
Version 5.2.1-12
----------------

* 2020-02-20
 - MUMPS_SIZE_C() replaced by sizeof()
 - fixed set_keep() method
 - added get_keep() method
 - added a test for type-size results in KEEP
 - fixed import show method
 - fixed exported names;
 - updated scotch from 6.0.4 to 6.0.9
 - get_cnst() renamed .get_cnst() and no more exported
 - constants RMUMPS_PERM_... are regrouped in a named vector RMUMPS_PERM
 - fixed warnings in graph_match.h and kgraph_map_df_loop.c

Version 5.2.1-10
----------------

* 2020-01-27
 - fixed gcc-9 warning about uninitialized variables (signaled by CRAN team)

Version 5.2.1-9
---------------

* 2020-01-27
 - fixed gcc-10 warning about uninitialized variables (signaled by CRAN team)

Version 5.2.1-8
---------------

* 2020-01-23
 - fixed gcc-10 warning about type mismatches signaled by CRAN team (signaled by CRAN team)
 - added Copyright holders to DESCRIPTION file

Version 5.2.1-7
---------------

* 2019-12-06
 - fixed clang-10 warning (signaled by CRAN team)

Version 5.2.1-6
---------------

* 2019-11-05
 - added C wrappers for some methods. Wrappers are registered with R_RegisterCCallable() so they are available from other package's C++ code.
 
 Version 5.2.1-5
---------------

* 2019-08-26
 - fixed clang issues (signaled by CRAN team)

VVersion 5.2.1-4
---------------

* 2019-08-21
 - fixed some more LTO warnings (signaled by CRAN team)
 
ersion 5.2.1-3
---------------

* 2019-07-19
 - removed compile test on all platforms

Version 5.2.1-2
---------------

* 2019-07-19
 - fixed LTO issues (signaled by CRAN team)
 - removed compile test on win-i386
 
Version 5.2.1-1
---------------

* 2019-07-15
 - upgrade to MUMPS-5.2.1
 - removed compile test on Mac OS;
 
VVersion 5.1.2-7
---------------

* 2019-07-02
 - fixed NAMESPACE corrupted by roxygen2
 - fixed manual entries for constants RMUMPS_PERM_<smth>
 
ersion 5.1.2-6
---------------

* 2019-04-23
 - added C++ methods set_mat_ptr(), set_rhs_ptr()
 - added R and C++ methods set_permutation(), get_permutation()
 - defined RMUMPS_PERM_<smth> constants for different permutations
 - added C++ constructor from i,j,v pointers
 - added tests for C++ code;
 - changed F77 for FC in Makevars;

Version 5.1.2-5
---------------

* 2018-12-18
 - renamed MUMPS *.F files to *.F95 to be comnformant with R conventions for file extensions
 - removed STOP call in mpi.f

Version 5.1.2-4
---------------

* 2018-01-05
 - fixed usage of -fPIC option
 - fixed non ASCII character in DESCRIPTION file

Version 5.1.2-3
---------------

* 2018-01-03
 - added doi refs in DESCRIPTION:Description field
 - fixed errors in tests for older R releases

Version 5.1.2-2
---------------

* 2017-12-13
 - added inst/COPYRIGHTS and contributors in DESCRIPTION:Autors@R

Version 5.1.2-1
---------------

* 2017-12-12
 - upgrade MUMPS from v5.1.1 to v5.1.2
 - fixed a compilation error of metis library on windows/R-released
 
Version 5.1.1-3
---------------

* 2017-09-19
 - fixed warning "Integer division truncated to constant ‘768614336404’" in dana_aux.F

Version 5.1.1-2
---------------

* 2017-07-05
 - fixed gfortran-6 warning "Integer division truncated to constant ‘768614336404’"
 - fixed C warning about header guard

Version 5.1.1-1
---------------

* 2017-04-26
 - upgraded MUMPS to the latest version 5.1.1
 - added set_keep() method
 - added mumps_version() method


Version 5.0.1.12
----------------

* 2017-03-06
 - added library SCOTCH v6.0.4 (http://gforge.inria.fr/projects/scotch/) as option for ordering (...$set_icntl(3, 7))
 - default ICNTL(33) is set to 1, i.e. the determinant is calculated (before was 0, i.e. no determinant calculation)
 - added det() and determinant() methods returning determinant value
 - added sym parameter to constructor. Now symmetric matrices can be decomposed as LDL^t
 - added solvet() method for solving transposed system
 - fixed registering C-callable in coming R-3.4

Version 5.0.1.11
----------------

* 2016-12-21
 - increased default auxiliary memory via ICNTL(14)-50 (was 25)
 - added methods for finer control and information: set_cntl(), get_cntl(), set_icntl(), get_icntl(), get_infos()

Version 5.0.1.10
----------------

* 2016-08-25
 - fixed compilation with -pedantic option

Version 5.0.1.9-1
-----------------

* 2016-04-14
 - fixed building process (signaled by CRAN team)
 
Version 5.0.1.9
---------------

* 2016-04-12
 - added method triplet() rendreding a simple_triplet_matrix (cf. package slam)
 - fixed job registering for symbolic() method
 - fixed compiler warning about non initialized n and nz in new_mat();
 - fixed valgrind's warning about non initialized memory use in dmumps()

Version 5.0.1.8
---------------

* 2016-02-22
 - added constructor from slam::simple_triplet_matrix
 - added multiple right hand side solver for slam::simple_triplet_matrix
 - added S3method for Rcpp_Rmumps class: solve(), dim(), nrow(), ncol(), print(), show();
 - fixed constructor from i, j, v triplicate;

Version 5.0.1.7
---------------

* 2016-01-20
 - INTEGER type is compiled as int32 and not int64 as in previous version;
 - fixed a typo in inst/example.R;
 - fixed some building issues on all platforms (all reported by Prof. Brian Ripley):
  + no more cmake is needed on Linux and Mac OS;
  + no more sources kept in binary package;
  + MAKE env. variable is respected now;
  + explicit mention of gcc is removed;
  + /bin/rm is replaced by $(RM);
  + fixed a non initialized variable use in C++ code;
  + a .a prefix is used for static library on Windows instead of .dll;
 - fixed the use of default values in constructors which are ignored by
   RcppModule (detected by UBSAN test run by CRAN team);

Version 5.0.1.4
---------------

* 2015-12-17
 - initial release. Provides solve(), numeric() and symbolic() methods
