[[PageOutline]] See [http://www.pdimov.com/tmp/report-develop-c3bb6eb/module-levels.html Modules level] for the last state of dependencies between libraries. This report has been generated with [https://github.com/boostorg/boostdep boostdep]. Next follows a list of dependencies to be removed in order to break the cycles. = Cycle (MPL, TypeTraits, Utility, TypeOf) = Level 3 mpl ⇢ config0 core2 predef0 preprocessor0 static_assert1 type_traits3 utility3 type_traits ⇢ config0 core2 mpl3 preprocessor0 static_assert1 typeof3 typeof ⇢ config0 core2 mpl3 preprocessor0 type_traits3 utility ⇢ config0 core2 mpl3 preprocessor0 static_assert1 throw_exception2 type_traits3 == MPL -> Utility -> MPL == from '''Suggestion:''' Move value_init.hpp to Core? == MPL -> TypeTraits -> MPL == '''Suggestion:''' Split MPL into MPL and MPL.Core, resulting in MPL -> TypeTraits -> MPL.Core == TypeTraits -> Typeof == from '''Suggestion:''' Create the submodule TypeTraits.CommonType TypeTraits.CommonType -> TypeTraits Typeof = Cycle (Context, Coroutine ) = Level 10 context ⇢ assert1 config0 coroutine10 smart_ptr4 coroutine ⇢ assert1 config0 context10 core2 exception5 move3 range9 system3 throw_exception2 type_traits3 utility3 from '''Suggestion:''' Context should not depend on Coroutine. = Cycle (LexicalCast, Math ) = lexical_cast ⇢ array3 assert1 config0 container9 core2 integer2 math10 mpl3 numeric~conversion6 range9 static_assert1 throw_exception2 type_traits3 math ⇢ array3 assert1 atomic4 concept_check4 config0 core2 detail4 format6 fusion8 lexical_cast10 mpl3 predef0 range9 smart_ptr4 static_assert1 throw_exception2 tuple4 type_traits3 from from '''Suggestion:''' Move these functions to a specif Math.SubModule = Cycle (DateTime, Serialization, Interprocess, Thread, Chrono, Pool, Spirit ) = Level 12 date_time ⇢ algorithm11 assert1 config0 io1 lexical_cast10 mpl3 range9 serialization12 smart_ptr4 static_assert1 throw_exception2 tokenizer7 type_traits3 utility3 gil ⇢ algorithm11 array3 bind3 concept_check4 config0 core2 filesystem10 function4 integer2 iterator6 lambda7 lexical_cast10 mpl3 numeric~conversion6 preprocessor0 smart_ptr4 static_assert1 type_traits3 parameter ⇢ config0 core2 detail4 mpl3 optional5 preprocessor0 python11 type_traits3 utility3 pool ⇢ assert1 config0 integer2 thread12 throw_exception2 type_traits3 serialization ⇢ array3 assert1 config0 core2 detail4 integer2 io1 iterator6 mpl3 optional5 predef0 preprocessor0 smart_ptr4 spirit12 static_assert1 type_traits3 utility3 variant11 spirit ⇢ (unknown)0 algorithm11 array3 assert1 concept_check4 config0 core2 filesystem10 foreach10 function4 function_types5 fusion8 integer2 io1 iostreams11 iterator6 lexical_cast10 math10 mpl3 optional5 phoenix11 pool12 predef0 preprocessor0 proto10 range9 regex8 serialization12 smart_ptr4 static_assert1 thread12 throw_exception2 type_traits3 typeof3 unordered10 utility3 variant11 thread ⇢ (unknown)0 assert1 atomic4 bind3 chrono6 concept_check4 config0 container9 core2 date_time12 exception5 function4 functional7 intrusive8 io1 move3 mpl3 optional5 predef0 preprocessor0 smart_ptr4 static_assert1 system3 throw_exception2 tuple4 type_traits3 utility3 winapi1 == DateTime->Serialization == '''Suggestion:''' Create the submodule DateTime.Serialization DateTime.Serialization -> DateTime Serialization == Serialization->Spirit == '''Suggestion:''' Split the Serialization Module on two modules Serialization and Archive == Spirit->Serialization == from '''Suggestion:''' Remove the unused file. = Cycle (Bimap, PropertyMap, DisjointSets, Graph, GraphParallel, MPI ) = Level 15 bimap ⇢ concept_check4 config0 core2 functional7 iterator6 lambda7 mpl3 multi_index13 preprocessor0 property_map15 serialization12 static_assert1 throw_exception2 type_traits3 utility3 chrono~stopwatches ⇢ accumulators14 assert1 chrono6 config0 format6 system3 disjoint_sets ⇢ graph15 graph ⇢ algorithm11 any9 array3 assert1 bimap15 bind3 concept_check4 config0 conversion5 core2 detail4 disjoint_sets15 foreach10 function4 functional7 graph_parallel15 integer2 iterator6 lexical_cast10 math10 move3 mpl3 multi_index13 optional5 parameter12 preprocessor0 property_map15 property_tree14 random10 range9 serialization12 smart_ptr4 spirit12 static_assert1 test11 throw_exception2 tti6 tuple4 type_traits3 typeof3 unordered10 utility3 xpressive11 graph_parallel ⇢ assert1 concept_check4 config0 core2 detail4 disjoint_sets15 dynamic_bitset4 filesystem10 foreach10 function4 functional7 graph15 iterator6 lexical_cast10 mpi15 mpl3 optional5 property_map15 random10 serialization12 smart_ptr4 static_assert1 tuple4 type_traits3 variant11 log ⇢ array3 assert1 bind3 config0 core2 date_time12 exception5 filesystem10 function_types5 fusion8 intrusive8 iterator6 lexical_cast10 move3 mpl3 optional5 parameter12 phoenix11 preprocessor0 property_tree14 proto10 range9 regex8 smart_ptr4 spirit12 static_assert1 system3 thread12 throw_exception2 type_traits3 utility3 winapi1 xpressive11 mpi ⇢ assert1 config0 core2 function4 graph15 integer2 iterator6 mpl3 optional5 property_map15 python11 serialization12 smart_ptr4 static_assert1 throw_exception2 type_traits3 property_map ⇢ any9 assert1 bind3 concept_check4 config0 core2 function4 iterator6 lexical_cast10 mpi15 mpl3 multi_index13 optional5 serialization12 smart_ptr4 static_assert1 throw_exception2 type_traits3 utility3 == Bimap->PropertyMap == '''Suggestion:''' Create the submodule Bimap.PropertyMap Bimap.PropertyMap -> Bimap PropertyMap == PropertyMap->MPI == '''Suggestion:''' Create the submodule PropertyMap.Parallel PropertyMap.Parallel -> PropertyMap MPI == Grapth->DisjoinSet->Grapth == '''Suggestion:''' Move DisjoinSet to Graph. == Grapth->GraphParallel == from from from from from from from from from from from from from '''Suggestion:''' Remove all the graph distributed specializations declarations in Graph as e.g. {{{ #ifdef BOOST_GRAPH_USE_MPI template void bfs_helper (DistributedGraph& g, typename graph_traits::vertex_descriptor s, ColorMap color, BFSVisitor vis, const bgl_named_params& params, boost::mpl::true_); #endif // BOOST_GRAPH_USE_MPI }}} The definition of these specializations are already in GraphParallel.