Changes between Version 5 and Version 6 of RFC5


Ignore:
Timestamp:
Mar 27, 2017, 3:27:19 PM (3 years ago)
Author:
mloskot
Comment:

Largish update

Legend:

Unmodified
Added
Removed
Modified
  • RFC5

    v5 v6  
    1 = GEOS RFC 5: C++11 Upgrade=
     1= GEOS RFC 5: C++11 Compilation Mode =
    22
    3 This document proposes GEOS upgrade to C++11 version of the C++ standard and describes benefits and outlines the process.
     3This document proposes to switch GEOS to C++11 as minimum supported version of C++ language.
    44
    55||RFC 5:  ||C++11 Upgrade     ||
     
    1010== Summary ==
    1111
    12 ...long way to go, tbc.
     12The document proposes to enable [https://en.wikipedia.org/wiki/C%2B%2B11 C++11] compilation mode throughout the whole C++ source code of GEOS.
     13
     14The goal of the document is to request and achieve agreement on using C++11 as the minimum required version  of the C++ programming language standard.
     15
     16== Motivation ==
     17
     18The C++11 is the first major update of the C++ standard  since 1998. (C++03 was a bug fix release.)
     19
     20The C++11 features aim to promote writing clean, compact, type-safe and fast code. It also delivers better feature-wise compatibility with C language (C99).
     21
     22The Wikipedia article at https://en.wikipedia.org/wiki/C++11 does a great job describing all changes in  C++11 extensively.
     23
     24The `std::auto_ptr` smart pointer, together with a bunch of other features, has been deprecated and will be removed from C++17.
     25
     26The new compilers provide better diagnostics.
     27
     28Enabling C++11 compilation mode will improve the programming environment making it much friendlier than C++98.
     29
     30A social factor: since C++ programmers no longer enjoy C++98, allowing C++11 mode may increase potential for new contributions.
     31
     32== Plan ==
     33
     34This proposal only requests agreement for the C++11 compilation mode.
     35
     36This proposal does not suggest any detailed roadmap of big refactoring committed in one go.
     37
     38The GEOS codebase is around 150 KLOC and given the available man-power to LOCs ratio, such one-step refactoring would not be feasible.
     39
     40Instead, the task will be tackled with the baby step approach gradually transforming the codebase according to priorities set along the way. Any disruptive refactoring, changes in interfaces of C++ classes, breaking changes in C++ API must be announced and discussed on the mailing list or the bug tracker.
     41
     42**IMPORTANT**: C++11 refactoring must not change the C API or break C API compatibility, unless agreed upon based on prior RFC proposed.
     43
     44However, if the proposal is accepted, any new C++ code written for GEOS can be C++11-compliant.
     45
     46Prior acceptance of this proposal is necessary in order to start any source code refactoring using C++11 features.
     47
     48Once accepted, first step will be to update the build configurations to require C++11-compliant compiler.
     49
     50== Release ==
     51
     52First release of C++11-enabled GEOS could be 3.7.0 or, perhaps, 4.0.0.
    1353
    1454== Compilers Landscape ==
     
    2969||Clang||3.4+ ||
    3070||MSVC ||14.0+ (2015)||
     71
     72
     73== References ==
     74
     75* [http://en.cppreference.com/w/cpp/compiler_support C++ compiler support]