Skip to content

Releases: Goddard-Fortran-Ecosystem/gFTL

Eliminate debug prints

10 Feb 21:36
ee489ee
Compare
Choose a tag to compare

Fixed

  • removed extraneous debug prints left from last PR

Workaround for gfortran + unlimited polymorphic

04 Feb 21:25
261a1bd
Compare
Choose a tag to compare

Fixed

  • workaround for gfortran tests on containers with unlimited polymorphic entities

New variant of Set container (compiler workaround)

31 Jan 19:39
107f470
Compare
Choose a tag to compare

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 use alt_set instead of set 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 and gfortran-11 only on ubuntu-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

09 Jul 14:41
45b4d4a
Compare
Choose a tag to compare

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

IFX port

20 Mar 11:43
5367705
Compare
Choose a tag to compare

Fixed

  • Implemented workarounds for ifx compiler and v1 interfaces. v2 tests were fine.
    1. Removed previous workaround for older Intel compilers that did not support polymorphic assignment.
    2. Introduced workaround for comparing polymorphic pointers for Set and altSet

Changed

  • Removed macos-11 from CI, added macos-13
  • Added -quiet flag for NAG compiler
  • Removed stray print statements in tests.

Port to Fujitsu (and minor bugfix)

03 Mar 17:56
d4203cc
Compare
Choose a tag to compare

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

28 Nov 18:47
dc93a5f
Compare
Choose a tag to compare

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 around ifx bug.

Initial attempt at ifx port

13 Apr 13:54
4beb2f4
Compare
Choose a tag to compare

Added

  • Added IntelLLVM.cmake file as a copy of Intel.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

12 Apr 17:06
50366c6
Compare
Choose a tag to compare

Added

  • Added Fortran-friendly iterator factories (and tests) to

    ftn_begin() and ftn_end() have been added to vector, set, map,
    and ordered_map templates. ftn_begin() points to just-before the
    1st element of a container, while ftn_end() points to the last
    element. This allows the next() invocation to be at the start of the loop which
    is less error prone in the presence of CYCLE 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

27 Jan 14:26
6e2adb7
Compare
Choose a tag to compare

Fixed

  • Missing KIND= on size() procedure. Gave incorrect response for large containers. Only affects V1 containers.