[all-commits] [llvm/llvm-project] 344cef: [libc++] Granularize the <random> header. NFCI.

Quuxplusone via All-commits all-commits at lists.llvm.org
Mon Nov 22 10:24:48 PST 2021


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 344cef6695e9af05ed9fa5bb96b3a475c7a4df4b
      https://github.com/llvm/llvm-project/commit/344cef6695e9af05ed9fa5bb96b3a475c7a4df4b
  Author: Arthur O'Dwyer <arthur.j.odwyer at gmail.com>
  Date:   2021-11-22 (Mon, 22 Nov 2021)

  Changed paths:
    M libcxx/include/CMakeLists.txt
    A libcxx/include/__random/bernoulli_distribution.h
    A libcxx/include/__random/binomial_distribution.h
    A libcxx/include/__random/cauchy_distribution.h
    A libcxx/include/__random/chi_squared_distribution.h
    A libcxx/include/__random/default_random_engine.h
    A libcxx/include/__random/discard_block_engine.h
    A libcxx/include/__random/discrete_distribution.h
    A libcxx/include/__random/exponential_distribution.h
    A libcxx/include/__random/extreme_value_distribution.h
    A libcxx/include/__random/fisher_f_distribution.h
    A libcxx/include/__random/gamma_distribution.h
    A libcxx/include/__random/generate_canonical.h
    A libcxx/include/__random/geometric_distribution.h
    A libcxx/include/__random/independent_bits_engine.h
    A libcxx/include/__random/is_seed_sequence.h
    A libcxx/include/__random/knuth_b.h
    A libcxx/include/__random/linear_congruential_engine.h
    A libcxx/include/__random/log2.h
    A libcxx/include/__random/lognormal_distribution.h
    A libcxx/include/__random/mersenne_twister_engine.h
    A libcxx/include/__random/negative_binomial_distribution.h
    A libcxx/include/__random/normal_distribution.h
    A libcxx/include/__random/piecewise_constant_distribution.h
    A libcxx/include/__random/piecewise_linear_distribution.h
    A libcxx/include/__random/poisson_distribution.h
    A libcxx/include/__random/random_device.h
    A libcxx/include/__random/ranlux.h
    A libcxx/include/__random/seed_seq.h
    A libcxx/include/__random/shuffle_order_engine.h
    A libcxx/include/__random/student_t_distribution.h
    A libcxx/include/__random/subtract_with_carry_engine.h
    M libcxx/include/__random/uniform_int_distribution.h
    A libcxx/include/__random/uniform_random_bit_generator.h
    A libcxx/include/__random/uniform_real_distribution.h
    A libcxx/include/__random/weibull_distribution.h
    M libcxx/include/module.modulemap
    M libcxx/include/random
    A libcxx/test/libcxx/diagnostics/detail.headers/random/bernoulli_distribution.module.verify.cpp
    A libcxx/test/libcxx/diagnostics/detail.headers/random/binomial_distribution.module.verify.cpp
    A libcxx/test/libcxx/diagnostics/detail.headers/random/cauchy_distribution.module.verify.cpp
    A libcxx/test/libcxx/diagnostics/detail.headers/random/chi_squared_distribution.module.verify.cpp
    A libcxx/test/libcxx/diagnostics/detail.headers/random/default_random_engine.module.verify.cpp
    A libcxx/test/libcxx/diagnostics/detail.headers/random/discard_block_engine.module.verify.cpp
    A libcxx/test/libcxx/diagnostics/detail.headers/random/discrete_distribution.module.verify.cpp
    A libcxx/test/libcxx/diagnostics/detail.headers/random/exponential_distribution.module.verify.cpp
    A libcxx/test/libcxx/diagnostics/detail.headers/random/extreme_value_distribution.module.verify.cpp
    A libcxx/test/libcxx/diagnostics/detail.headers/random/fisher_f_distribution.module.verify.cpp
    A libcxx/test/libcxx/diagnostics/detail.headers/random/gamma_distribution.module.verify.cpp
    A libcxx/test/libcxx/diagnostics/detail.headers/random/generate_canonical.module.verify.cpp
    A libcxx/test/libcxx/diagnostics/detail.headers/random/geometric_distribution.module.verify.cpp
    A libcxx/test/libcxx/diagnostics/detail.headers/random/independent_bits_engine.module.verify.cpp
    A libcxx/test/libcxx/diagnostics/detail.headers/random/is_seed_sequence.module.verify.cpp
    A libcxx/test/libcxx/diagnostics/detail.headers/random/knuth_b.module.verify.cpp
    A libcxx/test/libcxx/diagnostics/detail.headers/random/linear_congruential_engine.module.verify.cpp
    A libcxx/test/libcxx/diagnostics/detail.headers/random/log2.module.verify.cpp
    A libcxx/test/libcxx/diagnostics/detail.headers/random/lognormal_distribution.module.verify.cpp
    A libcxx/test/libcxx/diagnostics/detail.headers/random/mersenne_twister_engine.module.verify.cpp
    A libcxx/test/libcxx/diagnostics/detail.headers/random/negative_binomial_distribution.module.verify.cpp
    A libcxx/test/libcxx/diagnostics/detail.headers/random/normal_distribution.module.verify.cpp
    A libcxx/test/libcxx/diagnostics/detail.headers/random/piecewise_constant_distribution.module.verify.cpp
    A libcxx/test/libcxx/diagnostics/detail.headers/random/piecewise_linear_distribution.module.verify.cpp
    A libcxx/test/libcxx/diagnostics/detail.headers/random/poisson_distribution.module.verify.cpp
    A libcxx/test/libcxx/diagnostics/detail.headers/random/random_device.module.verify.cpp
    A libcxx/test/libcxx/diagnostics/detail.headers/random/ranlux.module.verify.cpp
    A libcxx/test/libcxx/diagnostics/detail.headers/random/seed_seq.module.verify.cpp
    A libcxx/test/libcxx/diagnostics/detail.headers/random/shuffle_order_engine.module.verify.cpp
    A libcxx/test/libcxx/diagnostics/detail.headers/random/student_t_distribution.module.verify.cpp
    A libcxx/test/libcxx/diagnostics/detail.headers/random/subtract_with_carry_engine.module.verify.cpp
    A libcxx/test/libcxx/diagnostics/detail.headers/random/uniform_random_bit_generator.module.verify.cpp
    A libcxx/test/libcxx/diagnostics/detail.headers/random/uniform_real_distribution.module.verify.cpp
    A libcxx/test/libcxx/diagnostics/detail.headers/random/weibull_distribution.module.verify.cpp
    M libcxx/test/std/numerics/rand/rand.eng/rand.eng.lcong/params.fail.cpp

  Log Message:
  -----------
  [libc++] Granularize the <random> header. NFCI.

Actually there's one functional change here, which is that users can
no longer depend on <random> to include all of C++20 <concepts>. That
inclusion is so new that we believe nobody should be depending on it
yet, even in the presence of Hyrum's Law. We keep the includes of <vector>,
<algorithm>, etc., so as not to break pre-C++20 Hyrum's Law users.

Differential Revision: https://reviews.llvm.org/D114281


  Commit: d8380ad977e94498e170b06449c81f1fc27da7b5
      https://github.com/llvm/llvm-project/commit/d8380ad977e94498e170b06449c81f1fc27da7b5
  Author: Arthur O'Dwyer <arthur.j.odwyer at gmail.com>
  Date:   2021-11-22 (Mon, 22 Nov 2021)

  Changed paths:
    M libcxx/docs/Status/Cxx20Issues.csv
    M libcxx/include/CMakeLists.txt
    A libcxx/include/__compare/partial_order.h
    A libcxx/include/__compare/strong_order.h
    A libcxx/include/__compare/weak_order.h
    A libcxx/include/__utility/priority_tag.h
    M libcxx/include/compare
    M libcxx/include/module.modulemap
    M libcxx/include/utility
    A libcxx/test/libcxx/diagnostics/detail.headers/compare/partial_order.module.verify.cpp
    A libcxx/test/libcxx/diagnostics/detail.headers/compare/strong_order.module.verify.cpp
    A libcxx/test/libcxx/diagnostics/detail.headers/compare/weak_order.module.verify.cpp
    A libcxx/test/libcxx/diagnostics/detail.headers/utility/priority_tag.module.verify.cpp
    A libcxx/test/std/language.support/cmp/cmp.alg/partial_order.pass.cpp
    A libcxx/test/std/language.support/cmp/cmp.alg/strong_order.pass.cpp
    A libcxx/test/std/language.support/cmp/cmp.alg/strong_order_long_double.verify.cpp
    A libcxx/test/std/language.support/cmp/cmp.alg/weak_order.pass.cpp

  Log Message:
  -----------
  [libc++] [P1614] Implement [cmp.alg]'s std::{strong,weak,partial}_order.

This does not include `std::compare_*_fallback`; those are coming later.

There's still an open question of how to implement std::strong_order
for `long double`, which has 80 value bits and 48 padding bits on x86-64,
and which is presumably *not* IEEE 754-compliant on PPC64 and so on.
So that part is left unimplemented.

Differential Revision: https://reviews.llvm.org/D110738


Compare: https://github.com/llvm/llvm-project/compare/5f18ae39880f...d8380ad977e9


More information about the All-commits mailing list