<html> <head> <meta http-equiv="Content-Language" content="en-us"> <meta name="GENERATOR" content="Microsoft FrontPage 5.0"> <meta name="ProgId" content="FrontPage.Editor.Document"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Filesystem Release History</title> <link href="styles.css" rel="stylesheet"> </head> <body> <table border="0" cellpadding="5" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111"> <tr> <td width="277"> <a href="../../../index.htm"> <img src="../../../boost.png" alt="boost.png (6897 bytes)" align="middle" width="300" height="86" border="0"></a></td> <td align="middle"> <font size="7">Filesystem Release History</font> </td> </tr> </table> <table border="0" cellpadding="5" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" bgcolor="#D7EEFF" width="100%"> <tr> <td><a href="index.htm">Home</a> <a href="tutorial.html">Tutorial</a> <a href="reference.html">Reference</a> <a href="faq.htm">FAQ</a> <a href="release_history.html">Releases</a> <a href="portability_guide.htm">Portability</a> <a href="v3.html">V3 Intro</a> <a href="v3_design.html">V3 Design</a> <a href="deprecated.html">Deprecated</a> <a href="issue_reporting.html">Bug Reports </a> </td> </table> <h2>1.59.0</h2> <ul> <li>Update the Tutorial:<ul> <li>Use C++11 in the example programs to improve clarity.</li> <li>Update the example source code show to match the actual example source code in the cpp files.</li> <li>Rerun all the examples and update the output shown in the tutorial accordingly.</li> <li>Fix spacing and other HTML presentation issues.</li> </ul> </li> <li>Fix <a href="https://svn.boost.org/trac/boost/ticket/11491">#11491</a>, <code>temp_directory_path()</code> doesn't return valid temp path on Android.</li> </ul> <h2>1.58.0</h2> <ul> <li>Rewrite Windows implementation of temp_directory_path() to (1) avoid GetTempPath() failure if path length > 130 (ticket #5300) and (2) provide a more sensible sequence of directories than provided by GetTempPath(), per boost list discussion "[filesystem] temp_directory_path() behavior on Windows". The new sequence is:<ol> <li><i><code>%TMP%</code></i></li> <li><i><code>%TEMP%</code></i></li> <li><code><i>%LOCALAPPDATA%</i>/Temp</code></li> <li><code><i>%USERPROFILE%</i>/Temp</code></li> <li><code><i>GetWindowsDirectoryW()</i>/Temp</code></li> </ol> </li> </ul> <h2>1.57.0</h2> <ul> <li>Rework class <code>path</code> locale and codecvt implementation for increased reliability. This change was SVN revision 83021, which should have gone into 1.56.0 but unfortunately the merge didn't happen until too late.</li> <li>Fix tickets <a href="https://svn.boost.org/trac/boost/ticket/8930">#8930</a>, <a href="https://svn.boost.org/trac/boost/ticket/9054">#9054</a>, <a href="https://svn.boost.org/trac/boost/ticket/9214">#9219</a>, <a href="https://svn.boost.org/trac/boost/ticket/10228">#10228</a>, and <a href="https://svn.boost.org/trac/boost/ticket/10641">#10641</a>, all related to locales and codecvt facets.</li> <li>The net effect of the above changes and fixes should be to eliminate spurious "locale::facet::_S_create_c_locale name not valid" errors on Linux and other non-BSD POSIX-like systems. The error will continue to occur, as it should, when a path encoding conversion char-to-wchar_t or wchar_t-to-char is attempted in an environment without a valid C locale (for example, if the LANG environment variable is invalid or not defined).</li> <li>Fix <a href="https://svn.boost.org/trac/boost/ticket/6124">#6124</a>, <a href="https://svn.boost.org/trac/boost/ticket/6779">#6779</a>, and <a href="https://svn.boost.org/trac/boost/ticket/10038">#10038</a> - an undefined reference that occurred when the library was compiled for C++03 but the using program was compiled for C++11, or vice versa. The private library interface has been changed to use a plain-old C++03 enum. This is the fix suggested by Andy in 6779.</li> <li>The Windows implementation now treats NTFS directory junctions (also known as junctions, also known as mount points) as symlinks. This has the effect of treating directory junctions as directories, and thus supporting all operations suitable for directories. This resolves <a href="https://svn.boost.org/trac/boost/ticket/9016">#9016</a>. Directory junctions are very similar to symlinks, but may have performance or other advantages in some situations. They can be created from the command line with "<code>mklink /j link target</code>". There is no plan for Boost.Filesystem to be able to create them directly other than by calling <code>std::system()</code>.</li> </ul> <h2>1.56.0</h2> <ul> <li>Reorganize <code>recursive_directory_iterator::increment</code>, adding an invariant that progress is always made, even if an error is reported by exception or error_code. Add a manually executed test, <code> test/issues/recurse_dir_iter_5403.cpp</code>. Adjust regular regression tests as needed. Thanks to Claudio Bley for the <a href="https://github.com/boostorg/filesystem/pull/4">pull request</a> - the change was incorporated into the reorganized code. Fixes <a href="https://svn.boost.org/trac/boost/ticket/5403">#5403</a> and <a href="https://svn.boost.org/trac/boost/ticket/6821">#6821</a>.</li> <li>Fix <code>canonical()</code> to treat parent of root as root. (Christian Hammerl) Fixes <a href="https://svn.boost.org/trac/boost/ticket/9683">#9683</a> and <a href="https://svn.boost.org/trac/boost/ticket/10187">#10187</a>.</li> <li>Added missing test for <code>__sun</code> macro which is defined on Solaris 10. (Chris Stylianou)</li> <li>Minor fixes and code cleanup.</li> <li>Update IDE projects to Visual Studio 2013.</li> <li>Remove unused <code>const char colon</code> to clear clang warning. (J?gen Hunold)</li> <li>Add BOOST_NOEXCEPT to <code>class filesystem_error</code>.</li> <li>Change <code>perms::all_all</code> and <code>perms::perms_mask</code> to absolute values to quiet intellisense warnings, and conform to C++11.</li> </ul> <h2>1.54.0</h2> <ul> <li>Reimplement <code>path::codecvt()</code> and <code>path::imbue()</code> with portable code that is intended to be much more robust and maintainable. A section on <a href="reference.html#path-Usage">path usage concerns</a> has been added to the reference documentation describing several concerns that arise in the context of multithreading and <code>path::codecvt()</code>.</li> </ul> <h2>1.52.0</h2> <ul> <li>Fix <a href="http://svn.boost.org/trac/boost/ticket/7239">#7239</a>, Stack overflow when calling <code>create_directories(":D")</code>. The reported problem was a symptom of an internal bug that caused <code>path::filename()</code> and <code>path::parent_path()</code> to fail on Windows for <code>path(":")</code>, and that in turn caused other functions that depend on <code>filename()</code> or <code>parent_path()</code> to fail, such as <code>create_directories()</code>.</li> </ul> <h2>1.51.0</h2> <ul> <li>Add begin() and end() non-member functions for directory_iterator and recursive_directory_iterator so that C++11 range-based for statements work. Suggested by feature requests <a href="https://svn.boost.org/trac/boost/ticket/5896">#5896</a> and <a href="https://svn.boost.org/trac/boost/ticket/6521">#6521</a>, using the <a href="https://svn.boost.org/trac/boost/ticket/5896">#5896</a> approach.</li> <li>Add range_begin() and range_end() non-member functions for directory_iterator and recursive_directory_iterator so that <a href="http://www.boost.org/libs/foreach/">BOOST_FOREACH</a> works.</li> <li>Fix a Linux fchmodat problem affecting symlink permissions reported during discussion of <a href="https://svn.boost.org/trac/boost/ticket/6659">#6659</a>.</li> <li>Fix <a href="https://svn.boost.org/trac/boost/ticket/6659">#6659</a> and <a href="https://svn.boost.org/trac/boost/ticket/7051">#7051</a>, fchmodat supported only on Solaris 11. Fix for both Sun and GCC compilers. </li> </ul> <h2>1.50.0</h2> <ul> <li>Remove Filesystem Version 2 from the distribution. Version 3 is now the only distributed version. Those still using V2 are urged to migrate to V3 as soon as possible.</li> <li>Add <code>constexpr value_type preferred_separator</code> to class path.</li> <li>Fix <a href="https://svn.boost.org/trac/boost/ticket/5118">#5118</a>, <code>replace_extension</code> doesn't work as specified in documentation. The documentation, implementation, and test cases have all had fixes applied. The documentation had failed to mention that any existing extension is removed. The behavior for simple cases has been reverted to the Version 2 behavior, but with corrections so that complex replacements now work. Two test cases from #5118 have been added.</li> <li>Fix <a href="http://svn.boost.org/trac/boost/ticket/3737">#3737</a>, Boost.Filesystem does not compile on Windows Mobile. On Windows, <sys/stat.h> is no longer included.</li> <li>Fix <a href="https://svn.boost.org/trac/boost/ticket/4065">#4065</a>, Boost Filesystem lexicographic path comparison inconsistent. This required multiple source code bug fixes and code cleanup, correcting problems not related to lexicographical issues.</li> <li>Add class path member function <code>compare</code> for consistency with std::string.</li> <li>Tighten BOOST_FILESYSTEM_DYN_LINK and BOOST_FILESYSTEM_STATIC_LINK logic in filesystem/config.hpp so that one or the other is always defined, and both being defined is a #error.</li> <li>Fix <a href="http://svn.boost.org/trac/boost/ticket/6690">#6690</a> and <a href="http://svn.boost.org/trac/boost/ticket/6737">#6737</a>, resolving static linking related problems with VC++ 8 through 11. Note that this fix may reintroduce codecvt thread safety problems <a href="http://svn.boost.org/trac/boost/ticket/4889">#4889</a>, <a href="http://svn.boost.org/trac/boost/ticket/6320">#6320</a>, for these compilers if static linking is used.</li> <li>Add path::operator+= and concat functions to tack on things like suffixes or numbers. Suggested by Ed Smith-Rowland and others.</li> <li>Fix <a href="http://svn.boost.org/trac/boost/ticket/6809">#6809</a>, Implementation of filesystem::rename() method for MS Windows is wrong, by adding MOVEFILE_COPY_ALLOWED to deal with renames across drives, volumes, file systems. Fix has no effect on non-Windows systems.</li> <li>Fix <a href="http://svn.boost.org/trac/boost/ticket/6819">#6819</a>, A path operand with a source that was a one character array was treated as empty, even if it wasn't empty. Such arrays can occur in unions or in code using C variable length array idioms.</li> <li>Fix <a href="http://svn.boost.org/trac/boost/ticket/6932">#6932</a>, create_directories throws exception even if error_code is specified.</li> </ul> <h2>1.49.0</h2> <ul> <li>Fix <a href="https://svn.boost.org/trac/boost/ticket/3714">#3714</a>, Added test cases and fixes for class path errors when assignment or append used self or portion of self as source. </li> <li>Fix <a href="https://svn.boost.org/trac/boost/ticket/4889">#4889</a>, <a href="https://svn.boost.org/trac/boost/ticket/6320">#6320</a>, Locale codecvt_facet not thread safe on Windows. Move Windows, Mac OS X, locale and codecvt facet back to namespace scope. POSIX except OS X uses local static initialization (IE lazy) to ensure exceptions are catchable if environmental variables are misconfigured and to avoid use of locale("") if not actually used.</li> <li>Fix <a href="https://svn.boost.org/trac/boost/ticket/5652">#5652</a>, recursive_directory_iterator fails on cyclic symbolic links. Thanks to Daniel Aarno for the patch.</li> <li>Fix <a href="https://svn.boost.org/trac/boost/ticket/5653">#5653</a>, recursive_directory_iterator(error_code) can still throw filesystem_error.</li> <li>Fix <a href="https://svn.boost.org/trac/boost/ticket/5900">#5900</a>, directory_iterator access violation on Windows if error is thrown. Thanks to Andreas Eckleder for the patch.</li> <li>Fix <a href="https://svn.boost.org/trac/boost/ticket/5900#comment:2">#5900 comment 2</a>, a bug in director_iterator construction with error_code argument that caused increment to be called without the ec argument being passed.</li> <li>Fix <a href="https://svn.boost.org/trac/boost/ticket/5900">#5989</a> by cleaning up test suite path_test.cpp code even though the ticket itself was not a defect, and clarifying docs; iteration over a path yields generic format.</li> <li>Fix <a href="https://svn.boost.org/trac/boost/ticket/5592">#5592</a>, Change Windows codecvt processing from CP_THREAD_ACP to CP_ACP.</li> <li>Operations function fixes for PGI compiler, thanks to Noel Belcourt.</li> <li>Relax permissions test to reflect reality, particularly on the Sandia test platforms.</li> </ul> <h2>1.48.0</h2> <ul> <li>Added operational function <a href="reference.html#canonical">canonical()</a>, suggested by David Svoboda, who also provided pseudo-code.</li> <li>Added <a href="reference.html#hash_value">hash_value()</a> function for paths. (Daniel James)</li> <li>Fix path inserter problem (<a href="https://svn.boost.org/trac/boost/ticket/5764">#5764</a>) reported for QNX6.3.2 host (gcc-3.3.5)</li> <li>Fix problem of locale("") exception being thrown before main() starts on poorly configured (e.g. LANG="bad name") POSIX systems. Resolves the most serious aspect of tickets <a href="https://svn.boost.org/trac/boost/ticket/4688">#4688</a>, <a href="https://svn.boost.org/trac/boost/ticket/5100">#5100</a>, <a href="https://svn.boost.org/trac/boost/ticket/5289">#5289</a>.</li> </ul> <h2>1.47.0</h2> <ul> <li>Program file_status.cpp added (V3). See boost-root/libs/filesystem/v3/example. Useful both as an example and to explore how Boost.Filesystem treats various status errors. Run "bjam" (NOT "bjam install") in the example directory to install in example/bin.</li> </ul> <h2>1.46.1</h2> <ul> <li>Fix fstream problem for STLPort masquerading as Dinkumware (<a href="https://svn.boost.org/trac/boost/ticket/5217">#5217</a>).</li> </ul> <h2>1.46.0</h2> <ul> <li>Version 3 of the library is now the default.</li> <li>IBM vacpp: Workaround for compiler bug affecting iterator_facade. (<a href="https://svn.boost.org/trac/boost/ticket/4912">#4912</a>)</li> <li>Verify, clarify, document that <boost/config/user.hpp> can be used to specify BOOST_FILESYSTEM_VERSION. (<a href="https://svn.boost.org/trac/boost/ticket/4891">#4891</a>)</li> <li>Replaced C-style assert with BOOST_ASSERT.</li> <li>Undeprecated unique_path(). Instead, add a note mentioning the workaround for lack of thread safety and possible change to cwd. unique_path() is just too convenient to deprecate!</li> <li>Cleared several GCC warnings.</li> <li>Changed V2 code to use BOOST_THROW_EXCEPTION.</li> <li>Windows: Fix status() to report non-symlink reparse point correctly.</li> <li>Add <code>symlink_option</code> to <code>recursive_directory_iterator</code>, allowing control over recursion into directory symlinks. Note that the default is changed to not recurse into directory symlinks.</li> <li><a href="reference.html">Reference</a> documentation cleanup, including fixing missing and broken links, and adding missing functions.</li> <li>Miscellaneous implementation code cleanup. </li> </ul> <hr> <p>Revised <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->26 July, 2015<!--webbot bot="Timestamp" endspan i-checksum="21146" --></p> <p>© Copyright Beman Dawes, 2011</p> <p> Use, modification, and distribution are subject to the Boost Software License, Version 1.0. See <a href="http://www.boost.org/LICENSE_1_0.txt"> www.boost.org/LICENSE_1_0.txt</a></p>