Releases: Goddard-Fortran-Ecosystem/gFTL
Releases · Goddard-Fortran-Ecosystem/gFTL
Eliminate debug prints
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_SET
to enable map containter to usealt_set
instead ofset
under-the-hood.
Fixed
- missing
TARGET
in 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-10
andgfortran-11
only 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
spread
ininclude/v2/parameters/define_derived_macros.m4
toreshape
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 andMOVE_ALLOC()
under the hood.
Changed
- Update CI to remove
macos-12
, addmacos-14
andubuntu-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-11
from CI, addedmacos-13
- Added
-quiet
flag 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 nouninit
for Intel LLVM to work aroundifx
bug.
Initial attempt at ifx port
Added
- Added
IntelLLVM.cmake
file as a copy ofIntel.cmake
to 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 ofCYCLE
statements. 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
Bugfix for large (v1) containers
Fixed
- Missing
KIND=
onsize()
procedure. Gave incorrect response for large containers. Only affects V1 containers.