Changes between Version 8 and Version 9 of BoostEvo
- Timestamp:
- Jun 6, 2014, 11:21:16 AM (8 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
BoostEvo
v8 v9 1 = Guidelines to implement policy on Boost library evolution(was Boost 2.0) =1 = Guidelines to implement Boost library evolution policy (was Boost 2.0) = 2 2 3 The Boost Steering Committee has already set the overall library evolution policy. This wiki page is the current draft of guidelines to implement that policy.3 The Boost Steering Committee set the overall library evolution policy at its May 2014 meeting in Aspen. This wiki page is the current draft of guidelines to implement that policy. 4 4 5 == Draft Guidelines==5 === Introduction === 6 6 7 7 The C++ standards committee is releasing new or revised language and library features on a regular basis. See https://isocpp.org/std/status. … … 9 9 Compiler and standard library implementers are adding support for new language and library features piecemeal, each in a different sequence. 10 10 11 So as seen by Boost developers and other users, C++ is a continuously moving target. That's very good for C++; it means the language, standard library, and their implementations are evolving rapidly to meet today's changing needs. 12 To thrive in this continuously evolving environment, Boost libraries need to evolve continuously. In other words, the idea of a C++11 based Boost 2.0 makes limited sense; it would start to become obsolete the moment it shipped. Boost also recognizes that users will not migrate to new compiler and Standard Library releases at the same rate, and that some prefer that Boost support older compilers for an extended period. 11 13 12 Thus as seen by Boost developers and other users, C++ is a continuously moving target. That's very good for C++; it means the language, standard library, and their implementations are evolving rapidly to meet today's changing needs. 13 To thrive in this continuously evolving environment, Boost libraries need to evolve continuously. In other words, Boost 2.0 makes limited sense; it would start to become obsolete the moment it shipped. Instead, Boost's policy is to have "continuous evolution". Boost also recognizes that users will not migrate to new compiler and Standard Library releases at the same rate, and that some prefer that Boost support older compilers for an extended period. 14 In summary, Boost's policy is to encourage "continuous evolution" of Boost libraries. 14 15 15 16 The following guidelines are subject to change, but reflect the current Boost policy. 16 The following guidelines for Boost library developers and maintainers implement that policy. 17 17 18 18 === Existing Boost libraries === … … 22 22 * If a new C++ feature cannot be added conditionally (for example, because it would cause breaking interface changes), maintainers may add a new version of the library that uses the new feature unconditionally, while continuing to support the old version. Maintainers may choose to seek a replacement maintainer for the old version of the library, of course. Because two versions of a library are painful to maintain and confusing to users, this approach is only encouraged when the advantages of using the new C++ feature would be of great benefit to library users. This is appropriate only when there is regression test coverage, for at least one implementation, of the new feature. 23 23 24 * Once a C++ feature has been shipping by all major C++ implementers for several releases, Boost libraries may use the feature unconditionally and stop supporting older versions that do not provide the feature. The maintainer of each Boost library must weigh the pros and cons of dropping support for older compilers and standard libraries, and consult users to gauge the impact of such a change. Example: As of mid-2014, major compilers such as Clang, GCC, and Visual C++ have supported auto, decltype, nullptr, doubled right angle brackets, long long, rvalue references, static assert, and built-in type traits for at least three major releases, so these C++11 features are among the first a Boost library might consider using unconditionally. If conditional support or two library versions do not cause an unwanted burden, maintainers are free to continue that approach into the future. 24 * Once a C++ feature has been shipping by all major C++ implementers for several releases, Boost libraries may use the feature unconditionally and stop supporting older versions that do not provide the feature. The maintainer of each Boost library must weigh the pros and cons of dropping support for older compilers and standard libraries, and consult users to gauge the impact of such a change. 25 26 Example: As of mid-2014, major compilers such as Clang, GCC, and Visual C++ have supported auto, decltype, nullptr, doubled right angle brackets, long long, rvalue references, static assert, and built-in type traits for at least three major releases, so these C++11 features are among the first a Boost library might consider using unconditionally. If conditional support, or two library versions, does not cause an unwanted burden, maintainers are free to continue that approach into the future. 25 27 26 28 === New Boost libraries ===