Boost logo

Boost :

From: Sebastien Martel (smartel_at_[hidden])
Date: 2005-06-06 14:16:09


Hello boosters,

Name of the product:
     Rhapsody

Name of the company:
     Real Networks

Description of the Application and the Service:
      The Rhapsody Music Service allows its subscribers to legally
      download/transfer/burn over a million songs. The Rhapsody client
      software was built with many Boost libraries.

URL of company and service:
    http://www.real.com/

Boost libraries used used with comments:
      boost.format
                  Boost.Format is top notch. Using it is a bliss.
      boost.lexical_cast
                        Quite useful. However pedantic use of streams
                        to execute the conversions of basic types
                        to/from strings is terrible. Had to be careful
                        not to use in performance sensitive areas.
                        I really wished there were a way to achieve performance
                        comparable to c-runtime functions for ato* and
                        *toa.
      boost.functional
      boost.function
      boost.bind
                These three libraries, along with smart pointer are
                the most used in our application. I could not imagine
                not having them handy.
      boost.smart_ptr
                     Hands down, the most useful, and used library of
                     the lot!
      boost.filesystem
                      Not so happy here. This library looks promising,
                      but there are a sum of little issues that makes
                      me wonder if I should avoid using it in the
                      future.
                      1- There is a bug on win98 when iterating a root
                      drive. I sent a mail
                      [http://lists.boost.org/MailArchives/boost-users/msg10391.php] about
                      the problem on boost-users with a fix and never
                      received a response. I might get better results
                      by rephrasing the mail.
                      2- short-hand to build native paths using
                      operator "/" is broken if
                      you don't set the default name check to
                      boost::filesystem::native.
                      3- What we really need
                      is the reverse of the default library mode : have the library always
                      work with native name-check and at the
                      programmer's control, switch it to portable
                      paths. There are WAY too many cases where we
                      want to only work in native mode and portable
                      path is the exception.
                      4- Lack of wstring/unicode support will become a problem
                      very soon.
                      6- as noted in the do-list : "Windows: Some
                      files seem to be poisoned to the point where you can't even do is_directory() on them without an access error. For example, pagefile.sys. Should directory_iterator ignore these files?"
                      This is really a problem. A user must be very
                      careful for exceptions when using iterators.
                      They will throw.
                      
                      Overall this library, in it's current state, isn't a good fit for us.
      boost.date_time
                     Simple to use, effective, does the job. I love the
                     flexible input string parsing facilities, and the
                     human readable ISO output. I created utilities to tie in
                     with boost.filesystem so I can perform date_time
                     calculations on files. Also had to create a layer
                     to interface nicely with native locale date/time
                     conversions api. I am sure every users of
                     date_time that had to build UI apps ended up
                     writing similar facilities.
      boost.tokenizer
                     I glad to use tokenizer when we had to
                     parse a whole bunch of weirdly formatted strings.
                     It is a little bit tricky to get used to, especially
                     the fact that tokenizer acquires references to
                     its input in some cases instead of making a local
                     copy. IMO, boost.Tokenizer would benefit
                     from a policy design to fix this issue. I would
                     prefer Tokenizer making a true copy of
                     its input by default.
      boost.iterators
                     Wow. Moving legacy iterating interfaces, or
                     interfaces that should of been properly designed
                     as iterators to STL compliant iterators was easy
                     and painless. The gains in functionality to our
                     code made by this library are invaluable.
      boost.array
      boost.optional
                    Originally considered to implement an interface to
                    value access of an embedded database but was
                    discarded because of the _horrible_ compile times
                    that appeared when introduced. Also considered for
                    its visitation facility as a means to transport
                    complex data to be rendered in UI controls. Again,
                    dropped because of the compile times.
      boost.regex
                 When you need it, it works magic.
      boost.thread
                  Used to implement the monitor pattern in key areas.
                  The 2 most desired features : static linking of
                  boost.threads and ability to kill a thread.

      boost.preprocessor
                        Used to implement repetitive unit-test
                        code generation. The codebase benefited
                        greatly from the clarity boost.preprocessor
                        brought.

-- 
Best regards,
 Sebastien                          mailto:smartel_at_[hidden]

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk