Closed msimberg closed 2 months ago
Current situation is the following.
Main library, include counts per boost header:
> rg --no-heading --no-line-number --no-filename --no-messages '#include\W+boost' libs/pika/*/{include,src}/**/*.{cpp,hpp,cu} | sort | uniq -c | sort -r
7 #include <boost/tokenizer.hpp>
7 #include <boost/shared_array.hpp>
5 #include <boost/version.hpp>
2 #include <boost/variant.hpp>
2 #include <boost/lockfree/queue.hpp>
2 #include <boost/exception/exception.hpp>
2 #include <boost/exception/diagnostic_information.hpp>
2 #include <boost/dynamic_bitset.hpp>
2 #include <boost/config.hpp>
1 #include <boost/shared_ptr.hpp>
1 #include <boost/range/irange.hpp>
1 #include <boost/multi_array.hpp>
1 #include <boost/lockfree/stack.hpp>
1 #include <boost/lockfree/policies.hpp>
1 #include <boost/lockfree/detail/tagged_ptr.hpp>
1 #include <boost/lockfree/detail/prefix.hpp>
1 #include <boost/iterator/iterator_categories.hpp>
1 #include <boost/intrusive/slist.hpp>
1 #include <boost/intrusive_ptr.hpp>
1 #include <boost/functional/hash.hpp>
1 // #include <boost/detail/utf8_codecvt_facet.ipp>
1 #include <boost/context/detail/fcontext.hpp>
1 #include <boost/container/small_vector.hpp>
1 #include <boost/array.hpp>
Main library, includes per pika file:
> rg --no-heading --no-line-number --no-messages '#include\W+boost' libs/pika/*/{include,src}/**/*.{cpp,hpp,cu} | sort | uniq
libs/pika/affinity/include/pika/affinity/parse_affinity_options.hpp:#include <boost/variant.hpp>
libs/pika/algorithms/include/pika/parallel/algorithms/copy.hpp:#include <boost/shared_array.hpp>
libs/pika/algorithms/include/pika/parallel/algorithms/detail/set_operation.hpp:#include <boost/shared_array.hpp>libs/pika/algorithms/include/pika/parallel/algorithms/for_loop_reduction.hpp:#include <boost/shared_array.hpp>
libs/pika/algorithms/include/pika/parallel/algorithms/partition.hpp:#include <boost/shared_array.hpp>
libs/pika/algorithms/include/pika/parallel/algorithms/remove.hpp:#include <boost/shared_array.hpp>
libs/pika/algorithms/include/pika/parallel/algorithms/unique.hpp:#include <boost/shared_array.hpp>
libs/pika/algorithms/include/pika/parallel/spmd_block.hpp:#include <boost/range/irange.hpp>
libs/pika/async_cuda/include/pika/async_cuda/cuda_event.hpp:#include <boost/lockfree/stack.hpp>
libs/pika/command_line_handling/src/command_line_handling.cpp:#include <boost/tokenizer.hpp>
libs/pika/concurrency/include/pika/concurrency/deque.hpp:#include <boost/lockfree/detail/tagged_ptr.hpp>
libs/pika/concurrency/include/pika/concurrency/detail/freelist.hpp:#include <boost/lockfree/policies.hpp>
libs/pika/concurrency/include/pika/concurrency/detail/freelist.hpp:#include <boost/lockfree/queue.hpp>
libs/pika/concurrency/include/pika/concurrency/detail/freelist.hpp:#include <boost/version.hpp>
libs/pika/concurrency/include/pika/concurrency/detail/tagged_ptr_pair.hpp:#include <boost/lockfree/detail/prefix.hpp>
libs/pika/config/include/pika/config.hpp:#include <boost/version.hpp>
libs/pika/coroutines/include/pika/coroutines/detail/context_generic_context.hpp:#include <boost/context/detail/fcontext.hpp>
libs/pika/coroutines/include/pika/coroutines/detail/context_generic_context.hpp:#include <boost/version.hpp>
libs/pika/coroutines/include/pika/coroutines/detail/context_impl.hpp:#include <boost/version.hpp>
libs/pika/datastructures/include/pika/datastructures/detail/small_vector.hpp:#include <boost/container/small_vector.hpp>
libs/pika/debugging/src/backtrace.cpp:#include <boost/config.hpp>
libs/pika/iterator_support/include/pika/iterator_support/boost_iterator_categories.hpp:#include <boost/iterator/iterator_categories.hpp>
libs/pika/lcos/include/pika/lcos/and_gate.hpp:#include <boost/dynamic_bitset.hpp>
libs/pika/mpi_base/src/mpi_environment.cpp:#include <boost/tokenizer.hpp>
libs/pika/prefix/src/find_prefix.cpp:#include <boost/tokenizer.hpp>
libs/pika/program_options/include/pika/program_options/detail/utf8_codecvt_facet.hpp:// #include <boost/detail/utf8_codecvt_facet.ipp>
libs/pika/program_options/src/options_description.cpp:#include <boost/tokenizer.hpp>
libs/pika/program_options/src/split.cpp:#include <boost/tokenizer.hpp>
libs/pika/runtime_configuration/src/init_ini_data.cpp:#include <boost/tokenizer.hpp>
libs/pika/runtime_configuration/src/runtime_configuration.cpp:#include <boost/tokenizer.hpp>
libs/pika/runtime/src/serialize_exception.cpp:#include <boost/exception/diagnostic_information.hpp>
libs/pika/runtime/src/serialize_exception.cpp:#include <boost/exception/exception.hpp>
libs/pika/schedulers/include/pika/schedulers/lockfree_queue_backends.hpp:#include <boost/lockfree/queue.hpp>
libs/pika/serialization/include/pika/serialization/array.hpp:#include <boost/array.hpp>
libs/pika/serialization/include/pika/serialization/boost_variant.hpp:#include <boost/variant.hpp>
libs/pika/serialization/include/pika/serialization/dynamic_bitset.hpp:#include <boost/dynamic_bitset.hpp>
libs/pika/serialization/include/pika/serialization/intrusive_ptr.hpp:#include <boost/intrusive_ptr.hpp>
libs/pika/serialization/include/pika/serialization/multi_array.hpp:#include <boost/multi_array.hpp>
libs/pika/serialization/include/pika/serialization/serialize_buffer.hpp:#include <boost/shared_array.hpp>
libs/pika/serialization/include/pika/serialization/shared_ptr.hpp:#include <boost/shared_ptr.hpp>
libs/pika/serialization/src/exception_ptr.cpp:#include <boost/exception/diagnostic_information.hpp>
libs/pika/serialization/src/exception_ptr.cpp:#include <boost/exception/exception.hpp>
libs/pika/serialization/src/serializable_any.cpp:#include <boost/functional/hash.hpp>
libs/pika/synchronization/include/pika/synchronization/detail/condition_variable.hpp:#include <boost/intrusive/slist.hpp>
libs/pika/version/src/version.cpp:#include <boost/config.hpp>
libs/pika/version/src/version.cpp:#include <boost/version.hpp>
Tests/examples, include counts per boost header:
> rg --no-heading --no-line-number --no-filename --no-messages '#include\W+boost' {libs/pika/*/tests,tests,examples}/**/*.{cpp,hpp,cu} | sort | uniq -c | sort -r
5 #include <boost/range/irange.hpp>
4 #include <boost/lockfree/queue.hpp>
3 #include <boost/intrusive_ptr.hpp>
2 #include <boost/tokenizer.hpp>
2 #include <boost/token_functions.hpp>
2 #include <boost/config.hpp>
1 #include <boost/variant.hpp>
1 #include <boost/spirit/include/support_istream_iterator.hpp>
1 #include <boost/spirit/include/qi_string.hpp>
1 #include <boost/spirit/include/qi_parse.hpp>
1 #include <boost/spirit/include/qi_operator.hpp>
1 #include <boost/spirit/include/qi_numeric.hpp>
1 #include <boost/spirit/include/qi_char.hpp>
1 #include <boost/spirit/include/qi_auxiliary.hpp>
1 #include <boost/spirit/include/qi_action.hpp>
1 #include <boost/spirit/include/phoenix.hpp>
1 #include <boost/shared_ptr.hpp>
1 #include <boost/shared_array.hpp>
1 #include <boost/preprocessor/seq/for_each.hpp>
1 #include <boost/lockfree/stack.hpp>
1 #include <boost/integer/common_factor.hpp>
1 #include <boost/function.hpp>
1 #include <boost/dynamic_bitset.hpp>
Tests/examples, includes per pika file:
> rg --no-heading --no-line-number --no-messages '#include\W+boost' {libs/pika/*/{tests,examples},tests,examples}/**/*.{cpp,hpp,cu} | sort | uniq
examples/1d_stencil/1d_stencil_4.cpp:#include <boost/range/irange.hpp>
examples/1d_stencil/1d_stencil_4_parallel.cpp:#include <boost/shared_array.hpp>
examples/balancing/os_thread_num.cpp:#include <boost/lockfree/queue.hpp>
examples/balancing/thread_phase.cpp:#include <boost/lockfree/queue.hpp>
examples/jacobi_smp/jacobi_nonuniform.cpp:#include <boost/spirit/include/phoenix.hpp>
examples/jacobi_smp/jacobi_nonuniform.cpp:#include <boost/spirit/include/qi_action.hpp>
examples/jacobi_smp/jacobi_nonuniform.cpp:#include <boost/spirit/include/qi_auxiliary.hpp>
examples/jacobi_smp/jacobi_nonuniform.cpp:#include <boost/spirit/include/qi_char.hpp>
examples/jacobi_smp/jacobi_nonuniform.cpp:#include <boost/spirit/include/qi_numeric.hpp>
examples/jacobi_smp/jacobi_nonuniform.cpp:#include <boost/spirit/include/qi_operator.hpp>
examples/jacobi_smp/jacobi_nonuniform.cpp:#include <boost/spirit/include/qi_parse.hpp>
examples/jacobi_smp/jacobi_nonuniform.cpp:#include <boost/spirit/include/qi_string.hpp>
examples/jacobi_smp/jacobi_nonuniform.cpp:#include <boost/spirit/include/support_istream_iterator.hpp>
examples/transpose/transpose_await.cpp:#include <boost/range/irange.hpp>
examples/transpose/transpose_smp_block.cpp:#include <boost/range/irange.hpp>
examples/transpose/transpose_smp.cpp:#include <boost/range/irange.hpp>
libs/pika/async_cuda/tests/unit/trivial_demo.cu:#include <boost/preprocessor/seq/for_each.hpp>
libs/pika/concurrency/tests/unit/lockfree_fifo.cpp:#include <boost/lockfree/queue.hpp>
libs/pika/iterator_support/tests/performance/stencil3_iterators.cpp:#include <boost/range/irange.hpp>
libs/pika/program_options/examples/option_groups.cpp:#include <boost/token_functions.hpp>
libs/pika/program_options/examples/option_groups.cpp:#include <boost/tokenizer.hpp>
libs/pika/program_options/examples/response_file.cpp:#include <boost/token_functions.hpp>
libs/pika/program_options/examples/response_file.cpp:#include <boost/tokenizer.hpp>
libs/pika/serialization/tests/unit/any_serialization.cpp:#include <boost/config.hpp>
libs/pika/serialization/tests/unit/polymorphic/smart_ptr_polymorphic.cpp:#include <boost/intrusive_ptr.hpp>
libs/pika/serialization/tests/unit/polymorphic/smart_ptr_polymorphic_nonintrusive.cpp:#include <boost/intrusive_ptr.hpp>
libs/pika/serialization/tests/unit/serialization_boost_variant.cpp:#include <boost/variant.hpp>
libs/pika/serialization/tests/unit/serialization_smart_ptr.cpp:#include <boost/intrusive_ptr.hpp>
libs/pika/serialization/tests/unit/serialization_smart_ptr.cpp:#include <boost/shared_ptr.hpp>
tests/performance/local/function_object_wrapper_overhead.cpp:#include <boost/function.hpp>
tests/performance/local/nonconcurrent_fifo_overhead.cpp:#include <boost/lockfree/queue.hpp>
tests/performance/local/nonconcurrent_lifo_overhead.cpp:#include <boost/lockfree/stack.hpp>
tests/performance/local/timed_task_spawn.cpp:#include <boost/integer/common_factor.hpp>
tests/performance/local/tls_overhead.cpp:#include <boost/config.hpp>
tests/regressions/threads/thread_rescheduling.cpp:#include <boost/dynamic_bitset.hpp>
The remaining major sources of boost includes seem to be serialization (#7), algorithms, coroutines (optional), and the lockfree queues. Let's see how the situation is after #7.
Updated list:
# main library, include counts per boost header
7 #include <boost/tokenizer.hpp>
6 #include <boost/shared_array.hpp>
5 #include <boost/version.hpp>
2 #include <boost/lockfree/queue.hpp>
2 #include <boost/config.hpp>
1 #include <boost/range/irange.hpp>
1 #include <boost/lockfree/stack.hpp>
1 #include <boost/lockfree/policies.hpp>
1 #include <boost/lockfree/detail/tagged_ptr.hpp>
1 #include <boost/lockfree/detail/prefix.hpp>
1 #include <boost/iterator/iterator_categories.hpp>
1 #include <boost/intrusive/slist.hpp>
1 #include <boost/dynamic_bitset.hpp>
1 // #include <boost/detail/utf8_codecvt_facet.ipp>
1 #include <boost/context/detail/fcontext.hpp>
1 #include <boost/container/small_vector.hpp>
# main library, includes per pika file
libs/pika/algorithms/include/pika/parallel/algorithms/copy.hpp:#include <boost/shared_array.hpp>
libs/pika/algorithms/include/pika/parallel/algorithms/detail/set_operation.hpp:#include <boost/shared_array.hpp>
libs/pika/algorithms/include/pika/parallel/algorithms/for_loop_reduction.hpp:#include <boost/shared_array.hpp>
libs/pika/algorithms/include/pika/parallel/algorithms/partition.hpp:#include <boost/shared_array.hpp>
libs/pika/algorithms/include/pika/parallel/algorithms/remove.hpp:#include <boost/shared_array.hpp>
libs/pika/algorithms/include/pika/parallel/algorithms/unique.hpp:#include <boost/shared_array.hpp>
libs/pika/algorithms/include/pika/parallel/spmd_block.hpp:#include <boost/range/irange.hpp>
libs/pika/async_cuda/include/pika/async_cuda/cuda_event.hpp:#include <boost/lockfree/stack.hpp>
libs/pika/command_line_handling/src/command_line_handling.cpp:#include <boost/tokenizer.hpp>
libs/pika/concurrency/include/pika/concurrency/deque.hpp:#include <boost/lockfree/detail/tagged_ptr.hpp>
libs/pika/concurrency/include/pika/concurrency/detail/freelist.hpp:#include <boost/lockfree/policies.hpp>
libs/pika/concurrency/include/pika/concurrency/detail/freelist.hpp:#include <boost/lockfree/queue.hpp>
libs/pika/concurrency/include/pika/concurrency/detail/freelist.hpp:#include <boost/version.hpp>
libs/pika/concurrency/include/pika/concurrency/detail/tagged_ptr_pair.hpp:#include <boost/lockfree/detail/prefix.hpp>
libs/pika/config/include/pika/config.hpp:#include <boost/version.hpp>
libs/pika/coroutines/include/pika/coroutines/detail/context_generic_context.hpp:#include <boost/context/detail/fcontext.hpp>
libs/pika/coroutines/include/pika/coroutines/detail/context_generic_context.hpp:#include <boost/version.hpp>
libs/pika/coroutines/include/pika/coroutines/detail/context_impl.hpp:#include <boost/version.hpp>
libs/pika/datastructures/include/pika/datastructures/detail/small_vector.hpp:#include <boost/container/small_vector.hpp>
libs/pika/debugging/src/backtrace.cpp:#include <boost/config.hpp>
libs/pika/iterator_support/include/pika/iterator_support/boost_iterator_categories.hpp:#include <boost/iterator/iterator_categories.hpp>
libs/pika/lcos/include/pika/lcos/and_gate.hpp:#include <boost/dynamic_bitset.hpp>
libs/pika/mpi_base/src/mpi_environment.cpp:#include <boost/tokenizer.hpp>
libs/pika/prefix/src/find_prefix.cpp:#include <boost/tokenizer.hpp>
libs/pika/program_options/include/pika/program_options/detail/utf8_codecvt_facet.hpp:// #include <boost/detail/utf8_codecvt_facet.ipp>
libs/pika/program_options/src/options_description.cpp:#include <boost/tokenizer.hpp>
libs/pika/program_options/src/split.cpp:#include <boost/tokenizer.hpp>
libs/pika/runtime_configuration/src/init_ini_data.cpp:#include <boost/tokenizer.hpp>
libs/pika/runtime_configuration/src/runtime_configuration.cpp:#include <boost/tokenizer.hpp>
libs/pika/schedulers/include/pika/schedulers/lockfree_queue_backends.hpp:#include <boost/lockfree/queue.hpp>
libs/pika/synchronization/include/pika/synchronization/detail/condition_variable.hpp:#include <boost/intrusive/slist.hpp>
libs/pika/version/src/version.cpp:#include <boost/config.hpp>
libs/pika/version/src/version.cpp:#include <boost/version.hpp>
# tests/examples library, include counts per boost header
4 #include <boost/range/irange.hpp>
4 #include <boost/lockfree/queue.hpp>
1 #include <boost/spirit/include/support_istream_iterator.hpp>
1 #include <boost/spirit/include/qi_string.hpp>
1 #include <boost/spirit/include/qi_parse.hpp>
1 #include <boost/spirit/include/qi_operator.hpp>
1 #include <boost/spirit/include/qi_numeric.hpp>
1 #include <boost/spirit/include/qi_char.hpp>
1 #include <boost/spirit/include/qi_auxiliary.hpp>
1 #include <boost/spirit/include/qi_action.hpp>
1 #include <boost/spirit/include/phoenix.hpp>
1 #include <boost/shared_array.hpp>
1 #include <boost/preprocessor/seq/for_each.hpp>
1 #include <boost/lockfree/stack.hpp>
1 #include <boost/integer/common_factor.hpp>
1 #include <boost/function.hpp>
1 #include <boost/dynamic_bitset.hpp>
1 #include <boost/config.hpp>
# tests/examples library, includes per pika file
examples/1d_stencil/1d_stencil_4.cpp:#include <boost/range/irange.hpp>
examples/1d_stencil/1d_stencil_4_parallel.cpp:#include <boost/shared_array.hpp>
examples/balancing/os_thread_num.cpp:#include <boost/lockfree/queue.hpp>
examples/balancing/thread_phase.cpp:#include <boost/lockfree/queue.hpp>
examples/jacobi_smp/jacobi_nonuniform.cpp:#include <boost/spirit/include/phoenix.hpp>
examples/jacobi_smp/jacobi_nonuniform.cpp:#include <boost/spirit/include/qi_action.hpp>
examples/jacobi_smp/jacobi_nonuniform.cpp:#include <boost/spirit/include/qi_auxiliary.hpp>
examples/jacobi_smp/jacobi_nonuniform.cpp:#include <boost/spirit/include/qi_char.hpp>
examples/jacobi_smp/jacobi_nonuniform.cpp:#include <boost/spirit/include/qi_numeric.hpp>
examples/jacobi_smp/jacobi_nonuniform.cpp:#include <boost/spirit/include/qi_operator.hpp>
examples/jacobi_smp/jacobi_nonuniform.cpp:#include <boost/spirit/include/qi_parse.hpp>
examples/jacobi_smp/jacobi_nonuniform.cpp:#include <boost/spirit/include/qi_string.hpp>
examples/jacobi_smp/jacobi_nonuniform.cpp:#include <boost/spirit/include/support_istream_iterator.hpp>
examples/transpose/transpose_smp_block.cpp:#include <boost/range/irange.hpp>
examples/transpose/transpose_smp.cpp:#include <boost/range/irange.hpp>
libs/pika/async_cuda/tests/unit/trivial_demo.cu:#include <boost/preprocessor/seq/for_each.hpp>
libs/pika/concurrency/tests/unit/lockfree_fifo.cpp:#include <boost/lockfree/queue.hpp>
libs/pika/iterator_support/tests/performance/stencil3_iterators.cpp:#include <boost/range/irange.hpp>
libs/pika/program_options/examples/option_groups.cpp:#include <boost/token_functions.hpp>
libs/pika/program_options/examples/option_groups.cpp:#include <boost/tokenizer.hpp>
libs/pika/program_options/examples/response_file.cpp:#include <boost/token_functions.hpp>
libs/pika/program_options/examples/response_file.cpp:#include <boost/tokenizer.hpp>
tests/performance/local/function_object_wrapper_overhead.cpp:#include <boost/function.hpp>
tests/performance/local/nonconcurrent_fifo_overhead.cpp:#include <boost/lockfree/queue.hpp>
tests/performance/local/nonconcurrent_lifo_overhead.cpp:#include <boost/lockfree/stack.hpp>
tests/performance/local/timed_task_spawn.cpp:#include <boost/integer/common_factor.hpp>
tests/performance/local/tls_overhead.cpp:#include <boost/config.hpp>
tests/regressions/threads/thread_rescheduling.cpp:#include <boost/dynamic_bitset.hpp>
Status after #202.
# main library, include counts per boost header
7 #include <boost/tokenizer.hpp>
4 #include <boost/version.hpp>
2 #include <boost/lockfree/queue.hpp>
1 #include <boost/range/irange.hpp>
1 #include <boost/lockfree/stack.hpp>
1 #include <boost/lockfree/policies.hpp>
1 #include <boost/lockfree/detail/tagged_ptr.hpp>
1 #include <boost/lockfree/detail/prefix.hpp>
1 #include <boost/iterator/iterator_categories.hpp>
1 #include <boost/intrusive/slist.hpp>
1 #include <boost/dynamic_bitset.hpp>
1 // #include <boost/detail/utf8_codecvt_facet.ipp>
1 #include <boost/crc.hpp>
1 #include <boost/context/detail/fcontext.hpp>
1 #include <boost/container/small_vector.hpp>
1 #include <boost/config.hpp>
# main library, includes per pika file
libs/pika/algorithms/include/pika/parallel/spmd_block.hpp:#include <boost/range/irange.hpp>
libs/pika/async_cuda/include/pika/async_cuda/cuda_event.hpp:#include <boost/lockfree/stack.hpp>
libs/pika/command_line_handling/src/command_line_handling.cpp:#include <boost/tokenizer.hpp>
libs/pika/concurrency/include/pika/concurrency/deque.hpp:#include <boost/lockfree/detail/tagged_ptr.hpp>
libs/pika/concurrency/include/pika/concurrency/detail/freelist.hpp:#include <boost/lockfree/policies.hpp>
libs/pika/concurrency/include/pika/concurrency/detail/freelist.hpp:#include <boost/lockfree/queue.hpp>
libs/pika/concurrency/include/pika/concurrency/detail/freelist.hpp:#include <boost/version.hpp>
libs/pika/concurrency/include/pika/concurrency/detail/tagged_ptr_pair.hpp:#include <boost/lockfree/detail/prefix.hpp>
libs/pika/config/include/pika/config.hpp:#include <boost/version.hpp>
libs/pika/coroutines/include/pika/coroutines/detail/context_generic_context.hpp:#include <boost/context/detail/fcontext.hpp>
libs/pika/coroutines/include/pika/coroutines/detail/context_generic_context.hpp:#include <boost/version.hpp>
libs/pika/coroutines/include/pika/coroutines/detail/context_impl.hpp:#include <boost/version.hpp>
libs/pika/datastructures/include/pika/datastructures/detail/small_vector.hpp:#include <boost/container/small_vector.hpp>
libs/pika/debugging/src/backtrace.cpp:#include <boost/config.hpp>
libs/pika/debugging/src/print.cpp:#include <boost/crc.hpp>
libs/pika/iterator_support/include/pika/iterator_support/boost_iterator_categories.hpp:#include <boost/iterator/iterator_categories.hpp>
libs/pika/lcos/include/pika/lcos/and_gate.hpp:#include <boost/dynamic_bitset.hpp>
libs/pika/mpi_base/src/mpi_environment.cpp:#include <boost/tokenizer.hpp>
libs/pika/prefix/src/find_prefix.cpp:#include <boost/tokenizer.hpp>
libs/pika/program_options/include/pika/program_options/detail/utf8_codecvt_facet.hpp:// #include <boost/detail/utf8_codecvt_facet.ipp>
libs/pika/program_options/src/options_description.cpp:#include <boost/tokenizer.hpp>
libs/pika/program_options/src/split.cpp:#include <boost/tokenizer.hpp>
libs/pika/runtime_configuration/src/init_ini_data.cpp:#include <boost/tokenizer.hpp>
libs/pika/runtime_configuration/src/runtime_configuration.cpp:#include <boost/tokenizer.hpp>
libs/pika/schedulers/include/pika/schedulers/lockfree_queue_backends.hpp:#include <boost/lockfree/queue.hpp>
libs/pika/synchronization/include/pika/synchronization/detail/condition_variable.hpp:#include <boost/intrusive/slist.hpp>
# tests/examples library, include counts per boost header
4 #include <boost/range/irange.hpp>
4 #include <boost/lockfree/queue.hpp>
1 #include <boost/spirit/include/support_istream_iterator.hpp>
1 #include <boost/spirit/include/qi_string.hpp>
1 #include <boost/spirit/include/qi_parse.hpp>
1 #include <boost/spirit/include/qi_operator.hpp>
1 #include <boost/spirit/include/qi_numeric.hpp>
1 #include <boost/spirit/include/qi_char.hpp>
1 #include <boost/spirit/include/qi_auxiliary.hpp>
1 #include <boost/spirit/include/qi_action.hpp>
1 #include <boost/spirit/include/phoenix.hpp>
1 #include <boost/lockfree/stack.hpp>
1 #include <boost/integer/common_factor.hpp>
1 #include <boost/function.hpp>
1 #include <boost/dynamic_bitset.hpp>
1 #include <boost/config.hpp>
# tests/examples library, includes per pika file
examples/1d_stencil/1d_stencil_4.cpp:#include <boost/range/irange.hpp>
examples/balancing/os_thread_num.cpp:#include <boost/lockfree/queue.hpp>
examples/balancing/thread_phase.cpp:#include <boost/lockfree/queue.hpp>
examples/jacobi_smp/jacobi_nonuniform.cpp:#include <boost/spirit/include/phoenix.hpp>
examples/jacobi_smp/jacobi_nonuniform.cpp:#include <boost/spirit/include/qi_action.hpp>
examples/jacobi_smp/jacobi_nonuniform.cpp:#include <boost/spirit/include/qi_auxiliary.hpp>
examples/jacobi_smp/jacobi_nonuniform.cpp:#include <boost/spirit/include/qi_char.hpp>
examples/jacobi_smp/jacobi_nonuniform.cpp:#include <boost/spirit/include/qi_numeric.hpp>
examples/jacobi_smp/jacobi_nonuniform.cpp:#include <boost/spirit/include/qi_operator.hpp>
examples/jacobi_smp/jacobi_nonuniform.cpp:#include <boost/spirit/include/qi_parse.hpp>
examples/jacobi_smp/jacobi_nonuniform.cpp:#include <boost/spirit/include/qi_string.hpp>
examples/jacobi_smp/jacobi_nonuniform.cpp:#include <boost/spirit/include/support_istream_iterator.hpp>
examples/transpose/transpose_smp_block.cpp:#include <boost/range/irange.hpp>
examples/transpose/transpose_smp.cpp:#include <boost/range/irange.hpp>
libs/pika/concurrency/tests/unit/lockfree_fifo.cpp:#include <boost/lockfree/queue.hpp>
libs/pika/iterator_support/tests/performance/stencil3_iterators.cpp:#include <boost/range/irange.hpp>
libs/pika/program_options/examples/option_groups.cpp:#include <boost/token_functions.hpp>
libs/pika/program_options/examples/option_groups.cpp:#include <boost/tokenizer.hpp>
libs/pika/program_options/examples/response_file.cpp:#include <boost/token_functions.hpp>
libs/pika/program_options/examples/response_file.cpp:#include <boost/tokenizer.hpp>
tests/performance/local/function_object_wrapper_overhead.cpp:#include <boost/function.hpp>
tests/performance/local/nonconcurrent_fifo_overhead.cpp:#include <boost/lockfree/queue.hpp>
tests/performance/local/nonconcurrent_lifo_overhead.cpp:#include <boost/lockfree/stack.hpp>
tests/performance/local/timed_task_spawn.cpp:#include <boost/integer/common_factor.hpp>
tests/performance/local/tls_overhead.cpp:#include <boost/config.hpp>
tests/regressions/threads/thread_rescheduling.cpp:#include <boost/dynamic_bitset.hpp>
The script that I run is by the way:
#!/usr/bin/env bash
shopt -s globstar
echo "# main library, include counts per boost header"
rg --no-heading --no-line-number --no-filename --no-messages '#include\W+boost' libs/pika/*/{include,src}/**/*.{cpp,hpp,cu} | sort | uniq -c | sort -r
echo ""
echo "# main library, includes per pika file"
rg --no-heading --no-line-number --no-messages '#include\W+boost' libs/pika/*/{include,src}/**/*.{cpp,hpp,cu} | sort | uniq
echo ""
echo "# tests/examples library, include counts per boost header"
rg --no-heading --no-line-number --no-filename --no-messages '#include\W+boost' {libs/pika/*/tests,tests,examples}/**/*.{cpp,hpp,cu} | sort | uniq -c | sort -r
echo ""
echo "# tests/examples library, includes per pika file"
rg --no-heading --no-line-number --no-messages '#include\W+boost' {libs/pika/*/{tests,examples},tests,examples}/**/*.{cpp,hpp,cu} | sort | uniq
I will try to replace the tokenizer
includes with something small and simple in 0.6.0.
Minor improvement after #255:
# main library, include counts per boost header
7 #include <boost/tokenizer.hpp>
4 #include <boost/version.hpp>
2 #include <boost/lockfree/queue.hpp>
1 #include <boost/lockfree/stack.hpp>
1 #include <boost/lockfree/policies.hpp>
1 #include <boost/lockfree/detail/tagged_ptr.hpp>
1 #include <boost/iterator/iterator_categories.hpp>
1 #include <boost/intrusive/slist.hpp>
1 #include <boost/dynamic_bitset.hpp>
1 // #include <boost/detail/utf8_codecvt_facet.ipp>
1 #include <boost/crc.hpp>
1 #include <boost/context/detail/fcontext.hpp>
1 #include <boost/container/small_vector.hpp>
1 #include <boost/config.hpp>
# main library, includes per pika file
libs/pika/async_cuda/include/pika/async_cuda/cuda_event.hpp:#include <boost/lockfree/stack.hpp>
libs/pika/command_line_handling/src/command_line_handling.cpp:#include <boost/tokenizer.hpp>
libs/pika/concurrency/include/pika/concurrency/deque.hpp:#include <boost/lockfree/detail/tagged_ptr.hpp>
libs/pika/concurrency/include/pika/concurrency/detail/freelist.hpp:#include <boost/lockfree/policies.hpp>
libs/pika/concurrency/include/pika/concurrency/detail/freelist.hpp:#include <boost/lockfree/queue.hpp>
libs/pika/concurrency/include/pika/concurrency/detail/freelist.hpp:#include <boost/version.hpp>
libs/pika/config/include/pika/config.hpp:#include <boost/version.hpp>
libs/pika/coroutines/include/pika/coroutines/detail/context_generic_context.hpp:#include <boost/context/detail/fcontext.hpp>
libs/pika/coroutines/include/pika/coroutines/detail/context_generic_context.hpp:#include <boost/version.hpp>
libs/pika/coroutines/include/pika/coroutines/detail/context_impl.hpp:#include <boost/version.hpp>
libs/pika/datastructures/include/pika/datastructures/detail/small_vector.hpp:#include <boost/container/small_vector.hpp>
libs/pika/debugging/src/backtrace.cpp:#include <boost/config.hpp>
libs/pika/debugging/src/print.cpp:#include <boost/crc.hpp>
libs/pika/iterator_support/include/pika/iterator_support/boost_iterator_categories.hpp:#include <boost/iterator/iterator_categories.hpp>
libs/pika/lcos/include/pika/lcos/and_gate.hpp:#include <boost/dynamic_bitset.hpp>
libs/pika/mpi_base/src/mpi_environment.cpp:#include <boost/tokenizer.hpp>
libs/pika/prefix/src/find_prefix.cpp:#include <boost/tokenizer.hpp>
libs/pika/program_options/include/pika/program_options/detail/utf8_codecvt_facet.hpp:// #include <boost/detail/utf8_codecvt_facet.ipp>
libs/pika/program_options/src/options_description.cpp:#include <boost/tokenizer.hpp>
libs/pika/program_options/src/split.cpp:#include <boost/tokenizer.hpp>
libs/pika/runtime_configuration/src/init_ini_data.cpp:#include <boost/tokenizer.hpp>
libs/pika/runtime_configuration/src/runtime_configuration.cpp:#include <boost/tokenizer.hpp>
libs/pika/schedulers/include/pika/schedulers/lockfree_queue_backends.hpp:#include <boost/lockfree/queue.hpp>
libs/pika/synchronization/include/pika/synchronization/detail/condition_variable.hpp:#include <boost/intrusive/slist.hpp>
# tests/examples library, include counts per boost header
4 #include <boost/lockfree/queue.hpp>
1 #include <boost/spirit/include/support_istream_iterator.hpp>
1 #include <boost/spirit/include/qi_string.hpp>
1 #include <boost/spirit/include/qi_parse.hpp>
1 #include <boost/spirit/include/qi_operator.hpp>
1 #include <boost/spirit/include/qi_numeric.hpp>
1 #include <boost/spirit/include/qi_char.hpp>
1 #include <boost/spirit/include/qi_auxiliary.hpp>
1 #include <boost/spirit/include/qi_action.hpp>
1 #include <boost/spirit/include/phoenix.hpp>
1 #include <boost/lockfree/stack.hpp>
1 #include <boost/integer/common_factor.hpp>
1 #include <boost/function.hpp>
1 #include <boost/dynamic_bitset.hpp>
1 #include <boost/config.hpp>
# tests/examples library, includes per pika file
examples/balancing/os_thread_num.cpp:#include <boost/lockfree/queue.hpp>
examples/balancing/thread_phase.cpp:#include <boost/lockfree/queue.hpp>
examples/jacobi_smp/jacobi_nonuniform.cpp:#include <boost/spirit/include/phoenix.hpp>
examples/jacobi_smp/jacobi_nonuniform.cpp:#include <boost/spirit/include/qi_action.hpp>
examples/jacobi_smp/jacobi_nonuniform.cpp:#include <boost/spirit/include/qi_auxiliary.hpp>
examples/jacobi_smp/jacobi_nonuniform.cpp:#include <boost/spirit/include/qi_char.hpp>
examples/jacobi_smp/jacobi_nonuniform.cpp:#include <boost/spirit/include/qi_numeric.hpp>
examples/jacobi_smp/jacobi_nonuniform.cpp:#include <boost/spirit/include/qi_operator.hpp>
examples/jacobi_smp/jacobi_nonuniform.cpp:#include <boost/spirit/include/qi_parse.hpp>
examples/jacobi_smp/jacobi_nonuniform.cpp:#include <boost/spirit/include/qi_string.hpp>
examples/jacobi_smp/jacobi_nonuniform.cpp:#include <boost/spirit/include/support_istream_iterator.hpp>
libs/pika/concurrency/tests/unit/lockfree_fifo.cpp:#include <boost/lockfree/queue.hpp>
libs/pika/program_options/examples/option_groups.cpp:#include <boost/token_functions.hpp>
libs/pika/program_options/examples/option_groups.cpp:#include <boost/tokenizer.hpp>
libs/pika/program_options/examples/response_file.cpp:#include <boost/token_functions.hpp>
libs/pika/program_options/examples/response_file.cpp:#include <boost/tokenizer.hpp>
tests/performance/local/function_object_wrapper_overhead.cpp:#include <boost/function.hpp>
tests/performance/local/nonconcurrent_fifo_overhead.cpp:#include <boost/lockfree/queue.hpp>
tests/performance/local/nonconcurrent_lifo_overhead.cpp:#include <boost/lockfree/stack.hpp>
tests/performance/local/timed_task_spawn.cpp:#include <boost/integer/common_factor.hpp>
tests/performance/local/tls_overhead.cpp:#include <boost/config.hpp>
tests/regressions/threads/thread_rescheduling.cpp:#include <boost/dynamic_bitset.hpp>
I will close this as there's little value in continuing the cleanup. Additional cleanup is welcome, but installing Boost correctly is less of an issue than it was in the past and there are diminishing returns to continuing this work.
It would now be feasible to completely remove all dependencies on Boost. Some things would naturally remove Boost dependencies:
6
7
11
Other headers can likely be brought into
pika
.