|
Boost : |
From: Sean Parent (sparent_at_[hidden])
Date: 2006-07-02 12:52:26
Lubomir pointed me at the GIL thread on the list - and I wanted to
make a few comments about how I see the relationship between Boost
and ASL.
The charter for Boost is to vet libraries for possible inclusion in
the standard.
The charter for ASL is to explore the use of generic and declarative
techniques to develop large applications. Our goal is to replace 85%
of the imperative code being developed with small declarative
constructs.
Certainly there is going to be some overlap between the two project
and ASL makes _heavy_ use of Boost and borrows ideas from Boost quite
freely. For parts of ASL, inclusion into Boost makes perfect sense -
and we try to actively defer to Boost when a Boost library can meet
our needs. Boost certainly has a significantly larger user base than
ASL and far more active developers (anyone interested in helping out
ASL???).
I _really_ wish that I had enough time/resources on my team to take
some parts of ASL and contribute them to Boost. However, my teams
focus currently needs to stay on the higher level libraries (which I
don't think are ready for Boost yet) and we simply can't afford the
time to go through the submission process.
But I'm 100% supportive of Lubomir's contribution of GIL (Lubomir is
not on my team, and I'm thrilled that he can take the time for this
submission to Boost - just I'm I'm thrilled that we were able to
release it as part of ASL). GIL is a very significant piece of work.
I will also support anyone who would like to borrow portions of ASL
to contribute them to Boost.
Some libraries that I think would be interesting to get into Boost
with some comments about what I see as still needing to be done.
--- Forest <http://opensource.adobe.com/group__asl__tutorials__forest.html> I've started to map the concepts from forest into the terminology of BGL <http://opensource.adobe.com/wiki/index.php/ Edge_Interface_For_Forest_Iterators>. There is also some work here about generic algorithms for node based iterators (see the undocumented code for reverse_append here <http:// opensource.adobe.com/reverse_8hpp-source.html>. With a bit more polish I think this could be a _really_ nice collections of node based algorithms and concepts, which could be applied to a single linked list and other pre-traversed structures such as forest. There are also some forest specific algorithms I'd like to see such as the rotate necessary for balancing AVL trees (any forest is a binary tree, and vice versa - see Knuth). Range Based Algorithms (using the boost range library) <http:// opensource.adobe.com/group__standard__extensions.html> I've just started busting these out into separate headers (along the boost style - for example adobe/algorithm/reverse.hpp) - for inclusion in Boost I'd like to see this complete. This would be pretty simple to incorporate into Boost (and they are quite handy!). CMath C99 compatibility <http://opensource.adobe.com/group__cmath.html> There are also some rounding modes which were missing - This seems like a pretty straight forward "grab". ZUIDs <http://opensource.adobe.com/classadobe_1_1zuid__t.html> I'd like to see some review of the platform dependent code which gathers entropy to ensure we're getting enough entropy. A short tutorial would be good. ZUIDs would be a good addition to the serialization library. md5 and SHA code <http://opensource.adobe.com/classadobe_1_1md5__t.html> <http://opensource.adobe.com/group__adobe__sha.html> Review and a short tutorial ONCE <http://opensource.adobe.com/group__adobe__once.html> The STATIC_INSTANCE stuff might be able to be removed - this was done for the Mac where static initializer on DLLs were getting executed on a thread after load so other functions in the compilation unit could be executed concurrently. That may have been fixed (I haven't tracked the issue) - this library would be a good addition to Boost threads. ThreadID <http://opensource.adobe.com/group__asl__thread__id.html> Another good addition to Boost threads. Final <http://opensource.adobe.com/group__adobe__final.html> I don't use inheritance much but this would be a nice addition to Boost utilities. Counter <http://opensource.adobe.com/classadobe_1_1counter__t.html> If boost would surface the lightweight mutex used in shared_ptr - this would go away. (This is a heavyweight one - as I'm counting on Boost providing a lightweight one in the future :-) ). value_t <http://opensource.adobe.com/classadobe_1_1value__t.html> I think there are some nice ideas here which could be stolen for boost::any - value_t also captures equality comparison, makes use of a variant to avoid heap allocations for some common types (I'm not sure but I think boost any does two heap allocations, and value_t never does more than one). regular_object <http://opensource.adobe.com/ classadobe_1_1regular__object.html> This is a generalization of value_t (and boost any) - the idea is to be able to parameters an "any" object by concept. Mat Marcus has been doing a fair amount of work with this library. Needs better docs and tutorial. dictionary_t, array_t, name_t <http://opensource.adobe.com/ group__asl__tutorials__dictionary__t.html> ASL using these heavily to communicate with the runtime languages - could be used as part of the Python bindings (we're currently looking at doing Lua bindings with them. dictionary_t needs a closed hash implementation - there is one in the /future/ directory in ASL inspired by the Lua table structure, I haven't had a chance to compare it in depth to the Google hash implementations. Copy-On-Write <http://opensource.adobe.com/ classadobe_1_1copy__on__write.html> This is a fairly polished library - I've done lots of experimenting with COW (I prefer the term copy-on-modify - but COM confuses everyone...) over the last 10 years or so. This is a nice, simple, and efficient implementations (but it does need a better counter - see above). XML Parser <http://opensource.adobe.com/ classadobe_1_1xml__parser__t.html> This is a subset of an XML parser developed for xstrings. In our upcoming .18 release it has been expanded to support more uses by Eric Berdahl and Foster Brereton. It is designed to be a very efficient parser which pareses in place, and allows for preorder and postorder handling of elements (allowing for inplace substitutions). Needs a fair amount of work still to be a general XML parser - but I'd like to see that happen. --- Wow - that's not a complete list (much longer than I set out to write - I forget how large of a library we've created!). If you're not aware of ASL - it's all released under the MIT license (making it fairly straight forward to get through a code audit). I'd be happy to help out anyone who has the time to prepare some of these libraries (or any other library from ASL) for inclusion in Boost - ASL would also benefit from such an effort. Sean
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk