diff --git a/ChangeLog b/ChangeLog index 64f87cdf..3bc5710d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2025-08-14 Dirk Eddelbuettel + + * DESCRIPTION (Version, Date): RcppArmadillo 14.6.3-1 + * inst/NEWS.Rd: Idem + * configure.ac: Idem + * configure: Idem + + * inst/include/armadillo_bits/: Armadillo 14.6.3 + 2025-08-09 Dirk Eddelbuettel * DESCRIPTION (Version, Date): RcppArmadillo 14.6.2-1 diff --git a/DESCRIPTION b/DESCRIPTION index ca6b19bd..a22aba2d 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,8 +1,8 @@ Package: RcppArmadillo Type: Package Title: 'Rcpp' Integration for the 'Armadillo' Templated Linear Algebra Library -Version: 14.6.2-1 -Date: 2025-08-08 +Version: 14.6.3-1 +Date: 2025-08-14 Authors@R: c(person("Dirk", "Eddelbuettel", role = c("aut", "cre"), email = "edd@debian.org", comment = c(ORCID = "0000-0001-6419-907X")), person("Romain", "Francois", role = "aut", diff --git a/configure b/configure index 34152d5d..26925ae4 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.72 for RcppArmadillo 14.6.2-1. +# Generated by GNU Autoconf 2.72 for RcppArmadillo 14.6.3-1. # # Report bugs to . # @@ -603,8 +603,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='RcppArmadillo' PACKAGE_TARNAME='rcpparmadillo' -PACKAGE_VERSION='14.6.2-1' -PACKAGE_STRING='RcppArmadillo 14.6.2-1' +PACKAGE_VERSION='14.6.3-1' +PACKAGE_STRING='RcppArmadillo 14.6.3-1' PACKAGE_BUGREPORT='edd@debian.org' PACKAGE_URL='' @@ -1222,7 +1222,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -'configure' configures RcppArmadillo 14.6.2-1 to adapt to many kinds of systems. +'configure' configures RcppArmadillo 14.6.3-1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1284,7 +1284,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of RcppArmadillo 14.6.2-1:";; + short | recursive ) echo "Configuration of RcppArmadillo 14.6.3-1:";; esac cat <<\_ACEOF @@ -1365,7 +1365,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -RcppArmadillo configure 14.6.2-1 +RcppArmadillo configure 14.6.3-1 generated by GNU Autoconf 2.72 Copyright (C) 2023 Free Software Foundation, Inc. @@ -1481,7 +1481,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by RcppArmadillo $as_me 14.6.2-1, which was +It was created by RcppArmadillo $as_me 14.6.3-1, which was generated by GNU Autoconf 2.72. Invocation command line was $ $0$ac_configure_args_raw @@ -3980,7 +3980,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by RcppArmadillo $as_me 14.6.2-1, which was +This file was extended by RcppArmadillo $as_me 14.6.3-1, which was generated by GNU Autoconf 2.72. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -4035,7 +4035,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -RcppArmadillo config.status 14.6.2-1 +RcppArmadillo config.status 14.6.3-1 configured by $0, generated by GNU Autoconf 2.72, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index 61e1694f..8d1e7b6c 100644 --- a/configure.ac +++ b/configure.ac @@ -11,7 +11,7 @@ AC_PREREQ([2.69]) ## Process this file with autoconf to produce a configure script. -AC_INIT([RcppArmadillo],[14.6.2-1],[edd@debian.org]) +AC_INIT([RcppArmadillo],[14.6.3-1],[edd@debian.org]) ## Set R_HOME, respecting an environment variable if one is set : ${R_HOME=$(R RHOME)} diff --git a/inst/NEWS.Rd b/inst/NEWS.Rd index 949057f5..9fcf269c 100644 --- a/inst/NEWS.Rd +++ b/inst/NEWS.Rd @@ -3,6 +3,15 @@ \newcommand{\ghpr}{\href{https://github.com/RcppCore/RcppArmadillo/pull/#1}{##1}} \newcommand{\ghit}{\href{https://github.com/RcppCore/RcppArmadillo/issues/#1}{##1}} +\section{Changes in RcppArmadillo version 14.6.3-1 (2025-08-14) (GitHub Only)}{ + \itemize{ + \item Upgraded to Armadillo release 14.6.3 (Caffe Mocha) + \itemize{ + \item Fix OpenMP related crashes in \code{Cube::slice()} on Arm64 CPUs + } + } +} + \section{Changes in RcppArmadillo version 14.6.2-1 (2025-08-08) (GitHub Only)}{ \itemize{ \item Upgraded to Armadillo release 14.6.2 (Caffe Mocha) diff --git a/inst/include/armadillo_bits/Cube_meat.hpp b/inst/include/armadillo_bits/Cube_meat.hpp index e9de1e22..d4d97feb 100644 --- a/inst/include/armadillo_bits/Cube_meat.hpp +++ b/inst/include/armadillo_bits/Cube_meat.hpp @@ -615,7 +615,7 @@ Cube::get_mat_ptr(const uword in_slice) const #if defined(ARMA_USE_OPENMP) { - #pragma omp atomic read + #pragma omp atomic read seq_cst mat_ptr = mat_ptrs[in_slice]; } #elif defined(ARMA_USE_STD_MUTEX) @@ -634,12 +634,12 @@ Cube::get_mat_ptr(const uword in_slice) const { #pragma omp critical (arma_Cube_mat_ptrs) { - #pragma omp atomic read + #pragma omp atomic read seq_cst mat_ptr = mat_ptrs[in_slice]; if(mat_ptr == nullptr) { mat_ptr = create_mat_ptr(in_slice); } - #pragma omp atomic write + #pragma omp atomic write seq_cst mat_ptrs[in_slice] = mat_ptr; } } diff --git a/inst/include/armadillo_bits/arma_forward.hpp b/inst/include/armadillo_bits/arma_forward.hpp index 20ee5032..8c9fed7b 100644 --- a/inst/include/armadillo_bits/arma_forward.hpp +++ b/inst/include/armadillo_bits/arma_forward.hpp @@ -312,7 +312,7 @@ struct state_type int out; #if defined(ARMA_USE_OPENMP) - #pragma omp atomic read + #pragma omp atomic read seq_cst out = state; #elif defined(ARMA_USE_STD_MUTEX) out = state.load(); @@ -328,7 +328,7 @@ struct state_type operator= (const int in_state) { #if defined(ARMA_USE_OPENMP) - #pragma omp atomic write + #pragma omp atomic write seq_cst state = in_state; #elif defined(ARMA_USE_STD_MUTEX) state.store(in_state); diff --git a/inst/include/armadillo_bits/arma_version.hpp b/inst/include/armadillo_bits/arma_version.hpp index 20950820..88be5f64 100644 --- a/inst/include/armadillo_bits/arma_version.hpp +++ b/inst/include/armadillo_bits/arma_version.hpp @@ -23,7 +23,7 @@ #define ARMA_VERSION_MAJOR 14 #define ARMA_VERSION_MINOR 6 -#define ARMA_VERSION_PATCH 2 +#define ARMA_VERSION_PATCH 3 #define ARMA_VERSION_NAME "Caffe Mocha" diff --git a/inst/include/armadillo_bits/compiler_setup.hpp b/inst/include/armadillo_bits/compiler_setup.hpp index 0cdc3dd2..44141d19 100644 --- a/inst/include/armadillo_bits/compiler_setup.hpp +++ b/inst/include/armadillo_bits/compiler_setup.hpp @@ -394,16 +394,17 @@ #if !defined(ARMA_DONT_USE_OPENMP) - #if (defined(_OPENMP) && (_OPENMP >= 201107)) + #if (defined(_OPENMP) && (_OPENMP >= 201307)) #undef ARMA_USE_OPENMP #define ARMA_USE_OPENMP #endif #endif -#if ( defined(ARMA_USE_OPENMP) && (!defined(_OPENMP) || (defined(_OPENMP) && (_OPENMP < 201107))) ) +#if ( defined(ARMA_USE_OPENMP) && (!defined(_OPENMP) || (defined(_OPENMP) && (_OPENMP < 201307))) ) // OpenMP 3.0 required for parallelisation of loops with unsigned integers - // OpenMP 3.1 required for atomic read and atomic write + // OpenMP 3.1 required for atomic read/write + // OpenMP 4.0 required for seq_cst memory order clause in atomic read/write #undef ARMA_USE_OPENMP #undef ARMA_PRINT_OPENMP_WARNING #define ARMA_PRINT_OPENMP_WARNING @@ -411,11 +412,10 @@ #if defined(ARMA_PRINT_OPENMP_WARNING) && !defined(ARMA_DONT_PRINT_OPENMP_WARNING) - #pragma message ("WARNING: use of OpenMP disabled; compiler support for OpenMP 3.1+ not detected") + #pragma message ("WARNING: use of OpenMP disabled; compiler support for OpenMP 4.0+ not detected") - #if (defined(_OPENMP) && (_OPENMP < 201107)) + #if (defined(_OPENMP) && (_OPENMP < 201307)) #pragma message ("NOTE: your compiler has an outdated version of OpenMP") - #pragma message ("NOTE: consider upgrading to a better compiler") #endif #endif