Re: [Patch] Fortran: Accept -std=f2023 support, update line-length for Fortran 2023

2023-11-16 Thread Harald Anlauf

Hi Tobias,

On 11/16/23 14:01, Tobias Burnus wrote:

This adds -std=f2023, which is mostly a prep patch for future changes.

However, Fortran 2023, https://j3-fortran.org/doc/year/23/23-007r1.pdf
changes two things which is taken
care in this patch:

(A) In "6.3.2.1 Free form line length":

Fortran 2018: "If a line consists entirely of characters of default kind
(7.4.4), it shall contain at most 132 characters"
Fortran 2023: "A line shall contain at most ten thousand characters."

(B) In "6.3.2.6 Free form statements":
Fortran 2018: "A statement shall not have more than 255 continuation
lines."
Fortran 2023: "A statement shall not have more than one million
characters."


this is really a funny change: we're not really prepared to handle
this.  According to the standard one can have 99 lines with only
"&" and then an ";", but then only 100 lines with 1 characters.

There is a similar wording for fixed-form which you overlooked:

6.3.3.5 Fixed form statements

Fortran 2023: "A statement shall not have more than one million characters"

Please adjust the fixed-form limits in your patch.

If you think that we need testcases for fixed-form, add them,
or forget them.  I don't bother.


I have not added a testcase for exceeding the latter but otherwise there
are new
tests and I had to add a couple of -std=f2018 to existing tests.

Comments, suggestions, approval?


I have the following comments:

- there are existing testcases continuation_5.f, continuation_6.f,
  thus I suggest to rename your new continuation_{5,6}.f90 to
  continuation_17.f90+ .

- I don't understand your new testcase line_length_14.f90 .
  This is supposed to test -std=gnu, but then -std=gnu is not a
  standard but a moving target, which is why you had to adjust
  existing testcases.
  So what does it buy us beyond line_length_1{2,3}.f90 ?


Tobias

PS: I find it funny that -std=c23, -std=c++23 and -std=f2023 will get
added in the same GCC release.


:-)


PPS: I did not bother adding .f23 as file extension; I believe that also
.f18 is unsupported.


I never use extensions other than .f90 for portable code.

With the above fixed, I am fine with your patch.

Thanks,
Harald


-
Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201,
80634 München; Gesellschaft mit beschränkter Haftung; Geschäftsführer:
Thomas Heurung, Frank Thürauf; Sitz der Gesellschaft: München;
Registergericht München, HRB 106955




Re: [Patch] Fortran: Accept -std=f2023 support, update line-length for Fortran 2023

2023-11-16 Thread Jerry D

On 11/16/23 5:01 AM, Tobias Burnus wrote:

This adds -std=f2023, which is mostly a prep patch for future changes.

However, Fortran 2023, https://j3-fortran.org/doc/year/23/23-007r1.pdf 
changes two things which is taken

care in this patch:

(A) In "6.3.2.1 Free form line length":

Fortran 2018: "If a line consists entirely of characters of default kind 
(7.4.4), it shall contain at most 132 characters"

Fortran 2023: "A line shall contain at most ten thousand characters."

(B) In "6.3.2.6 Free form statements":
Fortran 2018: "A statement shall not have more than 255 continuation 
lines."
Fortran 2023: "A statement shall not have more than one million 
characters."


I have not added a testcase for exceeding the latter but otherwise there 
are new

tests and I had to add a couple of -std=f2018 to existing tests.

Comments, suggestions, approval?


My only comment is that the Standards Committee seems to have no idea of 
actual good coding practices. I have to assume they want this so people 
can have very very long DATA statements or array constructors or some 
such nonsense.


I always thought data files were for these sorts of things. The software 
engineers I work with would roll there eyes and say, "Hey you users out 
there, stop asking the compiler writers to fix your code for you by 
changing the compiler. Do your code correctly in the first place"


Perhaps AI is being used to generate the source files?

Cheers,

Jerry