Releases: Goddard-Fortran-Ecosystem/gFTL
Releases · Goddard-Fortran-Ecosystem/gFTL
Require CMake 3.24, Updates for Windows Support
Removed
- Removed download of
m4on Windows if not found. We now require the user to provide it - Removed
filter.x.infor pure Awk in CMakecustom_command
Changed
- Updated CMake minimum version to 3.24
- Made
awkandm4REQUIREDviafind_program - Update CI to use
macos-15, removemacos-13 - Add
gfortran-15to macOS CI
What's Changed
- Gitflow by @tclune in #257
- Make m4 and awk required via find_program by @mathomp4 in #260
- CI: Drop macos-13, add macos-15, add gfortran-15 by @mathomp4 in #262
- Update CMake minimum version to 3.24 by @mathomp4 in #258
- Prepare for 1.16.0 release by @mathomp4 in #263
- GitFlow: Merge develop into main for 1.16 release by @mathomp4 in #264
Full Changelog: v1.15.2...v1.16.0
Eliminate debug prints
Fixed
- removed extraneous debug prints left from last PR
Workaround for gfortran + unlimited polymorphic
Fixed
- workaround for gfortran tests on containers with unlimited polymorphic entities
New variant of Set container (compiler workaround)
Added
- Introduced new container "alt_set". Interfaces are the same as "set" but underlying implementation uses vectors of indices rather than pointers. The hope is that this will result in fewer compiler bugs related to deep copies of structures with self-referential pointers.
- Optional FPP setting
USE_ALT_SETto enable map containter to usealt_setinstead ofsetunder-the-hood.
Fixed
- missing
TARGETin some container interfaces. Spotted during introducition of "alt_set" container.
Added
- Preliminary LLVMFlang support
- Added missing TARGET attribute in map::erase() procedures. When
used with NAG compiler, would result in temporary objects with
dangling pointers. Added new test to cover this case.
Changed
- Update CI to have
gfortran-10andgfortran-11only onubuntu-22.04 - Update CI NVIDIA to NVHPC 24.7
- Workarounds of IFX issues. (Did not submit reproducers.)
- Add flang test to CI
Added support for non-poly allocatable containers
Fixed
- Change use of
spreadininclude/v2/parameters/define_derived_macros.m4toreshapeto 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_deferredgFTL will also use a wrapper type with an allocatable component andMOVE_ALLOC()under the hood.
Changed
- Update CI to remove
macos-12, addmacos-14andubuntu-24.04
IFX port
Fixed
- Implemented workarounds for ifx compiler and v1 interfaces. v2 tests were fine.
- Removed previous workaround for older Intel compilers that did not support polymorphic assignment.
- Introduced workaround for comparing polymorphic pointers for Set and altSet
Changed
- Removed
macos-11from CI, addedmacos-13 - Added
-quietflag for NAG compiler - Removed stray print statements in tests.
Port to Fujitsu (and minor bugfix)
Added
- Fujitsu compiler support
Fixed
- (#211) Fixed bug in implementation of erase(first, last) for vector & deque containers. When the range was empty, then some cases would erronously call
MOVE_ALLOC(x,x)which is illegal.
Miscellaneous minor bits
Added
- Introduced new preprocessing options to disable override of
assignment(=)in v2 map and set templates. This is to workaround a case where intel compiler is producing erroneous results. Disabling everywhere is too risky.
Changed
- Behavior of
at(key)(without rc) now will not extend the map. This change may be reverted if it breaks any downstream projects. - Remove Ubuntu 20 and gfortran-9 from CI
Fixed
- Add
-check nouninitfor Intel LLVM to work aroundifxbug.
Initial attempt at ifx port
Added
- Added
IntelLLVM.cmakefile as a copy ofIntel.cmaketo support the LLVM Intel compiler frontends
(Note - this has not been tested due to lack of system access.)
What's Changed
Full Changelog: v1.9.0...v1.10.0
New iterator factory methods to support Fortran looping
Added
-
Added Fortran-friendly iterator factories (and tests) to
ftn_begin()andftn_end()have been added to vector, set, map,
and ordered_map templates.ftn_begin()points to just-before the
1st element of a container, whileftn_end()points to the last
element. This allows thenext()invocation to be at the start of the loop which
is less error prone in the presence ofCYCLEstatements. Example usage:type(Vector) :: v type(VectorIterator) :: iter ... associate (e => v%ftn_end()) iter = v%ftn_begin() do while (iter /= e) call iter%next() ... if (<cond>) cycle ! does the right thing ... end do end associate