diff --git a/CREDITS.md b/CREDITS.md index 46bd9798a0..3b969587b4 100644 --- a/CREDITS.md +++ b/CREDITS.md @@ -41,8 +41,8 @@ In 2013, I published a blog post called ["Out Parameters, Move Semantics, and St **Standardization** -Around this time, some big thinkers in the C++ community were working to resurrect the effort to add Concepts to C++. They published a paper ([N3351](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3351.pdf)) that would become known as the **"Palo Alto Report"** which detailed the necessary and sufficient language and library support for a concept-checked version of the Standard Template Library. The authors of the paper included Alexander Stepanov, Bjarne Stroustrup, Sean Parent, Andrew Sutton, and more. Andrew Sutton began working in earnest to realize the core language changes, an effort that became known as "Concepts Lite". (It is now the Concepts TS.) +Around this time, some big thinkers in the C++ community were working to resurrect the effort to add Concepts to C++. They published a paper ([N3351](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3351.pdf)) that would become known as the **"Palo Alto Report"** which detailed the necessary and sufficient language and library support for a concept-checked version of the Standard Template Library. The authors of the paper included Alexander Stepanov, Bjarne Stroustrup, Sean Parent, Andrew Sutton, and more. Andrew Sutton began working in earnest to realize the core language changes, an effort that became known as "Concepts Lite". It became the Concepts TS and ultimately C++20's `concept` language feature. -I decided early on that Concepts Lite, or something like it, would become part of Standard C++. Recognizing that C++ would need a concept-ified Standard Library to go with the language feature, I began evolving range-v3 in that direction, eventually submitting ["Ranges for the Standard Library, Revision 1"](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4128.html) to the C++ Standardization Committee, together with Andrew Sutton and Sean Parent. The Committee approved the direction in late 2014, and so it goes... +I realized early on that Concepts Lite, or something like it, would become part of Standard C++. Recognizing that C++ would need a concept-ified Standard Library to go with the language feature, I began evolving range-v3 in that direction, eventually submitting ["Ranges for the Standard Library, Revision 1"](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4128.html) to the C++ Standardization Committee, together with Andrew Sutton and Sean Parent. The Committee approved the direction in late 2014, and so it goes... -Today (2017-03), we are very close to a final Ranges TS and are on target to integrate into Standard C++ in 2020, with *much* more to come. Stay tuned. +As of today (2022-06), C++20 has shipped with modest ranges support in the `std::ranges` namespace, with *much* more to come in C++23 and beyond. Stay tuned. diff --git a/README.md b/README.md index 74aa19e176..3a5f2f6774 100644 --- a/README.md +++ b/README.md @@ -58,7 +58,7 @@ The code is known to work on the following compilers: - GCC 6.5 (or later) - Clang/LLVM 6 (or later) on Windows (older versions may work - we haven't tested.) - Visual Studio 2019 (or later) on Windows, with some caveats due to range-v3's strict conformance requirements: - - range-v3 needs `/permissive-` and either `/std:c++latest` or `/std:c++17` + - range-v3 needs `/permissive-` and either `/std:c++latest`, `/std:c++20`, or `/std:c++17` **Development Status:** This code is fairly stable, well-tested, and suitable for casual use, although currently lacking documentation. _In general_, no promise is made about support or long-term stability. This code *will* evolve without regard to backwards compatibility. @@ -99,7 +99,7 @@ target_link_libraries(${PROJECT_NAME} CONAN_PKG::range-v3) Create `conanfile.txt` in your source dir: ``` [requires] -range-v3/0.10.0 +range-v3/0.12.0 [generators] cmake diff --git a/Version.cmake b/Version.cmake index 6cb76af003..962166f949 100644 --- a/Version.cmake +++ b/Version.cmake @@ -3,5 +3,5 @@ # generate a new version.hpp, *AMEND THE MOST RECENT COMMIT*, and git-tag the commit. set(RANGE_V3_MAJOR 0) -set(RANGE_V3_MINOR 11) +set(RANGE_V3_MINOR 12) set(RANGE_V3_PATCHLEVEL 0) diff --git a/conanfile.py b/conanfile.py index 0604410b88..e5c29fae59 100644 --- a/conanfile.py +++ b/conanfile.py @@ -14,10 +14,10 @@ class Rangev3Conan(ConanFile): name = "range-v3" - version = "0.11.0" + version = "0.12.0" license = "Boost Software License - Version 1.0 - August 17th, 2003" url = "https://github.com/ericniebler/range-v3" - description = """Experimental range library for C++11/14/17""" + description = """Experimental range library for C++14/17/20""" # No settings/options are necessary, this is header only exports_sources = "include*", "LICENSE.txt", "CMakeLists.txt", "cmake/*", "Version.cmake", "version.hpp.in" no_copy_source = True diff --git a/doc/gh-pages b/doc/gh-pages index c598e54d88..2dae74bb69 160000 --- a/doc/gh-pages +++ b/doc/gh-pages @@ -1 +1 @@ -Subproject commit c598e54d8855248de8ebb9b17b2449ccf53d1583 +Subproject commit 2dae74bb693e42d850fb0adcc9045c5b71fbdeae diff --git a/doc/index.md b/doc/index.md index ec0d1bd095..7a0b34e39f 100644 --- a/doc/index.md +++ b/doc/index.md @@ -73,7 +73,7 @@ The code is known to work on the following compilers: - clang 5.0 - GCC 6.5 - Clang/LLVM 6 (or later) on Windows -- MSVC VS2019, with `/permissive-` and either `/std:c++latest` or `/std:c++17` +- MSVC VS2019, with `/permissive-` and either `/std:c++latest`, `/std:c++20`, or `/std:c++17` \section tutorial-quick-start Quick Start diff --git a/doc/release_notes.md b/doc/release_notes.md index 54e8b5e2d3..f158587a1b 100644 --- a/doc/release_notes.md +++ b/doc/release_notes.md @@ -1,6 +1,59 @@ Release Notes {#release_notes} ============= +\section v0-12-0 Version 0.12.0 "Dude, Where's My Bored Ape?" + +_Released:_ June 19, 2022 + +> **IMPORTANT:** This release deprecates `views::group_by` which was +> an endless source of confusion. `group_by` is replaced with +> `views::chunk_by` (which, beware, has _subtly_ different semantics, +> see below.) + +Changes: +* **NEW:** `views::chunk_by` which, like the old `views::group_by` it replaces, + splits a range into a range-of-ranges, where adjacent elements satisfy a binary + predicate ([\#1648](https://github.com/ericniebler/range-v3/pull/1648)). [_Note:_ Whereas `views::group_by` evaluated the predicate + between the current element and the _first_ element in the chunk, `views::chunk_by` + evaluates the predicate between _adjacent_ elements. -- _end note_] +* **NEW:** `constexpr` all the algorithms that are `constexpr` in C++20's `std::ranges` + ([\#1683](https://github.com/ericniebler/range-v3/pull/1683)). +* **NEW:** Fold algorithms from [P2322](http://wg21.link/P2322) ([\#1628](https://github.com/ericniebler/range-v3/pull/1628)), ([\#1668](https://github.com/ericniebler/range-v3/pull/1668)). +* **NEW:** `ranges::unformatted_ostream_iterator` ([\#1586](https://github.com/ericniebler/range-v3/pull/1586)). +* **NEW:** Support for the `build2` build system ([\#1562](https://github.com/ericniebler/range-v3/pull/1562)). +* Implement [P2328](http://wg21.link/P2328): relax the constraint on `ranges::join_view` + to support joining ranges of prvalue non-`view` ranges ([\#1655](https://github.com/ericniebler/range-v3/pull/1655)). +* Improved algorithm for `ranges::linear_distribute` ([\#1679](https://github.com/ericniebler/range-v3/pull/1679)). +* Renamed `safe_subrange_t` to `borrowed_subrange_t` ([\#1542](https://github.com/ericniebler/range-v3/pull/1542)). +* Extend `ranges::to` to support conversion to container-of-containers ([\#1553](https://github.com/ericniebler/range-v3/pull/1553)). +* `views::enumerate` can be a `borrowed_view` ([\#1571](https://github.com/ericniebler/range-v3/pull/1571)). +* `ranges::upper_bound` works in the presence of overloaded `operator&` ([\#1632](https://github.com/ericniebler/range-v3/pull/1632)). +* Input iterators are no longer required to be default-constructible ([\#1652](https://github.com/ericniebler/range-v3/pull/1652)). + +Bugs fixed: +* `ranges::to(v)` does not work ([\#1700](https://github.com/ericniebler/range-v3/pull/1700)) +* `ranges::reverse_iterator` has the wrong `value_type` when reversing a proxy + range ([\#1670](https://github.com/ericniebler/range-v3/pull/1670)). +* A post-increment of a `ranges::counted_iterator` wrapping an input iterator with + a `void`-returning post-increment operator isn't incrementing the count ([\#1664](https://github.com/ericniebler/range-v3/pull/1664)). +* Bad assert in `views::drop_last` ([\#1599](https://github.com/ericniebler/range-v3/pull/1599)). +* Read of uninitialized `bool` in `views::cache1` ([\#1610](https://github.com/ericniebler/range-v3/pull/1610)). +* `ranges::unstable_remove_if` calls predicate on same element twice ([\#1629](https://github.com/ericniebler/range-v3/pull/1629)). +* `ranges::on(f,g)(x...)` should be `f(g(x)...)` instead of `f(g(x...))` ([\#1661](https://github.com/ericniebler/range-v3/pull/1661)). +* Broken qualification of cmake targets ([\#1557](https://github.com/ericniebler/range-v3/pull/1557)). +* Various portability and documentation fixes. + +**Credits:** I would like to thank the following people who contributed to this release +(in no particular order): Barry Revzin, @dvirtz, Gonzalo Brito, Johel Ernesto Guerrero +Peña, Joël Lamotte, Doug Roeper, Facundo Tuesca, Vitaly Zaitsev, @23rd, @furkanusta, +Jonathan Haigh, @SmorkalovG, @marehr, Matt Beardsley, Chris Glover, Louis Dionne, Jin +Shang (@js8544), Hui Xie, @huixie90, Robert Maynard, Silver Zachara, @sergegers, +Théo DELRIEU, @LesnyRumcajs, Yehezkel Bernat, Maciej Patro, Klemens Nanni, Thomas +Madlener, and Jason Merrill. + +🎉 Special thanks to Barry Revzin for stepping up to be part-time co-maintainer of +range-v3. 🎉 + \section v0-11-0 Version 0.11.0 "Thanks, ISO" _Released:_ August 6, 2020 @@ -54,7 +107,7 @@ Changes: * Better conformance with C++20's use of the _`boolean-testable`_ concept. * Support C++20 coroutines. * Honor CMake's `CMAKE_CXX_STANDARD` variable. -* A fix for the cardinality of `views::zip[_with]` (#1486). +* A fix for the cardinality of `views::zip[_with]` ([\#1486](https://github.com/ericniebler/range-v3/pull/1486)). * Add `view_interface::data()` member function. * Add necessary specializations for `std::basic_common_reference` and `std::common_type`. @@ -62,10 +115,10 @@ Changes: * Various CMake fixes and improvements. * `drop_while_view` is not a `sized_range`. * Added support for Wind River Systems. -* Bug fixes to `views::group_by` (#1393). +* Bug fixes to `views::group_by` ([\#1393](https://github.com/ericniebler/range-v3/pull/1393)). * `common_[reference|type]` of `common_[tuple|pair]` now yields a `common_[tuple|pair]` - instead of a `std::[tuple|pair]` (#1422). -* Avoid UB when currying an lvalue in some views and actions (#1320). + instead of a `std::[tuple|pair]` ([\#1422](https://github.com/ericniebler/range-v3/pull/1422)). +* Avoid UB when currying an lvalue in some views and actions ([\#1320](https://github.com/ericniebler/range-v3/pull/1320)). **Credits:** I would like to thank the following people who contributed to this release (in no particular order): Christopher Di Bella, @marehr, Casey Carter, Dvir Yitzchaki, diff --git a/include/range/v3/version.hpp b/include/range/v3/version.hpp index 29adc700ed..511e6872c3 100644 --- a/include/range/v3/version.hpp +++ b/include/range/v3/version.hpp @@ -15,7 +15,7 @@ #define RANGES_V3_VERSION_HPP #define RANGE_V3_MAJOR 0 -#define RANGE_V3_MINOR 11 +#define RANGE_V3_MINOR 12 #define RANGE_V3_PATCHLEVEL 0 #define RANGE_V3_VERSION \ diff --git a/test_package/conanfile.py b/test_package/conanfile.py index 4a8c78db97..e58a951d8b 100644 --- a/test_package/conanfile.py +++ b/test_package/conanfile.py @@ -30,4 +30,4 @@ def imports(self): def test(self): os.chdir("bin") - self.run(".%sexample" % os.sep) + self.run(".%srange-v3-example" % os.sep)