Skip to content

Commit

Permalink
release 0.12.0
Browse files Browse the repository at this point in the history
  • Loading branch information
ericniebler committed Jun 21, 2022
1 parent 003f42c commit a814779
Show file tree
Hide file tree
Showing 9 changed files with 69 additions and 16 deletions.
6 changes: 3 additions & 3 deletions CREDITS.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.

Expand Down Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion Version.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -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)
4 changes: 2 additions & 2 deletions conanfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion doc/gh-pages
2 changes: 1 addition & 1 deletion doc/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
61 changes: 57 additions & 4 deletions doc/release_notes.md
Original file line number Diff line number Diff line change
@@ -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<std::map>(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.

&#127881; Special thanks to Barry Revzin for stepping up to be part-time co-maintainer of
range-v3. &#127881;

\section v0-11-0 Version 0.11.0 "Thanks, ISO"

_Released:_ August 6, 2020
Expand Down Expand Up @@ -54,18 +107,18 @@ 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`.
* Numerous workarounds for MSVC.
* 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,
Expand Down
2 changes: 1 addition & 1 deletion include/range/v3/version.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -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 \
Expand Down
2 changes: 1 addition & 1 deletion test_package/conanfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)

0 comments on commit a814779

Please sign in to comment.