
On 06/02/2010 07:07 PM, Beman Dawes wrote:
Because version 3 will break some user code, both v2 and v3 will be shipped for several releases. For 1.44, the default is v2 and the user has to explicitly switch to v3.
I'd really appreciate it if some Boosters could give v3 a try on your own code that uses Boost.Filesystem.
I think that the approach of manual switching between v2 and v3 is not very good. The packagers will not be able to ship both versions of the library in Linux distributions, which effectively means that v3 will not get adopted. Also, if I want my code to be compatible with both versions of the library, I cannot see a way to detect which version is currently installed. This is the case with my Boost.Log - it's not compatible with v3, mostly because path is not a template anymore. I would like people to be able to use Boost.Log regardless of which Boost.Filesystem their application uses. I would really prefer to have both versions of the library available at any time. Either as two separate libraries (like signals and signals2) or as two parts of one library (like spirit v2 and classic). In the latter case it could be compiled into one binary, with v2 and v3 being in different namespaces and "namespace filesystem" being an alias to one of them. And a quick glance at the code I see that initial_path is still not thread-safe. See this ticket: https://svn.boost.org/trac/boost/ticket/3531