diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 539a46e..3f009e6 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -15,13 +15,20 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - os: [ubuntu-22.04, macos-12, macos-13] - compiler: [gfortran-10, gfortran-11, gfortran-12, gfortran-13] - exclude: - - os: macos-12 - compiler: gfortran-10 - - os: macos-13 + os: [ubuntu-22.04, ubuntu-24.04, macos-13, macos-14] + compiler: [gfortran-11, gfortran-12, gfortran-13] + # gfortran-10 is only on ubuntu-22.04 + # gfortran-14 is available on ubuntu-24.04 + include: + - os: ubuntu-22.04 compiler: gfortran-10 + - os: ubuntu-24.04 + compiler: gfortran-14 + exclude: + - os: ubuntu-24.04 + compiler: gfortran-11 + - os: ubuntu-22.04 + compiler: gfortran-13 # fail-fast if set to 'true' here is good for production, but when # debugging, set to 'false'. fail-fast means if *any* ci test in the matrix fails @@ -65,12 +72,12 @@ jobs: mkdir -p build cd build cmake .. -DCMAKE_Fortran_COMPILER=${FC} -DCMAKE_INSTALL_PREFIX=${HOME}/Software/gFTL -DCMAKE_PREFIX_PATH=${HOME}/Software/GFE - make -j$(nproc) + make -j4 - name: Build Tests run: | cd build - make -j$(nproc) tests + make -j4 tests - name: Run Tests run: | @@ -141,12 +148,12 @@ jobs: mkdir -p build cd build cmake .. -DCMAKE_Fortran_COMPILER=${FC} -DCMAKE_INSTALL_PREFIX=${HOME}/Software/gFTL -DCMAKE_PREFIX_PATH=${HOME}/Software/GFE - make -j$(nproc) + make -j4 - name: Build Tests run: | cd build - make -j$(nproc) tests + make -j4 tests - name: Run Tests run: | @@ -197,12 +204,12 @@ jobs: mkdir -p build cd build cmake .. -DCMAKE_Fortran_COMPILER=${FC} -DCMAKE_INSTALL_PREFIX=${HOME}/Software/gFTL -DCMAKE_PREFIX_PATH=${HOME}/Software/GFE - make -j$(nproc) + make -j4 - name: Build Tests run: | cd build - make -j$(nproc) tests + make -j4 tests - name: Run Tests run: | diff --git a/CMakeLists.txt b/CMakeLists.txt index 8f0c4c1..ce64bd0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,7 +4,7 @@ if (COMMAND cmake_policy) endif (COMMAND cmake_policy) project (GFTL - VERSION 1.12.0 + VERSION 1.13.0 LANGUAGES NONE) if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) diff --git a/ChangeLog.MD b/ChangeLog.MD index 24b2ea2..98c6763 100644 --- a/ChangeLog.MD +++ b/ChangeLog.MD @@ -3,6 +3,20 @@ ## Unreleased +### Fixed + +- Change use of `spread` in `include/v2/parameters/define_derived_macros.m4` to `reshape` to avoid NVHPC issue + +### Added + +- Enabled feature that allows pointers into container objects to remain valid when container grows/shrinks. This ability is already baked into the polymorphic case where `MOVE_ALLOC()` is used. Now if one uses `#define T_deferred` gFTL will also use a wrapper type with an allocatable component and `MOVE_ALLOC()` under the hood. + +### Changed + +- Update CI to remove `macos-12`, add `macos-14` and `ubuntu-24.04` + +## [1.13.0] - 2024-03-20 + ### Fixed - Implemented workarounds for ifx compiler and v1 interfaces. v2 tests were fine. diff --git a/README.md b/README.md index e8a2d4b..701a5c4 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,3 @@ -[](https://travis-ci.com/Goddard-Fortran-Ecosystem/gFTL) [](https://opensource.org/licenses/Apache-2.0) This package generates containers (Vector, Set, Map, ...) with Fortran interfaces. It is essentially a brute force analog of C++ STL. diff --git a/include/v2/parameters/cpp_copy.m4 b/include/v2/parameters/cpp_copy.m4 index 3da984d..e405e70 100644 --- a/include/v2/parameters/cpp_copy.m4 +++ b/include/v2/parameters/cpp_copy.m4 @@ -37,6 +37,7 @@ cpp_copy(default) cpp_copy(rank) cpp_copy(shape) cpp_copy(polymorphic) +cpp_copy(deferred) cpp_copy(FREE,x) cpp_copy(COPY,lhs,rhs) diff --git a/include/v2/parameters/cpp_undef.m4 b/include/v2/parameters/cpp_undef.m4 index df5ba45..c3a6ed3 100644 --- a/include/v2/parameters/cpp_undef.m4 +++ b/include/v2/parameters/cpp_undef.m4 @@ -34,6 +34,7 @@ cpp_undef(rank) cpp_undef(shape) cpp_undef(extents) cpp_undef(polymorphic) +cpp_undef(deferred) cpp_undef(FREE) cpp_undef(COPY) diff --git a/include/v2/parameters/define_derived_macros.m4 b/include/v2/parameters/define_derived_macros.m4 index 04191dd..a761280 100644 --- a/include/v2/parameters/define_derived_macros.m4 +++ b/include/v2/parameters/define_derived_macros.m4 @@ -302,7 +302,7 @@ define(__T,`__`'_T()') # define __T()_dimension_component__ __T()_dimension_result__ # define __T()_dimension_string__ __T()_shape_string__ # ifndef __T()_default__ -# define __T()_default__ reshape([__T()_type__ :: ],spread(0,1,__T()_rank)) +# define __T()_default__ reshape([__T()_type__ :: ],reshape([0],shape=[__T()_rank],pad=[0])) # endif # endif # define __T()_dimension_dummy__ __T()_dimension_component__ diff --git a/tools/ci-install-cmake.sh b/tools/ci-install-cmake.sh index 086ac65..59e01ca 100644 --- a/tools/ci-install-cmake.sh +++ b/tools/ci-install-cmake.sh @@ -10,7 +10,7 @@ if [ ! -d "${HOME}/local/cmake/bin" ] ; then cd cmake-${cmake_ver} mkdir build && cd build cmake .. -DCMAKE_INSTALL_PREFIX=${HOME}/local/cmake - make -j$(nproc) + make -j4 make install/strip cd ../.. && rm -r cmake-${cmake_ver} fi diff --git a/tools/ci-install-gfe.bash b/tools/ci-install-gfe.bash index 2c15ad7..b2aba65 100755 --- a/tools/ci-install-gfe.bash +++ b/tools/ci-install-gfe.bash @@ -17,6 +17,6 @@ do cd ${GFE_DIR}/${repo} mkdir build && cd build cmake .. -DCMAKE_INSTALL_PREFIX=${GFE_INSTALL_DIR} -DCMAKE_PREFIX_PATH=${GFE_INSTALL_DIR} - make -j$(nproc) install + make -j4 install done