Upthread there is a blurb, “the strong emphasis on backward compatibility has prevented changing these basic rules along the years”
But where was the “the strong emphasis on backward compatibility” when the standard committee nonchalantly set the far more dangerous precedent that allows a Fortran standard revision to change behavior of conforming programs?
Consider the silly example below:
character(len=:), allocatable :: s
allocate( character(len=10) :: s )
write( s, fmt=* ) "Hello"
print *, "len(s) after write: ", len(s)
print *, "Expected length is 10 with a program conforming to standards earlier than 2023,"
print *, "but 5 starting Fortran 2023."
end
- program response using one current processor
C:\temp>gfortran -ffree-form p.f -o p.exe
C:\temp>p.exe
len(s) after write: 10
Expected length is 10 with a program conforming to standards earlier than 2023,
but 5 starting Fortran 2023.
C:\temp>
I was the only person at the J3 meeting in Fall 2020 earnestly requesting the voting members on the committee to factor backward compatibility around the semantics of an otherwise good feature in 2023 revision. None of the voting members paid heed.
This change actually affected one data processing application among the teams I work in industry - this application as structured by a group of people among different departments had a Fortran layer working with some data where the program depended on the internal WRITE
s to not alter the string length (equivalent of that of s
in the example above). There was a significant cost of change to refactor this code to not break starting Fortran 2023.
So when it came to a situation involving some “mere mortal Fortran practitioners” i.e., the teams I work with, the Fortran committee did not care one bit about backward compatibility, their response effectively was, “go pound sand”.
And with the context in this thread, countless users are actually HARMED by the utterly nonsensical semantics around “implied SAVE” behavior and yet the very same cast of characters on the committees will refuse to do anything to help with the situation, so “conveniently” hiding behind “backward compatibility”.
Seriously, what gives?
This is why I repeatedly inquire, “For whom Fortran, for what!?”