[GRASS-dev] Min. req. of programming language standard support, GRASS GIS 8

Markus Metz markus.metz.giswork at gmail.com
Fri Jan 29 12:54:06 PST 2021


Hi Huidae,

On Thu, Jan 28, 2021 at 6:30 PM Huidae Cho <grass4u at gmail.com> wrote:
>
> Markus,
>
> I think we have to think about what benefits it would bring to us by
modernizing C code. Probably, not much at all. Personally, I would keep it
as is because the minimum set of anything (e.g., ANSI C with no new
features) would probably be more portable, I believe. In other words, what
are we missing from C99?

as I mentioned, there is no need to modernize the GRASS C code. The
question is if we officially allow C99 features.

For example a number of useful math-related functions and macros are only
available with C99. See /usr/include/math.h on your system and search for
C99. Also a number of features related to data types, particularly for
various int datatypes (stdint.h), become available with C99. And the
geographic lib in PROJ with src/geodesic.c wants C99. For new PROJ
versions, C99 is a requirement.

Markus M

>
> Regards,
> Huidae
>
> On Thu, Jan 28, 2021 at 12:19 PM Markus Metz <
markus.metz.giswork at gmail.com> wrote:
>>
>> Hi all,
>>
>> regarding C, there is no need to modernize the code base because the
current C code written for C89 compiles just fine with newer standards
which are backwards compatible it seems. The question is if we allow
features from a newer C standard, say C99, to be included in the code base.
In fact, a few C99 features (supported by gnu89) have already sneaked into
the GRASS C code base. I am opting to allow C99 features.
>>
>> Regarding C++, it's a bit more difficult because apparently C++
standards are not fully backwards compatible. We had corresponding problems
with C++ code in GRASS previously and fixed these problems when they arose.
>>
>> Markus M
>>
>>
>> On Thu, Jan 28, 2021 at 3:33 PM Huidae Cho <grass4u at gmail.com> wrote:
>>>
>>> Nicklas,
>>>
>>> Thanks for your suggestions. As far as I know, C code "is written in
portable ANSI-C and is fully POSIX compliant" [1] (C89 or C90?, rather old
standards, I know, but GRASS itself is old and predates both standards) and
the minimum "recommended" version of Python going forward is 3.5 [2]. I
don't know about C++, but there are not many modules written in it.
Modernizing the current code base to a newer C standard would be great
though.
>>>
>>> Best,
>>> Huidae
>>>
>>> [1] https://old.grass.osgeo.org/screenshots/platforms/
>>> [2] https://github.com/OSGeo/grass/blob/master/REQUIREMENTS.html
>>>
>>>
>>> On Thu, Jan 28, 2021 at 4:28 AM Nicklas Larsson via grass-dev <
grass-dev at lists.osgeo.org> wrote:
>>>>
>>>> Dear Devs!
>>>>
>>>> As a relatively new member of the GRASS GIS dev community, I have had
to search for information on mailing lists, old trac comments etc.
regarding coding practice and in particular minimum programming language
standard support. Ending up in not entirely conclusive understanding. Up
until now, I have been mostly involved in Python development and I’m still
not absolutely certain, although I assume 3.5 is minimum version. And I’m
not alone, see e.g. [1].
>>>>
>>>> Now, I’ve encountered a similar dilemma with C standard support,
attempting to address compiler warnings [2], in particular with the PR
#1256 [3].
>>>>
>>>> I would be great if there were a (one) place where the min support of
Python version, C (C89, C99, C11, C17…) and C++ (C++03, C++11, C++14 …)
standard is stated -- loud and clear. Obviously, there has to be a
consensus in the community on these matters for that to happen. Such a
statement will also have to be revised now and then. (A related question is
also whether or not to support 32 bit, which I know have been raised
recently).
>>>>
>>>> I’d appreciate your opinion is on this issue!
>>>> Let me put up a a suggestion for min. req. for coming GRASS GIS 8 as a
starting point of discussion:
>>>> - Python 3.7
>>>> - C11
>>>> - C++11
>>>>
>>>>
>>>> Best regards,
>>>> Nicklas
>>>>
>>>>
>>>>
>>>> [1] https://github.com/OSGeo/grass/issues/1241
>>>> [2] https://github.com/OSGeo/grass/issues/1247
>>>> [3] https://github.com/OSGeo/grass/pull/1256
>>>> _______________________________________________
>>>> grass-dev mailing list
>>>> grass-dev at lists.osgeo.org
>>>> https://lists.osgeo.org/mailman/listinfo/grass-dev
>>>
>>>
>>>
>>> --
>>> Huidae Cho, Ph.D., GISP, /hidɛ t͡ɕo/, 조희대, 曺喜大
>>> GRASS GIS Developer
>>> https://idea.isnew.info
>>> _______________________________________________
>>> grass-dev mailing list
>>> grass-dev at lists.osgeo.org
>>> https://lists.osgeo.org/mailman/listinfo/grass-dev
>
>
>
> --
> Huidae Cho, Ph.D., GISP, /hidɛ t͡ɕo/, 조희대, 曺喜大
> GRASS GIS Developer
> https://idea.isnew.info
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/grass-dev/attachments/20210129/d60c88e3/attachment.html>


More information about the grass-dev mailing list