[release] Boost 1.83.0 Release Candidate 1 is available

The first release candidates for the 1.83.0 release are now available at: <https://boostorg.jfrog.io/artifactory/main/release/1.83.0/source/> The SHA256 checksums are as follows: 9e99f679ea059a25a11bbcb46141868b71c1b33cf89fac916fa392cff20d1577 boost_1_83_0_rc1.7z 4c1cfd15a92ce003a5c2f4bd11311225e7fe42c6686bffabc64e41534167395d boost_1_83_0_rc1.tar.bz2 0571eb39fc0dd92cc8d1d01d3197c58bb28043392e1038df57090676fd6574fa boost_1_83_0_rc1.zip 2d6cf669fb45a2c1e2f92f90c9d444b19a4af25420fbf54747366f637a22a3f7 boost_1_83_0_rc1.tar.gz As always, the release managers would appreciate it if you download the candidate of your choice and give building it a try. Please report both success and failure, and anything else that is noteworthy. -- The Release managers

On Aug 3, 2023, at 7:33 AM, Marshall Clow <mclow.lists@gmail.com> wrote:
The first release candidates for the 1.83.0 release are now available at: <https://boostorg.jfrog.io/artifactory/main/release/1.83.0/source/>
The SHA256 checksums are as follows:
9e99f679ea059a25a11bbcb46141868b71c1b33cf89fac916fa392cff20d1577 boost_1_83_0_rc1.7z 4c1cfd15a92ce003a5c2f4bd11311225e7fe42c6686bffabc64e41534167395d boost_1_83_0_rc1.tar.bz2 0571eb39fc0dd92cc8d1d01d3197c58bb28043392e1038df57090676fd6574fa boost_1_83_0_rc1.zip 2d6cf669fb45a2c1e2f92f90c9d444b19a4af25420fbf54747366f637a22a3f7 boost_1_83_0_rc1.tar.gz
As always, the release managers would appreciate it if you download the candidate of your choice and give building it a try. Please report both success and failure, and anything else that is noteworthy.
-- The Release managers
I have successfully built the libraries in Mac OS 13.5, with "Apple clang version 14.0.3 (clang-1403.0.22.14.1)” and C++ 03/11/14/17/20/2b, on both x86 and ARM. — Marshall

As always, the release managers would appreciate it if you download the candidate of your choice and give building it a try. Please report both success and failure, and anything else that is noteworthy.
-- The Release managers
I have successfully built the libraries using GCC master with cxxstd=11,14,17,20,23 on x86_64 Ubuntu 23.04. Matt

Unordered has a missing #include for its node map and node set types. I'm attaching a patch that works against the boost-1.83.0.beta1 tag. - Christian

On Aug 3, 2023, at 10:04 AM, Christian Mazakas via Boost <boost@lists.boost.org> wrote:
Unordered has a missing #include for its node map and node set types.
I'm attaching a patch that works against the boost-1.83.0.beta1 tag.
- Christian <unordered-1.83-patch.patch>
If you push that change to master, (and just that change, please) I will turn an RC2. — Marshall

El 08/08/2023 a las 21:53, Marshall Clow via Boost escribió:
On Aug 3, 2023, at 10:04 AM, Christian Mazakas via Boost <boost@lists.boost.org> wrote:
Unordered has a missing #include for its node map and node set types.
I'm attaching a patch that works against the boost-1.83.0.beta1 tag.
- Christian <unordered-1.83-patch.patch> If you push that change to master, (and just that change, please) I will turn an RC2.
I've just merged this one change, thank you, Joaquín M López Muñoz

Looks good on Windows/Visual Studio for 10.0 - 14.3. toolset arch compile Link Execute msvc-10.0 32 X X X msvc-10.0 64 X X X msvc-11.0 32 X X X msvc-11.0 64 X X X msvc-12.0 32 X X X msvc-12.0 64 X X X msvc-14.0 32 X X X msvc-14.0 64 X X X msvc-14.1 32 X X X msvc-14.1 64 X X X msvc-14.2 32 X X X msvc-14.2 64 X X X msvc-14.3 32 X X X msvc-14.3 64 X X X Compile means that the b2 command completed without errors Link means that visual studio was able to link a sample executable to a library (libboost_thread-vcXXX-mt[-gd]-1_XX.lib) generated Execute means that the linked program executed without errors. Full build logs can be found here: https://gist.github.com/teeks99/db82d2dcc1c908fbdcefa7ba1c655f17 Tom On Thu, Aug 3, 2023 at 9:33 AM Marshall Clow via Boost < boost@lists.boost.org> wrote:
The first release candidates for the 1.83.0 release are now available at: <https://boostorg.jfrog.io/artifactory/main/release/1.83.0/source/>
The SHA256 checksums are as follows:
9e99f679ea059a25a11bbcb46141868b71c1b33cf89fac916fa392cff20d1577 boost_1_83_0_rc1.7z 4c1cfd15a92ce003a5c2f4bd11311225e7fe42c6686bffabc64e41534167395d boost_1_83_0_rc1.tar.bz2 0571eb39fc0dd92cc8d1d01d3197c58bb28043392e1038df57090676fd6574fa boost_1_83_0_rc1.zip 2d6cf669fb45a2c1e2f92f90c9d444b19a4af25420fbf54747366f637a22a3f7 boost_1_83_0_rc1.tar.gz
As always, the release managers would appreciate it if you download the candidate of your choice and give building it a try. Please report both success and failure, and anything else that is noteworthy.
-- The Release managers
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

On Thu, Aug 3, 2023, at 7:44 PM, Tom Kent via Boost wrote:
Looks good on Windows/Visual Studio for 10.0 - 14.3.
Awesome work.
Execute means that the linked program executed without errors.
It is probably clear to some, from context, but which program is being executed? Cheers, Seth

On Fri, Aug 4, 2023 at 7:00 AM Seth via Boost <boost@lists.boost.org> wrote:
On Thu, Aug 3, 2023, at 7:44 PM, Tom Kent via Boost wrote:
Looks good on Windows/Visual Studio for 10.0 - 14.3.
Awesome work.
Execute means that the linked program executed without errors.
It is probably clear to some, from context, but which program is being executed?
It is a *very* simple test program, to make sure an arbitrary compiled library links/runs in visual studio. Source here: https://github.com/teeks99/boost-release-windows/tree/master/LibraryCheck Tom

On Thu, 3 Aug 2023 at 16:34, Marshall Clow via Boost <boost@lists.boost.org> wrote:
The first release candidates for the 1.83.0 release are now available at: <https://boostorg.jfrog.io/artifactory/main/release/1.83.0/source/>
I have successfully built the RC under Ubuntu 22.04, g++ 11.4.0.

On 03.08.23 16:33, Marshall Clow via Boost wrote:
As always, the release managers would appreciate it if you download the candidate of your choice and give building it a try. Please report both success and failure, and anything else that is noteworthy.
-- The Release managers
Sorry for the very late report, but I think I found a serious regression in either Boost.Stl_interfaces or in Boost.Range. Some iterators generated by Boost.Stl_interfaces are not accepted by Boost.Range. This is a regression from Boost 1.82. Minimal example program, with basic_input_iter taken directly from a Boost.Stl_interfaces test: #include "boost/stl_interfaces/iterator_interface.hpp" #include "boost/range/iterator_range.hpp" struct basic_input_iter : boost::stl_interfaces::iterator_interface< #if !BOOST_STL_INTERFACES_USE_DEDUCED_THIS basic_input_iter, #endif std::input_iterator_tag, int> { basic_input_iter() : it_(nullptr) {} basic_input_iter(int * it) : it_(it) {} int & operator*() const noexcept { return *it_; } basic_input_iter & operator++() noexcept { ++it_; return *this; } friend bool operator==(basic_input_iter lhs, basic_input_iter rhs) noexcept { return lhs.it_ == rhs.it_; } using base_type = boost::stl_interfaces::iterator_interface< #if !BOOST_STL_INTERFACES_USE_DEDUCED_THIS basic_input_iter, #endif std::input_iterator_tag, int>; using base_type::operator++; private: int * it_; }; auto make_range() { static int si; return boost::make_iterator_range( basic_input_iter(&si), basic_input_iter(&si + 1)); } This fails to compile with the following errors:
g++ -Wall -Wstrict-aliasing=0 -Wno-unused-local-typedefs -Werror=return-type -static-libgcc -static-libasan -static-libstdc++ -static-libubsan -std=gnu++20 -O3 -flto -pthread -Iintermediate/linux64/obj/linux64__test__iter_test -Iintermediate/linux64/libs/boost/install/include -DELDWOOD_EXTENSION_BOOST -c -o intermediate/linux64/obj/linux64__test__iter_test/eldwood/test/iter.cpp.o intermediate/linux64/obj/linux64__test__iter_test/eldwood/test/iter.cpp In file included from intermediate/linux64/libs/boost/install/include/boost/iterator/iterator_facade.hpp:13, from intermediate/linux64/libs/boost/install/include/boost/range/iterator_range_core.hpp:27, from intermediate/linux64/libs/boost/install/include/boost/range/iterator_range.hpp:13, from intermediate/linux64/obj/linux64__test__iter_test/eldwood/test/iter.cpp:2: intermediate/linux64/libs/boost/install/include/boost/iterator/iterator_categories.hpp: In instantiation of ‘struct boost::iterators::iterator_traversal<basic_input_iter>’: intermediate/linux64/libs/boost/install/include/boost/range/iterator_range_core.hpp:158:5: required from ‘struct boost::iterator_range_detail::pure_iterator_traversal<basic_input_iter>’ intermediate/linux64/libs/boost/install/include/boost/range/iterator_range_core.hpp:434:15: required from ‘class boost::iterator_range<basic_input_iter>’ intermediate/linux64/obj/linux64__test__iter_test/eldwood/test/iter.cpp:40:36: required from here intermediate/linux64/libs/boost/install/include/boost/iterator/iterator_categories.hpp:118:8: error: no type named ‘iterator_category’ in ‘struct std::iterator_traits<basic_input_iter>’ 118 | struct iterator_traversal | ^~~~~~~~~~~~~~~~~~ intermediate/linux64/libs/boost/install/include/boost/range/iterator_range_core.hpp: In instantiation of ‘struct boost::iterator_range_detail::pure_iterator_traversal<basic_input_iter>’: intermediate/linux64/libs/boost/install/include/boost/range/iterator_range_core.hpp:434:15: required from ‘class boost::iterator_range<basic_input_iter>’ intermediate/linux64/obj/linux64__test__iter_test/eldwood/test/iter.cpp:40:36: required from here intermediate/linux64/libs/boost/install/include/boost/range/iterator_range_core.hpp:158:5: error: no type named ‘type’ in ‘struct boost::iterators::iterator_traversal<basic_input_iter>’ 158 | traversal_t; | ^~~~~~~~~~~ In file included from intermediate/linux64/libs/boost/install/include/boost/utility/enable_if.hpp:15, from intermediate/linux64/libs/boost/install/include/boost/range/has_range_iterator.hpp:21, from intermediate/linux64/libs/boost/install/include/boost/range/difference_type.hpp:21, from intermediate/linux64/libs/boost/install/include/boost/range/size_type.hpp:19, from intermediate/linux64/libs/boost/install/include/boost/range/size.hpp:21, from intermediate/linux64/libs/boost/install/include/boost/range/functions.hpp:20, from intermediate/linux64/libs/boost/install/include/boost/range/iterator_range_core.hpp:38: intermediate/linux64/libs/boost/install/include/boost/core/enable_if.hpp: In instantiation of ‘struct boost::enable_if<boost::iterator_range<basic_input_iter>::is_compatible_range<const basic_input_iter>, void>’: intermediate/linux64/libs/boost/install/include/boost/range/iterator_range_core.hpp:489:13: required by substitution of ‘template<class SinglePassRange> boost::iterator_range<basic_input_iter>::iterator_range(const SinglePassRange&, typename boost::enable_if<is_compatible_range<const SinglePassRange>, void>::type*) [with SinglePassRange = basic_input_iter]’ intermediate/linux64/libs/boost/install/include/boost/range/iterator_range_core.hpp:758:20: required from ‘boost::iterator_range<IteratorT> boost::make_iterator_range(IteratorT, IteratorT) [with IteratorT = basic_input_iter]’ intermediate/linux64/obj/linux64__test__iter_test/eldwood/test/iter.cpp:40:36: required from here intermediate/linux64/libs/boost/install/include/boost/core/enable_if.hpp:41:10: error: ‘value’ is not a member of ‘boost::iterator_range<basic_input_iter>::is_compatible_range<const basic_input_iter>’ 41 | struct enable_if : public enable_if_c<Cond::value, T> {}; | ^~~~~~~~~ intermediate/linux64/libs/boost/install/include/boost/core/enable_if.hpp: In instantiation of ‘struct boost::enable_if<boost::iterator_range<basic_input_iter>::is_compatible_range<basic_input_iter>, void>’: intermediate/linux64/libs/boost/install/include/boost/range/iterator_range_core.hpp:500:13: required by substitution of ‘template<class SinglePassRange> boost::iterator_range<basic_input_iter>::iterator_range(SinglePassRange&, typename boost::enable_if<is_compatible_range<Source>, void>::type*) [with SinglePassRange = basic_input_iter]’ intermediate/linux64/libs/boost/install/include/boost/range/iterator_range_core.hpp:758:20: required from ‘boost::iterator_range<IteratorT> boost::make_iterator_range(IteratorT, IteratorT) [with IteratorT = basic_input_iter]’ intermediate/linux64/obj/linux64__test__iter_test/eldwood/test/iter.cpp:40:36: required from here intermediate/linux64/libs/boost/install/include/boost/core/enable_if.hpp:41:10: error: ‘value’ is not a member of ‘boost::iterator_range<basic_input_iter>::is_compatible_range<basic_input_iter>’
Build failed. -- Rainer Deyke (rainerd@eldwood.com)

On Aug 5, 2023, at 5:11 AM, Rainer Deyke via Boost <boost@lists.boost.org> wrote:
On 03.08.23 16:33, Marshall Clow via Boost wrote:
As always, the release managers would appreciate it if you download the candidate of your choice and give building it a try. Please report both success and failure, and anything else that is noteworthy. -- The Release managers
Sorry for the very late report, but I think I found a serious regression in either Boost.Stl_interfaces or in Boost.Range. Some iterators generated by Boost.Stl_interfaces are not accepted by Boost.Range. This is a regression from Boost 1.82. Minimal example program, with basic_input_iter taken directly from a Boost.Stl_interfaces test:
I have reproduced this with Apple clang version 14.0.3 (clang-1403.0.22.14.1) on ARM64, And have confirmed that this compiles w/o error with boost 1.82.0 on the same configuration. Does anyone have any ideas about what is going wrong here, and how to fix it? — Marshall % clang++ -I $BOOST boost.cpp -std=c++20 -c In file included from boost.cpp:2: In file included from /Users/marshall/Sources/Boost/main/boost/range/iterator_range.hpp:13: In file included from /Users/marshall/Sources/Boost/main/boost/range/iterator_range_core.hpp:27: In file included from /Users/marshall/Sources/Boost/main/boost/iterator/iterator_facade.hpp:13: /Users/marshall/Sources/Boost/main/boost/iterator/iterator_categories.hpp:120:50: error: no type named 'iterator_category' in 'std::iterator_traits<basic_input_iter>' typename std::iterator_traits<Iterator>::iterator_category ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~ /Users/marshall/Sources/Boost/main/boost/range/iterator_range_core.hpp:157:32: note: in instantiation of template class 'boost::iterators::iterator_traversal<basic_input_iter>' requested here BOOST_DEDUCED_TYPENAME iterator_traversal<IteratorT>::type ^ /Users/marshall/Sources/Boost/main/boost/range/iterator_range_core.hpp:437:67: note: in instantiation of template class 'boost::iterator_range_detail::pure_iterator_traversal<basic_input_iter>' requested here BOOST_DEDUCED_TYPENAME iterator_range_detail::pure_iterator_traversal<IteratorT>::type ^ boost.cpp:40:9: note: in instantiation of template class 'boost::iterator_range<basic_input_iter>' requested here return boost::make_iterator_range( ^ In file included from boost.cpp:2: In file included from /Users/marshall/Sources/Boost/main/boost/range/iterator_range.hpp:13: /Users/marshall/Sources/Boost/main/boost/range/iterator_range_core.hpp:161:30: error: no matching function for call to 'test_traversal_tag' traversal_i = sizeof(iterator_range_detail::test_traversal_tag((traversal_t()))) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /Users/marshall/Sources/Boost/main/boost/config/detail/suffix.hpp:410:72: note: expanded from macro 'BOOST_STATIC_CONSTANT' # define BOOST_STATIC_CONSTANT(type, assignment) static const type assignment ^~~~~~~~~~ /Users/marshall/Sources/Boost/main/boost/range/iterator_range_core.hpp:437:67: note: in instantiation of template class 'boost::iterator_range_detail::pure_iterator_traversal<basic_input_iter>' requested here BOOST_DEDUCED_TYPENAME iterator_range_detail::pure_iterator_traversal<IteratorT>::type ^ boost.cpp:40:9: note: in instantiation of template class 'boost::iterator_range<basic_input_iter>' requested here return boost::make_iterator_range( ^ /Users/marshall/Sources/Boost/main/boost/range/iterator_range_core.hpp:131:17: note: candidate function not viable: no known conversion from 'boost::iterator_range_detail::pure_iterator_traversal<basic_input_iter>::traversal_t' (aka 'int') to 'boost::incrementable_traversal_tag' for 1st argument incrementable_t test_traversal_tag(boost::incrementable_traversal_tag); ^ /Users/marshall/Sources/Boost/main/boost/range/iterator_range_core.hpp:132:17: note: candidate function not viable: no known conversion from 'boost::iterator_range_detail::pure_iterator_traversal<basic_input_iter>::traversal_t' (aka 'int') to 'boost::bidirectional_traversal_tag' for 1st argument bidirectional_t test_traversal_tag(boost::bidirectional_traversal_tag); ^ /Users/marshall/Sources/Boost/main/boost/range/iterator_range_core.hpp:133:17: note: candidate function not viable: no known conversion from 'boost::iterator_range_detail::pure_iterator_traversal<basic_input_iter>::traversal_t' (aka 'int') to 'boost::random_access_traversal_tag' for 1st argument random_access_t test_traversal_tag(boost::random_access_traversal_tag); ^ /Users/marshall/Sources/Boost/main/boost/range/iterator_range_core.hpp:484:19: error: type 'boost::iterator_range<basic_input_iter>::base_type' (aka 'iterator_range_base<basic_input_iter, typename pure_iterator_traversal_impl<traversal_i>::type>') is not a direct or virtual base of 'boost::iterator_range<basic_input_iter>' : base_type(first, last) ^~~~~~~~~ /Users/marshall/Sources/Boost/main/boost/range/iterator_range_core.hpp:758:20: note: in instantiation of function template specialization 'boost::iterator_range<basic_input_iter>::iterator_range<basic_input_iter>' requested here return iterator_range<IteratorT>( Begin, End ); ^ boost.cpp:40:16: note: in instantiation of function template specialization 'boost::make_iterator_range<basic_input_iter>' requested here return boost::make_iterator_range( ^ 3 errors generated. %

El 06/08/2023 a las 1:07, Marshall Clow via Boost escribió:
On Aug 5, 2023, at 5:11 AM, Rainer Deyke via Boost <boost@lists.boost.org> wrote:
On 03.08.23 16:33, Marshall Clow via Boost wrote:
As always, the release managers would appreciate it if you download the candidate of your choice and give building it a try. Please report both success and failure, and anything else that is noteworthy. -- The Release managers Sorry for the very late report, but I think I found a serious regression in either Boost.Stl_interfaces or in Boost.Range. Some iterators generated by Boost.Stl_interfaces are not accepted by Boost.Range. This is a regression from Boost 1.82. Minimal example program, with basic_input_iter taken directly from a Boost.Stl_interfaces test: I have reproduced this with Apple clang version 14.0.3 (clang-1403.0.22.14.1) on ARM64, And have confirmed that this compiles w/o error with boost 1.82.0 on the same configuration.
Does anyone have any ideas about what is going wrong here, and how to fix it?
Looks like the iterator_concept -> iterator_category mapping used here is incomplete: https://github.com/boostorg/stl_interfaces/blob/develop/include/boost/stl_in... The mapping is copied verbatim from zip_transform_view as spelled out at: https://eel.is/c++draft/range.zip.transform.iterator#1 I guess this is ok for zip_transform_view, but the description of the mapping explicitly says "The member typedef-name iterator::iterator_category is defined if and only if Base models forward_range." Note the "if and only if", implying that if Base only models input_range then iterator::iterator_category is not defined. FWIW, the attached patch makes the snippet compile. It simply adds and input_iterator_tag -> input_iterator_tag case to the mapping algorithm. Joaquín M López Muñoz

On Aug 7, 2023, at 9:19 AM, Joaquin M López Muñoz <joaquinlopezmunoz@gmail.com> wrote:
El 06/08/2023 a las 1:07, Marshall Clow via Boost escribió:
On Aug 5, 2023, at 5:11 AM, Rainer Deyke via Boost <boost@lists.boost.org> wrote:
On 03.08.23 16:33, Marshall Clow via Boost wrote:
As always, the release managers would appreciate it if you download the candidate of your choice and give building it a try. Please report both success and failure, and anything else that is noteworthy. -- The Release managers Sorry for the very late report, but I think I found a serious regression in either Boost.Stl_interfaces or in Boost.Range. Some iterators generated by Boost.Stl_interfaces are not accepted by Boost.Range. This is a regression from Boost 1.82. Minimal example program, with basic_input_iter taken directly from a Boost.Stl_interfaces test: I have reproduced this with Apple clang version 14.0.3 (clang-1403.0.22.14.1) on ARM64, And have confirmed that this compiles w/o error with boost 1.82.0 on the same configuration.
Does anyone have any ideas about what is going wrong here, and how to fix it?
Looks like the iterator_concept -> iterator_category mapping used here is incomplete:
https://github.com/boostorg/stl_interfaces/blob/develop/include/boost/stl_in...
The mapping is copied verbatim from zip_transform_view as spelled out at:
https://eel.is/c++draft/range.zip.transform.iterator#1
I guess this is ok for zip_transform_view, but the description of the mapping explicitly says
"The member typedef-name iterator::iterator_category is defined if and only if Base models forward_range."
Note the "if and only if", implying that if Base only models input_range then iterator::iterator_category is not defined.
FWIW, the attached patch makes the snippet compile. It simply adds and input_iterator_tag -> input_iterator_tag case to the mapping algorithm.
Thanks; I’ve added that to https://github.com/boostorg/stl_interfaces/issues/62 — Marshall
participants (8)
-
Christian Mazakas
-
Joaquin M López Muñoz
-
Marshall Clow
-
Matt Borland
-
Rainer Deyke
-
Ruben Perez
-
Seth
-
Tom Kent