|
Boost : |
From: Jeff Garland (jeff_at_[hidden])
Date: 2004-02-08 16:46:35
On Sun, 08 Feb 2004 15:12:46 -0500, David Abrahams wrote
> ACE is also a dependency nightmare. If you want any of those
> components, you have to link the whole enormous ACE library into your
> application.
Yes I agree, which is in contrast to Boost. I think because Boost started as
a collection of reasonably independent libraries from independent authors
boost libraries are both intentionally and naturally better decoupled than ACE
which was initially developed by a single author.
BTW, there was a project to split ACE up into more consumable parts, but I
don't think it really ever finished. However, it is an interesting study
given the depth of experience embodied in the ACE project. There are details
here:
http://www.cs.wustl.edu/~doc/RandD/ACE/Docs/subsets.html
If you look carefully at the table in the URL you will note that the "For TAO"
(CORBA Orb implementation) subset is ~80%. What that means is that you can
build a full CORBA Orb, which is obviously a pretty intense set of networking
code, and ditch 1/5 of the library right off the top. Then you'll note the
Utils is another ~18% of the library. In Boost the stuff in Utils like
program options parsing, time stuff, etc would clearly be split up into
several smaller libraries which may or may not be used by a particular app.
So there is alot that can go.
Taken another way, the core parts of ACE needed to write serious networked
apps are:
OS (this is basically boost::config for network and other stuff)
Utils (command line parsing, date-time, etc)
Logging (no boost equivalent yet)
Threads (boost::threads)
Demux (no boost equivalent yet)
Connection (no boost equivalent yet)
Sockets (no boost equivalent yet)
If you add it up that's only about 50% of the library. And that's an over
estimate because there is some precentage of the Utils that probably isn't
needed ever...
Jeff
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk