Releases: Goddard-Fortran-Ecosystem/gFTL
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.
Fixes to enable GNU make in upstream projects.
Fixed
- Fix issues with GNU Make builds
Minor fix to support documentation tool
Fixed
- Prevented some macro redefinitions in
v1/map.inc
that caused warning messages and broke documentation tool on downstream projects.
Cleanup, compiler workarounds and minor bugfix
Changed
- Interfaces (intents) to map::at() and ordered_map::at(). The self object should be
INTENT(IN)
for these interfaces. - Updated GitHub Actions
- OSs
- Remove macos-10.15
- Add ubuntu-22.04 and macos-12
- Compilers
- Removed gfortran-8
- Added gfortran-11
- Added gfortran-12 (for ubuntu-22.04)
- OSs
Fixed
-
Fixed bug in
vector::insert_range()
(needs a unit test) -
Added
TARGET
to some dummy arguments to prevent NAG from doing copy-in / copy-out. Seems to
have been causing a memory corruption issue with the yaFyaml package, but might indicate a bug
in yaFyaml (or gFTL). -
Fixed non-standard-conforming mismatched integer KIND in deque implementation.
-
Fixed misspelling of SUCCESS
Removed
-
Various unused local variables that were causing annoying compiler warnings.
-
Reactivated unit tests (involving Foo) that were deactivated as a workaround for some NAG 7.1 compiler releases.