4 <meta http-equiv="Content-Language" content="en-us">
5 <meta name="GENERATOR" content="Microsoft FrontPage 5.0">
6 <meta name="ProgId" content="FrontPage.Editor.Document">
7 <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
8 <title>Filesystem Release History</title>
9 <link rel="stylesheet" type="text/css" href="../../../doc/src/minimal.css">
14 <table border="0" cellpadding="5" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111">
17 <a href="../../../index.htm">
18 <img src="../../../boost.png" alt="boost.png (6897 bytes)" align="middle" width="300" height="86" border="0"></a></td>
20 <font size="7">Filesystem Release History</font>
25 <table border="0" cellpadding="5" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" bgcolor="#D7EEFF" width="100%">
27 <td><a href="../../../index.htm">Boost Home</a>
28 <a href="index.htm">Library Home</a> <a href="reference.html">Reference</a>
29 <a href="tutorial.html">Tutorial</a>
30 <a href="faq.htm">FAQ</a>
31 <a href="portability_guide.htm">Portability</a>
32 <a href="v3.html">V3 Intro</a>
33 <a href="v3_design.html">V3 Design</a>
34 <a href="deprecated.html">Deprecated</a>
41 <li>Rework class <code>path</code> locale and codecvt implementation for increased reliability.
42 This change was SVN revision 83021, which should have gone into 1.56.0 but
43 unfortunately the merge didn't happen until too late.</li>
44 <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>,
45 <a href="https://svn.boost.org/trac/boost/ticket/9214">#9219</a>,
46 <a href="https://svn.boost.org/trac/boost/ticket/10228">#10228</a>, and
47 <a href="https://svn.boost.org/trac/boost/ticket/10641">#10641</a>, all
48 related to locales and codecvt facets.</li>
49 <li>The net effect of the above changes and fixes should be to eliminate
50 spurious "locale::facet::_S_create_c_locale name not valid" errors on Linux
51 and other non-BSD POSIX-like systems. The error will continue to occur, as it
52 should, when a path encoding conversion char-to-wchar_t or wchar_t-to-char is
53 attempted in an environment without a valid C locale (for example, if the LANG
54 environment variable is invalid or not defined).</li>
55 <li>Fix <a href="https://svn.boost.org/trac/boost/ticket/6124">#6124</a>,
56 <a href="https://svn.boost.org/trac/boost/ticket/6779">#6779</a>, and
57 <a href="https://svn.boost.org/trac/boost/ticket/10038">#10038</a> - an
58 undefined reference that occurred when the library was compiled for C++03 but
59 the using program was compiled for C++11, or vice versa. The private library
60 interface has been changed to use a plain-old C++03 enum. This is the fix
61 suggested by Andy in 6779.</li>
62 <li>The Windows implementation now treats NTFS directory junctions (also known
63 as junctions, also known as mount points) as symlinks. This has the effect of
64 treating directory junctions as directories, and thus supporting all
65 operations suitable for directories. This resolves
66 <a href="https://svn.boost.org/trac/boost/ticket/9016">#9016</a>. Directory
67 junctions are very similar to symlinks, but may have performance or other
68 advantages in some situations. They can be created from the command line with
69 "<code>mklink /j link target</code>". There is no plan for Boost.Filesystem to
70 be able to create them directly other than by calling <code>std::system()</code>.</li>
75 <li>Reorganize <code>recursive_directory_iterator::increment</code>, adding an
76 invariant that progress is always made, even if an error is reported by
77 exception or error_code. Add a manually executed test, <code>
78 test/issues/recurse_dir_iter_5403.cpp</code>. Adjust regular regression tests
79 as needed. Thanks to Claudio Bley for the
80 <a href="https://github.com/boostorg/filesystem/pull/4">pull request</a> - the
81 change was incorporated into the reorganized code. Fixes
82 <a href="https://svn.boost.org/trac/boost/ticket/5403">#5403</a> and
83 <a href="https://svn.boost.org/trac/boost/ticket/6821">#6821</a>.</li>
84 <li>Fix <code>canonical()</code> to treat parent of root as root. (Christian
85 Hammerl) Fixes <a href="https://svn.boost.org/trac/boost/ticket/9683">#9683</a>
86 and <a href="https://svn.boost.org/trac/boost/ticket/10187">#10187</a>.</li>
87 <li>Added missing test for <code>__sun</code> macro which is defined on
88 Solaris 10. (Chris Stylianou)</li>
89 <li>Minor fixes and code cleanup.</li>
90 <li>Update IDE projects to Visual Studio 2013.</li>
91 <li>Remove unused <code>const char colon</code> to clear clang warning. (Jürgen
93 <li>Add BOOST_NOEXCEPT to <code>class filesystem_error</code>.</li>
94 <li>Change <code>perms::all_all</code> and <code>perms::perms_mask</code> to
95 absolute values to quiet intellisense warnings, and conform to C++11.</li>
100 <li>Reimplement <code>path::codecvt()</code> and <code>path::imbue()</code>
101 with portable code that is intended to be much more robust and maintainable. A
102 section on <a href="reference.html#path-Usage">path usage concerns</a> has
103 been added to the reference documentation describing several concerns that
104 arise in the context of multithreading and <code>path::codecvt()</code>.</li>
109 <li>Fix <a href="http://svn.boost.org/trac/boost/ticket/7239">#7239</a>, Stack
110 overflow when calling <code>create_directories(":D")</code>. The reported
111 problem was a symptom of an internal bug that caused <code>path::filename()</code>
112 and <code>path::parent_path()</code> to fail on Windows for <code>path(":")</code>,
113 and that in turn caused other functions that depend on <code>filename()</code>
114 or <code>parent_path()</code> to fail, such as <code>create_directories()</code>.</li>
119 <li>Add begin() and end() non-member functions for directory_iterator and
120 recursive_directory_iterator so that C++11 range-based for statements work.
121 Suggested by feature requests
122 <a href="https://svn.boost.org/trac/boost/ticket/5896">#5896</a> and
123 <a href="https://svn.boost.org/trac/boost/ticket/6521">#6521</a>, using the
124 <a href="https://svn.boost.org/trac/boost/ticket/5896">#5896</a> approach.</li>
125 <li>Add range_begin() and range_end() non-member functions for directory_iterator and
126 recursive_directory_iterator so that
127 <a href="http://www.boost.org/libs/foreach/">BOOST_FOREACH</a> works.</li>
128 <li>Fix a Linux fchmodat problem affecting symlink permissions reported during
129 discussion of <a href="https://svn.boost.org/trac/boost/ticket/6659">#6659</a>.</li>
130 <li>Fix <a href="https://svn.boost.org/trac/boost/ticket/6659">#6659</a> and
131 <a href="https://svn.boost.org/trac/boost/ticket/7051">#7051</a>, fchmodat
132 supported only on Solaris 11. Fix for both Sun and GCC compilers. </li>
137 <li>Remove Filesystem Version 2 from the distribution. Version 3 is now the
138 only distributed version. Those still using V2 are urged to migrate to V3 as
139 soon as possible.</li>
140 <li>Add <code>constexpr value_type preferred_separator</code> to class path.</li>
141 <li>Fix <a href="https://svn.boost.org/trac/boost/ticket/5118">#5118</a>,
142 <code>replace_extension</code> doesn't work as specified in documentation. The
143 documentation, implementation, and test cases have all had fixes applied. The
144 documentation had failed to mention that any existing extension is removed.
145 The behavior for simple cases has been reverted to the Version 2 behavior, but
146 with corrections so that complex replacements now work. Two test cases from
147 #5118 have been added.</li>
148 <li>Fix <a href="http://svn.boost.org/trac/boost/ticket/3737">#3737</a>,
149 Boost.Filesystem does not compile on Windows Mobile. On Windows, <sys/stat.h>
150 is no longer included.</li>
151 <li>Fix <a href="https://svn.boost.org/trac/boost/ticket/4065">#4065</a>,
152 Boost Filesystem lexicographic path comparison inconsistent. This required
153 multiple source code bug fixes and code cleanup, correcting problems not
154 related to lexicographical issues.</li>
155 <li>Add class path member function <code>compare</code> for consistency with
157 <li>Tighten BOOST_FILESYSTEM_DYN_LINK and BOOST_FILESYSTEM_STATIC_LINK logic
158 in filesystem/config.hpp so that one or the other is always defined, and both
159 being defined is a #error.</li>
160 <li>Fix <a href="http://svn.boost.org/trac/boost/ticket/6690">#6690</a> and
161 <a href="http://svn.boost.org/trac/boost/ticket/6737">#6737</a>, resolving
162 static linking related problems with VC++ 8 through 11. Note that this fix may
163 reintroduce codecvt thread safety problems
164 <a href="http://svn.boost.org/trac/boost/ticket/4889">#4889</a>,
165 <a href="http://svn.boost.org/trac/boost/ticket/6320">#6320</a>, for these
166 compilers if static linking is used.</li>
167 <li>Add path::operator+= and concat functions to tack on things like suffixes
168 or numbers. Suggested by Ed Smith-Rowland and others.</li>
169 <li>Fix <a href="http://svn.boost.org/trac/boost/ticket/6809">#6809</a>,
170 Implementation of filesystem::rename() method for MS Windows is wrong, by
171 adding MOVEFILE_COPY_ALLOWED to deal with renames across drives, volumes, file
172 systems. Fix has no effect on non-Windows systems.</li>
173 <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
174 treated as empty, even if it wasn't empty. Such arrays can occur in unions or
175 in code using C variable length array idioms.</li>
176 <li>Fix <a href="http://svn.boost.org/trac/boost/ticket/6932">#6932</a>,
177 create_directories throws exception even if error_code is specified.</li>
182 <li>Fix <a href="https://svn.boost.org/trac/boost/ticket/3714">#3714</a>,
183 Added test cases and fixes for class path errors when assignment or append
184 used self or portion of self as source. </li>
185 <li>Fix <a href="https://svn.boost.org/trac/boost/ticket/4889">#4889</a>,
186 <a href="https://svn.boost.org/trac/boost/ticket/6320">#6320</a>, Locale codecvt_facet not thread safe on Windows. Move
187 Windows, Mac OS X, locale and codecvt facet back to namespace scope. POSIX
188 except OS X uses local static initialization (IE lazy) to ensure exceptions
189 are catchable if environmental variables are misconfigured and to avoid use of
190 locale("") if not actually used.</li>
191 <li>Fix <a href="https://svn.boost.org/trac/boost/ticket/5652">#5652</a>,
192 recursive_directory_iterator fails on cyclic symbolic links. Thanks to Daniel
193 Aarno for the patch.</li>
194 <li>Fix <a href="https://svn.boost.org/trac/boost/ticket/5653">#5653</a>,
195 recursive_directory_iterator(error_code) can still throw filesystem_error.</li>
196 <li>Fix <a href="https://svn.boost.org/trac/boost/ticket/5900">#5900</a>, directory_iterator
197 access violation on Windows if error is thrown. Thanks to Andreas Eckleder for the patch.</li>
198 <li>Fix <a href="https://svn.boost.org/trac/boost/ticket/5900#comment:2">#5900
199 comment 2</a>, a bug in director_iterator construction with error_code argument that
200 caused increment to be called without the ec argument being passed.</li>
201 <li>Fix <a href="https://svn.boost.org/trac/boost/ticket/5900">#5989</a> by cleaning up test suite path_test.cpp code even
202 though the ticket itself was not a defect, and clarifying docs; iteration over a path yields
204 <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>
205 <li>Operations function fixes for PGI compiler, thanks to Noel Belcourt.</li>
206 <li>Relax permissions test to reflect reality, particularly on the Sandia test
212 <li>Added operational function <a href="reference.html#canonical">canonical()</a>,
213 suggested by David Svoboda, who also provided pseudo-code.</li>
214 <li>Added <a href="reference.html#hash_value">hash_value()</a> function for
215 paths. (Daniel James)</li>
216 <li>Fix path inserter problem (<a href="https://svn.boost.org/trac/boost/ticket/5764">#5764</a>)
217 reported for QNX6.3.2 host (gcc-3.3.5)</li>
218 <li>Fix problem of locale("") exception being thrown before main() starts on
219 poorly configured (e.g. LANG="bad name") POSIX systems. Resolves the most
220 serious aspect of tickets
221 <a href="https://svn.boost.org/trac/boost/ticket/4688">#4688</a>,
222 <a href="https://svn.boost.org/trac/boost/ticket/5100">#5100</a>,
223 <a href="https://svn.boost.org/trac/boost/ticket/5289">#5289</a>.</li>
228 <li>Program file_status.cpp added (V3). See boost-root/libs/filesystem/v3/example.
229 Useful both as an example and to explore how Boost.Filesystem treats various
230 status errors. Run "bjam" (NOT "bjam install") in the example directory
231 to install in example/bin.</li>
237 <li>Fix fstream problem for STLPort masquerading as Dinkumware (<a href="https://svn.boost.org/trac/boost/ticket/5217">#5217</a>).</li>
242 <li>Version 3 of the library is now the default.</li>
243 <li>IBM vacpp: Workaround for compiler bug affecting iterator_facade. (<a href="https://svn.boost.org/trac/boost/ticket/4912">#4912</a>)</li>
244 <li>Verify, clarify, document that <boost/config/user.hpp> can be used to
245 specify BOOST_FILESYSTEM_VERSION. (<a href="https://svn.boost.org/trac/boost/ticket/4891">#4891</a>)</li>
246 <li>Replaced C-style assert with BOOST_ASSERT.</li>
247 <li>Undeprecated unique_path(). Instead, add a note mentioning the workaround
248 for lack of thread safety and possible change to cwd. unique_path() is just
249 too convenient to deprecate!</li>
250 <li>Cleared several GCC warnings.</li>
251 <li>Changed V2 code to use BOOST_THROW_EXCEPTION.</li>
252 <li>Windows: Fix status() to report non-symlink reparse point correctly.</li>
253 <li>Add <code>symlink_option</code> to <code>recursive_directory_iterator</code>,
254 allowing control over recursion into directory symlinks. Note that the default
255 is changed to not recurse into directory symlinks.</li>
256 <li><a href="reference.html">Reference</a> documentation cleanup, including
257 fixing missing and broken links, and adding missing functions.</li>
258 <li>Miscellaneous implementation code cleanup. </li>
262 <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->29 October, 2014<!--webbot bot="Timestamp" endspan i-checksum="38757" --></p>
263 <p>© Copyright Beman Dawes, 2011</p>
264 <p> Use, modification, and distribution are subject to the Boost Software
265 License, Version 1.0. See <a href="http://www.boost.org/LICENSE_1_0.txt">
266 www.boost.org/LICENSE_1_0.txt</a></p>