
Hello, I've uploaded to the Vault an alpha version of the Boost.Log library I'm working on. It is available here: http://tinyurl.com/3cdg88 During the development I tried to follow the results of previous discussions in this list and requirements collected on the Wiki page: http://tinyurl.com/2fndfg At the current stage the library has a quite formed core implementation and a framework for developing leaf components quite ready for further extension with a few components implemented to play around. There is no official documentation for now, but there is a well-commented example/tutorial in the package, which is suitable to catch the feeling of the lib and may be used to play around with the code. The library builds in a thread-safe dll only for now. The HEAD of the boost repository and "thread_rewrite" branch of Boost.Thread library are required to build the lib. Support for other configurations will be added later. The purpose of this announcement is to collect feedback on the early development stage. Please feel free to suggest any architectural improvements and point out any bugs. Another thing I'd like to settle is a set of features that should be available in the library out of the box. In particular, a set of available sink types (for now only text ostream sink is implemented), loggers and attributes. It is my belief that the library should be proposed for review in a sensible minimal set of features and be extended later, but finding this set is not an easy task. Looking forward for your comments. Some side announcements, proposals and comments: - The "thread_rewrite" branch of Boost.Thread does not yet support read_write_mutex, which is used by the Boost.Log. There is a reduced implementation of it for pthreads. I'll be happy if someone from the Boost.Thread development take it as a start to implement the final implementation of the R/W mutex for pthreads. - There is an empty_deleter class in the library package. It is intended to be used with shared_ptr in cases when the pointed object should not be deleted by the pointer (for example, when it resides on the stack). Obviously, there is no point to allocate reference counting object and perform thread-safe reference counting when this deleter is provided. I propose to optimize shared_ptr with respect to this deleter type and elide allocations and ref-counting when it is provided in constructor or reset. - Please see boost/log/detail/type_info_wrapper.hpp. There is a std::type_info wrapper class that allows to copy, compare and order type information objects via usual operators and constructors. This allows to store type_info in containers, for example. Is it worth extracting as a separate component to the boost directory. - In the same file there is a BOOST_NO_UNSPECIFIED_BOOL macro definition, which I believe should be in Boost.Config. Maybe it should be moved there? -- Best regards, Andrey mailto:andysem@mail.ru