|
Boost : |
From: David Abrahams (dave_at_[hidden])
Date: 2007-12-01 09:06:21
on Sat Dec 01 2007, "Robert Ramey" <ramey-AT-rrsd.com> wrote:
> Joel de Guzman wrote:
>
>>> * Un-reviewed implementation details of libraries have been placed in
>>> boost/detail if they need to be used by other libraries and a
>>> subdirectory of boost/<libraryname>/ otherwise. Their documented
>>> public components are placed in boost/detail and namespace
>>> boost::detail.
>>>
>
> I think the current situation is a little problematic.
>
> If there in boos/detail, presumable its because they might be
> useful accross more than one library.
Not usually. Usually it's because they *have* been useful across more
than one library. In general, nobody sticks stuff in boost/detail
just because they think it might have a use elsewhere. Components
migrate there.
> However,
>
> There is no place for documentation of these things.
Sure there is. Comments work.
> So there is no guarenteed interface.
>
> And of course no separate tests.
Not necessarily. I always write tests for my library's implementation
detail components.
> No guarentee that the interface won't change - after all
> its an implementation detail. So it can change without
> warning an break other libraries.
>
> So, one has a lot of reservations about depending upon these
> modules. On the other hand, they have proved very useful so for the
> sake of expediency they're going to get used - leading to surprise
> breakages.
That's more of a theoretical problem than a real one. It has never
been an issue in the past. Most people realize that once a component
moves into boost/detail, other people may be depending on it, so they
make an effort to coordinate if there are any breaking changes (which,
to my knowledge, there have never been in a boost/detail component).
> So I think those things that have been going to boost/detail should
> just go into boost / utility. Approval for this would be part of
> the review process for the library which needed them.
Implementation details get invented and shared as part of a library's
evolution, so that would never work
> I realise some might find this bothersome, but its much better the
> the current situation.
I don't see why. A little common sense is all it takes to make this
work out, and it has worked very well so far.
-- Dave Abrahams Boost Consulting http://www.boost-consulting.com
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk