[mapserver-dev] Modernizing code base: C99 and maybe C++ ?
Jeff McKenna
jmckenna at gatewaygeomatics.com
Wed Nov 27 06:33:12 PST 2019
By the way, I guess we'll need to make another wiki page for supported
compilers (such as https://trac.osgeo.org/gdal/wiki/SupportedCompilers).
-jeff
On 2019-11-26 7:43 PM, Even Rouault wrote:
> Hi,
>
> the kind of topics that is always controversial, but I do think this is a
> matter of survival for the project. I can write C89 code for sure, but which
> bad thing did I do to still be obliged to do it :-) ? Should new contributors
> be constrained by that... 2020 is just in a few days :-)
>
> Do we have a strong reason to stay with C89 for our .c files ? Not being able
> to use for loop initial declarations ( that is "for( int i = 0; i < ... ; ++)"
> ) is the example of something really annoying. Or being able to put
> declarations in the middle of a function instead of putting them at the
> beginning of it. This makes code harder to read, maintain and more error prone
> because of potential accidental reuse of variables that shouldn't.
>
> All gcc and clang compilers from the last 10 years support C99. Regarding
> MSVC, MSVC >= 2015 has decent enough support of it. Do we need to support
> older MSVC versions ? I don't think so. Neither current GDAL nor PROJ can
> built with older versions
>
> For the record, PROJ requires C99 for its few remaining .c files (and C++11
> for .cpp. So does GDAL)
>
> Next topic would be a
>
> for i in *.c; do mv $i "`basename $i .c`.cpp"; done
>
> Well, maybe not like that, because I'm expecting a ton of warnings. But more
> on a case by case basis where someone needs to do non-trivial changes in part
> of the code.
>
> Being constrained by C deeply sucks honesty. Apart from the Linux kernel which
> still resists for good reasons, I can't think of a single one for MapServer.
>
> The main point where C sucks is string manipulation, and MapServer does a ton
> of it. Being able to use std::string would be such a relief.
>
> Ah for the record, we do have C++ in the code base: mapogr.cpp and the agg
> renderer.
>
> Even
>
--
Jeff McKenna
MapServer Consulting and Training Services
https://gatewaygeomatics.com/
More information about the mapserver-dev
mailing list