[mapserver-dev] Modernizing code base: C99 and maybe C++ ?

Andy Colson andy at squeakycode.net
Thu Nov 28 07:21:54 PST 2019


I'm a perl programmer at heart, I've done a little C and less C++.

I'd love to help on this project as a learning experience.  In exchange for some grunt work I'm hoping there will be code reviews that'll teach me good/bad practices.

If I can be of help, and maybe stumble around a little, please let me know.

-Andy


On 11/26/19 5: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
> 



More information about the mapserver-dev mailing list