Subject: Re: [boost] [modularization] Modularizing Boost (modularization)
From: Vicente J. Botet Escriba (vicente.botet_at_[hidden])
Date: 2013-10-18 13:45:01


Le 18/10/13 09:58, Stephen Kelly a écrit :
> On 10/18/2013 07:39 AM, Vicente J. Botet Escriba wrote:
>> Le 18/10/13 00:24, Stephen Kelly a écrit :
>>> Hi there,
>>>
>>> my plan for modularizing and modernizing Boost was roughly this:
>>>
>>>
>>>
>>> There are now 18 edges and 11 nodes.
>>>
>>> Looking at the entire graph again, we get this:
>>>
>>> http://steveire.com/boost/graph_final.dot
>>> http://steveire.com/boost/graph_final_small.png
>>>
>>> Obviously, this is not perfect, but it is a beginning, and it is mostly
>>> now a directed graph.
>>>
>>>
>> Thanks for working on this.
> Thanks for the appreciation.
>
>> The dependency between thread and interprocess can be broken if we
>> extract unique_ptr from interprocess and move it to smart_ptr.
> unique_ptr.hpp includes several other interprocess lib headers. Those
> would have to be either moved or resolved too.
Right. The file must follow a cleanup before.
>
>> The dependency of thread to chrono/date_time could be broken after the
>> work started by Andrey in the sync directory. But I suspect that this
>> will not be ready for the next release.
>>
>> The new parts will be
>> * sync: contains basic synchronization tools, as mutexes,
>> condition_variables, locks,
>> * system_chrono : contains something similar to Boost::Chrono but
>> restricted to nanoseconds (less meta-programming needed)
> Would these be two new git repos/packages?
Currently we have a folder sync. We have not yet extracted from it
system_chrono or system_time.
>
>> The new dependencies will be
>>
>> * chrono -> system_chrono
>> * date_time -> system_chrono
>> * sync -> system_chrono
>> * thread -> system_chrono
> And what will system_chrono depend on?
The two files of this mini repository will be

boost/sync/detail/time_traits.hpp
boost/sync/detail/time_units.hpp

Them depend on config, mpl or type_traits and enable_if.
>
>> and later on
>> * thread -> sync ?
>>
>> Note system_chrono doesn't exists yet (it is included in sync) and
>> could also be moved to detail.
>> Do someone know which parts of Boost.Thread are used by Boost.Spirit
>> and Boost.Pool? Knowing this would help us to see if these libraries
>> could depend on the new sync repository.
> Why don't you check things like this yourself, instead of asking on a
> mailing list and introducing a human round trip? This isn't the first
> time you've asked things like this.

If you don't want to replay to my questions just ignore them. No need to
add more not useful text to this thread.
I guess that the authors would have a good understanding of their
libraries and could answer this question easily. And on the other side,
the answer is not urgent as the sync folder is not public yet.
>
> I'm really curious why you try to introduce a human round trip rather
> than run a simple 'git grep' or whatever equivalent tools that you
> presumably have at your disposal.
I will add it to the bottom of my TODO list.
>> BTW, I don't see Boost.Atomic in the picture.
> What picture? Boost.Atomic appears in the graph_all.dot.

I was loocking to the final picturehttp://steveire.com/boost/graph_after_remaining.png

Looking at graph_all.dot I see

   atomic -> mpl
   atomic -> detail
   atomic -> type_traits
   atomic -> smart_ptr
   atomic -> integer
   atomic -> config

I don't see the dependency to Boost.thread, but Boost.Atomic depends on
Boost.Thread in some specific platforms.

Best,
Vicente