change support python version
[platform/upstream/boost.git] / libs / filesystem / doc / release_history.html
1 <html>
2
3 <head>
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=utf-8">
8 <title>Filesystem Release History</title>
9 <link href="styles.css" rel="stylesheet">
10 </head>
11
12 <body>
13
14 <table border="0" cellpadding="5" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111">
15   <tr>
16     <td width="277">
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>
19     <td align="middle">
20     <font size="7">Filesystem Release History</font>
21     </td>
22   </tr>
23 </table>
24
25 <table border="0" cellpadding="5" cellspacing="0" style="border-collapse: collapse"
26  bordercolor="#111111" bgcolor="#D7EEFF" width="100%">
27   <tr>
28     <td><a href="index.htm">Home</a> &nbsp;&nbsp;
29     <a href="tutorial.html">Tutorial</a> &nbsp;&nbsp;
30     <a href="reference.html">Reference</a> &nbsp;&nbsp;
31     <a href="faq.htm">FAQ</a> &nbsp;&nbsp;
32     <a href="release_history.html">Releases</a> &nbsp;&nbsp;
33     <a href="portability_guide.htm">Portability</a> &nbsp;&nbsp;
34     <a href="v3.html">V3 Intro</a> &nbsp;&nbsp;
35     <a href="v3_design.html">V3 Design</a> &nbsp;&nbsp;
36     <a href="deprecated.html">Deprecated</a> &nbsp;&nbsp;
37     <a href="issue_reporting.html">Bug Reports </a>&nbsp;&nbsp;
38     </td>
39 </table>
40
41 <h2>1.66.0</h2>
42 <ul>
43   <li>Clean up some tutorial example code and fix the wording for it in the 
44   tutorial. Thanks to Anmol-Singh-Jaggi for pull request #11.</li>
45 </ul>
46
47 <h2>1.64.0</h2>
48 <ul>
49   <li><code>is_empty()</code>overload with <code>error_code</code> parameter 
50   should not throw on error. Thanks to ldqrk for pull request #42</li>
51   <li>Fix <a href="https://svn.boost.org/trac/boost/ticket/10731">#10731</a> and
52   <a href="https://svn.boost.org/trac/boost/ticket/9480">#9480</a>, <i>Evaluate 
53   path.extension only once</i>. Thanks to Daniel Krügler for pull request #41.</li>
54   <li>Fix error propagation in <code>space(p, ec)</code>. Thanks to cmuellner 
55   for pull request #39.</li>
56   <li>Add test/config_info.cpp to increase macro state reporting in hopes of 
57   easing debugging on remote machines.</li>
58   <li>Fix <code>operations_test</code> failure on MinGW: MinGW defines 
59   __MINGW32__ rather than _MSC_VER, so also test for __MINGW32__ to see if 
60   setenv/unsetenv workaround needed.</li>
61 </ul>
62
63 <h2>1.63.0</h2>
64 <ul>
65   <li dir="ltr">
66   <p dir="ltr"><b>Deprecated <code>generic()</code> function name</b>: The undocumented experimental class
67   <code>path</code> member function <code>generic()</code> has been renamed <code>
68   generic_path()</code>. Fixes
69   <a href="https://svn.boost.org/trac/boost/ticket/11855">#11855</a>, <i>generic 
70   gives problems in C++/CLI.</i> Unless the macro BOOST_FILESYSTEM_NO_DEPRECATED 
71   is defined, the original <code>generic()</code> will continue to be supplied 
72   as a workaround for existing user code. But <code>generic()</code>is 
73   deprecated. User code should migrate to the new name.</li>
74   <li><b>New:</b> Class <code>path</code> adds constexpr constants <code>
75   separator</code> and <code>dot</code> of the type appropriate for the 
76   platform, and adds query functions <a href="reference.html#filename_is_dot">
77   <code>filename_is_do</code>t</a> and <code>
78   <a href="reference.html#filename_is_dot­_dot">filename_is_dot_dot</a></code>. 
79   These add convenience and the implementations may be more efficient that user 
80   coded equivalent functions.</li>
81   <li>Fix <a href="https://svn.boost.org/trac/boost/ticket/12578">#12578</a>, <i>
82   Make directory iterators able to detect when a copy has advanced to the end</i>. 
83   This bug in <code>directory_iterator</code> and <code>
84   recursive_directory_iterator</code> equality testing has existed more than a 
85   dozen years. Nowadays test driven development would likely have detected the 
86   problem in early development. Sigh.</li>
87   <li>Fix <a href="https://svn.boost.org/trac/boost/ticket/12495">#12495</a>, <i>
88   <code>create_directories()</code> crashes when passed empty string as path</i>, 
89   from Samantha Ritter. Also affected <code>create_directory()</code>. Charles 
90   Olivi submitted a pull request with some particularly helpful test cases.</li>
91   <li>Fix <a href="https://svn.boost.org/trac/boost/ticket/7307">#7307</a>, <i>
92   remove_all(dirname,ec) throws on write protected directories.</i> This is a 
93   tough one to test. There are three internal function calls where errors might 
94   arise, and it would take too much time to write tests for each of those cases. 
95   Someday we will have Titus Winter&#39;s mock installable file system, but for now 
96   are relying on code inspection rather than testing.</li>
97   <li>Fix a cygwin warning and a cygwin error. Thanks to thtrummer for pull 
98   request #30.</li>
99   <li>Fixed two broken links in reference docs. Thanks to tbeu for pull 
100   request #34.</li>
101   <li>Fix reference doc signatures for <code>path</code> stem(), extension() 
102   member functions. Thanks to faithandbrave for pull request #31</li>
103   <li>Fix broken link to <a href="https://svn.boost.org/trac/boost/ticket/7506">#7506</a> in 1.60.0 Release History (Daniel Krügler).</li>
104   <li>Refactor <code>push_directory()</code>internal logic so it is easier to 
105   reason about.</li>
106 </ul>
107
108 <h2>1.60.0</h2>
109 <ul>
110   <li dir="ltr">
111   <p dir="ltr"><b>New:</b> Added functions <code>
112   <a href="reference.html#lex-normal">lexically_normal</a></code>, <code>
113   <a href="reference.html#lex-relative">lexically_relative</a></code>, <code>
114   <a href="reference.html#op-relative">relative</a></code>, and <code>
115   <a href="reference.html#weakly_canonical">weakly_canonical</a></code>. Many thanks to Jamie Allsop for his help and 
116   perseverance. Resolves tickets
117   <a href="https://svn.boost.org/trac/boost/ticket/1976">#1976</a>,
118   <a href="https://svn.boost.org/trac/boost/ticket/5897">#5897</a>,
119   <a href="https://svn.boost.org/trac/boost/ticket/6249">#6249</a></li>
120   <li><b>New:</b> Class <code>path</code> now has
121   <a href="reference.html#path-iterators"> <code>reverse_iterator</code>,
122   <code>const_reverse_iterator</code>, <code>rbegin()</code>, and <code>rend()</code></a>. </li>
123   <li><b>New:</b> C++11 <code>noexcept</code> supplied as specified in the 
124   Filesystem TS if supported by the compiler.</li>
125   <li><b>New:</b> C++11 move constructors and move assignments supplied as 
126   specified in the Filesystem TS if supported by the compiler. Resolves
127   <a href="https://svn.boost.org/trac/boost/ticket/10291">#10291</a>.</li>
128   <li><b>New:</b> Existing functions whose names changed in the Filesystem TS 
129   are now supported under both the old and new names.</li>
130   <li><b>New: </b>Added <code><a href="reference.html#path-size">size</a>()</code> 
131   function to class <code>path</code>. Resolves
132   <a href="https://svn.boost.org/trac/boost/ticket/6874">#6874</a>, <i>Path 
133   should have a size() member function</i>.</li>
134   <li>Clear several spurious GCC warnings.</li>
135   <li>Fix <a href="https://svn.boost.org/trac/boost/ticket/11733">#11733</a>, <i>
136   Missing unistd.h include in boost/libs/filesystem/src/unique_path.cpp</i> by 
137   apply a patch from Idar Tollefsen.</li>
138   <li>Fix a race condition in <code>unique_path</code> by applying
139   <a href="https://github.com/boostorg/filesystem/pull/15">pull request #15</a> 
140   from Sebastian Redl. Also fixes
141   <a href="https://svn.boost.org/trac/boost/ticket/7506">#7506</a>, <i><code>unique_path</code> Fails on Windows for Temporary User 
142   Profiles</i>.</li>
143   <li>Fix bug in <i><code>file_status</code></i> and <i><code>
144   recursive_directory_iterator</code></i>: C++ turns an explicit constructor 
145   with all arguments except first defaulted into non-explicit single argument 
146   constructor.</li>
147   <li>Fix <a href="https://svn.boost.org/trac/boost/ticket/10591">#10591</a>, <i>
148   boost::filesystem does not build on iOS 8</i>, by applying a patch submitted 
149   by Daniel Seither.</li>
150   <li>Fix <a href="https://svn.boost.org/trac/boost/ticket/9454">#9454</a>, <i>
151   Boost Filesystem [library build] not compiling when 
152   BOOST_FILESYSTEM_NO_DEPRECATED is defined</i>, by applying a patch submitted 
153   by Makesim.</li>
154   <li>Fix <a href="https://svn.boost.org/trac/boost/ticket/11447">#11447</a>, <i>
155   __OpenBSD__ macro name misspelled</i>, by applying a patch submitted by Jasper 
156   Lievisse Adriaanse.</li>
157   <li>
158   <p>Fix <a href="https://svn.boost.org/trac/boost/ticket/11288">#11288</a>, <i>
159   <font face="Arial">A patch to avoid redundant string allocations</font></i>, 
160   by applying a patch submitted by Yevhen Ivannikov.</li>
161   <li>Fix <a href="https://svn.boost.org/trac/boost/ticket/11175">#11175</a>, 
162   out-of-date documentation causing users to incorrectly expect that the library 
163   could be used with exceptions disabled.</li>
164   <li>Resolve <a href="https://svn.boost.org/trac/boost/ticket/11175">#11166</a> 
165   by mitigating (i.e. reducing the likelihood of) a possible external file 
166   system race in <code>remove()</code>.</li>
167   <li>
168   <p>Fix <a href="https://svn.boost.org/trac/boost/ticket/7258">#7258</a>,
169   <i><code>create_directories</code> returns false if the path ends with a slash</i>. 
170   Also fix related issues if path contains <i>dot</i> or <i>dot-dot</i> 
171   elements, and added test cases to the test suite.</li>
172   <li>
173   <p>Reference docs editorial cleanups: Use same style sheet as the 
174   rest of the documentation. Tweak tab font size. Fix excessively long lines in 
175   tables, synopsis.</li>
176   <li>Resolve <a href="https://svn.boost.org/trac/boost/ticket/10766">
177   #10766</a>, <i>parent_path() with redundant separator returns wrong value</i>, 
178   by adding examples and notes to the reference documentation to show why the 
179   returned value is in fact correct, and to provide rationale for that behavior. 
180   See <a href="reference.html#path-iterators">[path.itr]</a>, and
181   <a href="reference.html#path-decomposition">[path.decompose]</a> <code>
182   parent_path()</code> and <code>filename()</code> sections of the reference 
183   docs.</li>
184   <li>Minor other fixes, including pull requests from Jonathan Wakely and Marcel 
185   Raad.</li>
186   <li>Closed several tickets as duplicates or otherwise resolved by the 
187   above changes:<ul>
188   <li><a href="https://svn.boost.org/trac/boost/ticket/7607">#7607</a>, <i>path 
189   should not infer an invisible &quot;.&quot; at the end of a path that ends with a slash;
190   </i><a href="https://svn.boost.org/trac/boost/ticket/7258">#7258</a>,
191   <a href="https://svn.boost.org/trac/boost/ticket/10766">#10766</a></li>
192   <li><a href="https://svn.boost.org/trac/boost/ticket/11061">#11061</a>,
193   <a href="https://svn.boost.org/trac/boost/ticket/11062">#11062</a>, <i>
194   impossible to traverse the path of the reverse iterator</i>, is effectively 
195   resolved by the addition of the class <code>path</code> reverse iteration 
196   feature. The reference documentation has also been updated with
197   <a href="reference.html#path-iterators">a note</a> warning about the 
198   limitations of class <code>path</code> iterators.</li>
199 </ul>
200
201   </li>
202 </ul>
203
204 <h2>1.59.0</h2>
205 <ul>
206   <li>Update the Tutorial:<ul>
207     <li>Use C++11 in the example programs to improve clarity.</li>
208     <li>Update the example source code show to match the actual example source 
209     code in the cpp files.</li>
210     <li>Rerun all the examples and update the output shown in the tutorial 
211     accordingly.</li>
212     <li>Fix spacing and other HTML presentation issues.</li>
213   </ul>
214   </li>
215   <li>Fix <a href="https://svn.boost.org/trac/boost/ticket/11491">#11491</a>, <i>
216   <code>temp_directory_path()</code> doesn&#39;t return valid temp path on Android</i>.</li>
217 </ul>
218
219 <h2>1.58.0</h2>
220 <ul>
221   <li>Fix <a href="https://svn.boost.org/trac/boost/ticket/6124">#6124</a>,
222   <a href="https://svn.boost.org/trac/boost/ticket/6779">#6779</a>, and
223   <a href="https://svn.boost.org/trac/boost/ticket/10038">#10038</a>. Cannot 
224   pass a BOOST_SCOPED_ENUM to a compiled function because it will result in an 
225   undefined reference if the library is compiled with -std=c++0x but the use is 
226   compiled in C++03 mode, or visa versa.</li>
227   <li>Rewrite Windows implementation of <code>temp_directory_path()</code> to (1) avoid
228   <code>GetTempPath()</code> failure if path length &gt; 130 (ticket #5300) and (2) provide a 
229   more sensible sequence of directories than provided by <code>GetTempPath()</code>, per 
230   boost list discussion &quot;[filesystem] temp_directory_path() behavior on 
231   Windows&quot;. The new sequence is:<ol>
232     <li><i><code>%TMP%</code></i></li>
233     <li><i><code>%TEMP%</code></i></li>
234     <li><code><i>%LOCALAPPDATA%</i>/Temp</code></li>
235     <li><code><i>%USERPROFILE%</i>/Temp</code></li>
236     <li><code><i>GetWindowsDirectoryW()</i>/Temp</code></li>
237   </ol>
238   </li>
239 </ul>
240
241 <h2>1.57.0</h2>
242 <ul>
243   <li>Rework class <code>path</code> locale and codecvt implementation for increased reliability. 
244   This change was SVN revision 83021, which should have gone into 1.56.0 but 
245   unfortunately the merge didn't happen until too late.</li>
246   <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>,
247   <a href="https://svn.boost.org/trac/boost/ticket/9214">#9219</a>,
248   <a href="https://svn.boost.org/trac/boost/ticket/10228">#10228</a>, and
249   <a href="https://svn.boost.org/trac/boost/ticket/10641">#10641</a>, all 
250   related to locales and codecvt facets.</li>
251   <li>The net effect of the above changes and fixes should be to eliminate 
252   spurious &quot;locale::facet::_S_create_c_locale name not valid&quot; errors on Linux 
253   and other non-BSD POSIX-like systems. The error will continue to occur, as it 
254   should, when a path encoding conversion char-to-wchar_t or wchar_t-to-char is 
255   attempted in an environment without a valid C locale (for example, if the LANG 
256   environment variable is invalid or not defined).</li>
257   <li>Fix <a href="https://svn.boost.org/trac/boost/ticket/6124">#6124</a>,
258   <a href="https://svn.boost.org/trac/boost/ticket/6779">#6779</a>, and
259   <a href="https://svn.boost.org/trac/boost/ticket/10038">#10038</a> - an 
260   undefined reference that occurred when the library was compiled for C++03 but 
261   the using program was compiled for C++11, or vice versa. The private library 
262   interface has been changed to use a plain-old C++03 enum. This is the fix 
263   suggested by Andy in 6779.</li>
264   <li>The Windows implementation now treats NTFS directory junctions (also known 
265   as junctions, also known as mount points) as symlinks. This has the effect of 
266   treating directory junctions as directories, and thus supporting all 
267   operations suitable for directories. This resolves
268   <a href="https://svn.boost.org/trac/boost/ticket/9016">#9016</a>. Directory 
269   junctions are very similar to symlinks, but may have performance or other 
270   advantages in some situations. They can be created from the command line with 
271   &quot;<code>mklink /j link target</code>&quot;. There is no plan for Boost.Filesystem to 
272   be able to create them directly other than by calling <code>std::system()</code>.</li>
273 </ul>
274
275 <h2>1.56.0</h2>
276 <ul>
277   <li>Reorganize <code>recursive_directory_iterator::increment</code>, adding an 
278   invariant that progress is always made, even if an error is reported by 
279   exception or error_code. Add a manually executed test, <code>
280   test/issues/recurse_dir_iter_5403.cpp</code>. Adjust regular regression tests 
281   as needed. Thanks to Claudio Bley for the
282   <a href="https://github.com/boostorg/filesystem/pull/4">pull request</a> - the 
283   change was incorporated into the reorganized code. Fixes
284   <a href="https://svn.boost.org/trac/boost/ticket/5403">#5403</a> and
285   <a href="https://svn.boost.org/trac/boost/ticket/6821">#6821</a>.</li>
286   <li>Fix <code>canonical()</code> to treat parent of root as root. (Christian 
287   Hammerl) Fixes <a href="https://svn.boost.org/trac/boost/ticket/9683">#9683</a> 
288   and <a href="https://svn.boost.org/trac/boost/ticket/10187">#10187</a>.</li>
289   <li>Added missing test for <code>__sun</code> macro which is defined on 
290   Solaris 10. (Chris Stylianou)</li>
291   <li>Minor fixes and code cleanup.</li>
292   <li>Update IDE projects to Visual Studio 2013.</li>
293   <li>Remove unused <code>const char colon</code> to clear clang warning. (J?gen 
294   Hunold)</li>
295   <li>Add BOOST_NOEXCEPT to <code>class filesystem_error</code>.</li>
296   <li>Change <code>perms::all_all</code> and <code>perms::perms_mask</code> to 
297   absolute values to quiet intellisense warnings, and conform to C++11.</li>
298 </ul>
299
300 <h2>1.54.0</h2>
301 <ul>
302   <li>Reimplement <code>path::codecvt()</code> and <code>path::imbue()</code> 
303   with portable code that is intended to be much more robust and maintainable. A 
304   section on <a href="reference.html#path-Usage">path usage concerns</a> has 
305   been added to the reference documentation describing several concerns that 
306   arise in the context of multithreading and <code>path::codecvt()</code>.</li>
307 </ul>
308
309 <h2>1.52.0</h2>
310 <ul>
311   <li>Fix <a href="http://svn.boost.org/trac/boost/ticket/7239">#7239</a>, <i>Stack 
312   overflow when calling <code>create_directories(&quot;:D&quot;)</code></i>. The reported 
313   problem was a symptom of an internal bug that caused <code>path::filename()</code> 
314   and <code>path::parent_path()</code> to fail on Windows for <code>path(&quot;:&quot;)</code>, 
315   and that in turn caused other functions that depend on <code>filename()</code> 
316   or <code>parent_path()</code> to fail, such as <code>create_directories()</code>.</li>
317 </ul>
318
319 <h2>1.51.0</h2>
320 <ul>
321   <li>Add begin() and end() non-member functions for directory_iterator and 
322   recursive_directory_iterator so that C++11 range-based for statements  work. 
323   Suggested by feature requests
324   <a href="https://svn.boost.org/trac/boost/ticket/5896">#5896</a> and
325   <a href="https://svn.boost.org/trac/boost/ticket/6521">#6521</a>, using the
326   <a href="https://svn.boost.org/trac/boost/ticket/5896">#5896</a> approach.</li>
327   <li>Add range_begin() and range_end() non-member functions for directory_iterator and 
328   recursive_directory_iterator so that 
329   <a href="http://www.boost.org/libs/foreach/">BOOST_FOREACH</a> works.</li>
330   <li>Fix a Linux fchmodat problem affecting symlink permissions reported during 
331   discussion of <a href="https://svn.boost.org/trac/boost/ticket/6659">#6659</a>.</li>
332   <li>Fix <a href="https://svn.boost.org/trac/boost/ticket/6659">#6659</a> and
333   <a href="https://svn.boost.org/trac/boost/ticket/7051">#7051</a>, <i>fchmodat 
334   supported only on Solaris 11</i>. Fix for both Sun and GCC compilers. </li>
335 </ul>
336
337 <h2>1.50.0</h2>
338 <ul>
339   <li>Remove Filesystem Version 2 from the distribution. Version 3 is now the 
340   only distributed version. Those still using V2 are urged to migrate to V3 as 
341   soon as possible.</li>
342   <li>Add <code>constexpr value_type preferred_separator</code> to class path.</li>
343   <li>Fix <a href="https://svn.boost.org/trac/boost/ticket/5118">#5118</a>, <i>
344   <code>replace_extension</code> doesn't work as specified in documentation</i>. The 
345   documentation, implementation, and test cases have all had fixes applied. The 
346   documentation had failed to mention that any existing extension is removed. 
347   The behavior for simple cases has been reverted to the Version 2 behavior, but 
348   with corrections so that complex replacements now work. Two test cases from 
349   #5118 have been added.</li>
350   <li>Fix <a href="http://svn.boost.org/trac/boost/ticket/3737">#3737</a>, 
351   <i>Boost.Filesystem does not compile on Windows Mobile</i>. On Windows, &lt;sys/stat.h&gt; 
352   is no longer included.</li>
353   <li>Fix <a href="https://svn.boost.org/trac/boost/ticket/4065">#4065</a>, 
354   <i>Boost Filesystem lexicographic path comparison inconsistent</i>. This required 
355   multiple source code bug fixes and code cleanup, correcting problems not 
356   related to lexicographical issues.</li>
357   <li>Add class path member function <code>compare</code> for consistency with 
358   std::string.</li>
359   <li>Tighten BOOST_FILESYSTEM_DYN_LINK and BOOST_FILESYSTEM_STATIC_LINK logic 
360   in filesystem/config.hpp so that one or the other is always defined, and both 
361   being defined is a #error.</li>
362   <li>Fix <a href="http://svn.boost.org/trac/boost/ticket/6690">#6690</a> and
363   <a href="http://svn.boost.org/trac/boost/ticket/6737">#6737</a>, resolving 
364   static linking related problems with VC++ 8 through 11. Note that this fix may 
365   reintroduce codecvt thread safety problems
366   <a href="http://svn.boost.org/trac/boost/ticket/4889">#4889</a>,
367   <a href="http://svn.boost.org/trac/boost/ticket/6320">#6320</a>, for these 
368   compilers if static linking is used.</li>
369   <li>Add path::operator+= and concat functions to tack on things like suffixes 
370   or numbers. Suggested by Ed Smith-Rowland and others.</li>
371   <li>Fix <a href="http://svn.boost.org/trac/boost/ticket/6809">#6809</a>, 
372   <i>Implementation of filesystem::rename() method for MS Windows is wrong</i>, by 
373   adding MOVEFILE_COPY_ALLOWED to deal with renames across drives, volumes, file 
374   systems. Fix has no effect on non-Windows systems.</li>
375   <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 
376   treated as empty, even if it wasn't empty. Such arrays can occur in unions or 
377   in code using C variable length array idioms.</li>
378   <li>Fix <a href="http://svn.boost.org/trac/boost/ticket/6932">#6932</a>, 
379   <i>create_directories throws exception even if error_code is specified</i>.</li>
380 </ul>
381
382 <h2>1.49.0</h2>
383 <ul>
384   <li>Fix <a href="https://svn.boost.org/trac/boost/ticket/3714">#3714</a>, 
385   Added test cases and fixes for class path errors when assignment or append 
386   used self or portion of self as source. </li>
387   <li>Fix <a href="https://svn.boost.org/trac/boost/ticket/4889">#4889</a>, 
388   <a href="https://svn.boost.org/trac/boost/ticket/6320">#6320</a>, <i>Locale codecvt_facet not thread safe on Windows</i>. Move 
389   Windows, Mac OS X, locale and codecvt facet back to namespace scope. POSIX 
390   except OS X uses local static initialization (IE lazy) to ensure exceptions 
391   are catchable if environmental variables are misconfigured and to avoid use of 
392   locale(&quot;&quot;) if not actually used.</li>
393   <li>Fix <a href="https://svn.boost.org/trac/boost/ticket/5652">#5652</a>, 
394   <i>recursive_directory_iterator fails on cyclic symbolic links</i>. Thanks to Daniel Aarno for the patch.</li>
395   <li>Fix <a href="https://svn.boost.org/trac/boost/ticket/5653">#5653</a>, 
396   <i>recursive_directory_iterator(error_code) can still throw filesystem_error</i>.</li>
397   <li>Fix <a href="https://svn.boost.org/trac/boost/ticket/5900">#5900</a>, <i>directory_iterator 
398   access violation on Windows if error is thrown</i>. Thanks to Andreas Eckleder for the patch.</li>
399   <li>Fix <a href="https://svn.boost.org/trac/boost/ticket/5900#comment:2">#5900 
400   comment 2</a>, a bug in director_iterator construction with error_code argument that 
401   caused increment to be called without the ec argument being passed.</li>
402   <li>Fix <a href="https://svn.boost.org/trac/boost/ticket/5900">#5989</a> by cleaning up test suite path_test.cpp code even 
403   though the ticket itself was not a defect, and clarifying docs; iteration over a path yields 
404   generic format.</li>
405   <li>Fix <a href="https://svn.boost.org/trac/boost/ticket/5592">#5592</a>, <i>Change Windows codecvt processing from CP_THREAD_ACP to CP_ACP</i>.</li>
406   <li>Operations function fixes for PGI compiler, thanks to Noel Belcourt.</li>
407   <li>Relax permissions test to reflect reality, particularly on the Sandia test 
408   platforms.</li>
409 </ul>
410
411 <h2>1.48.0</h2>
412 <ul>
413   <li>Added operational function <a href="reference.html#canonical">canonical()</a>, 
414   suggested by David Svoboda, who also provided pseudo-code.</li>
415   <li>Added <a href="reference.html#hash_value">hash_value()</a> function for 
416   paths. (Daniel James)</li>
417   <li>Fix path inserter problem (<a href="https://svn.boost.org/trac/boost/ticket/5764">#5764</a>) 
418   reported for QNX6.3.2 host (gcc-3.3.5)</li>
419   <li>Fix problem of locale(&quot;&quot;) exception being thrown before main() starts on 
420   poorly configured (e.g. LANG=&quot;bad name&quot;) POSIX systems. Resolves the most 
421   serious aspect of tickets
422   <a href="https://svn.boost.org/trac/boost/ticket/4688">#4688</a>,
423   <a href="https://svn.boost.org/trac/boost/ticket/5100">#5100</a>,
424   <a href="https://svn.boost.org/trac/boost/ticket/5289">#5289</a>.</li>
425 </ul>
426
427 <h2>1.47.0</h2>
428 <ul>
429   <li>Program file_status.cpp added (V3). See boost-root/libs/filesystem/v3/example. 
430   Useful both as an example and to explore how Boost.Filesystem treats various 
431   status errors.&nbsp; Run &quot;bjam&quot; (NOT &quot;bjam install&quot;) in the example directory 
432   to install in example/bin.</li>
433 </ul>
434
435 <h2>1.46.1</h2>
436
437 <ul>
438   <li>Fix fstream problem for STLPort masquerading as Dinkumware (<a href="https://svn.boost.org/trac/boost/ticket/5217">#5217</a>).</li>
439 </ul>
440
441 <h2>1.46.0</h2>
442 <ul>
443   <li>Version 3 of the library is now the default.</li>
444   <li>IBM vacpp: Workaround for compiler bug affecting iterator_facade. (<a href="https://svn.boost.org/trac/boost/ticket/4912">#4912</a>)</li>
445   <li>Verify, clarify, document that &lt;boost/config/user.hpp&gt; can be used to 
446   specify BOOST_FILESYSTEM_VERSION. (<a href="https://svn.boost.org/trac/boost/ticket/4891">#4891</a>)</li>
447   <li>Replaced C-style assert with BOOST_ASSERT.</li>
448   <li>Undeprecated unique_path(). Instead, add a note mentioning the workaround 
449   for lack of thread safety and possible change to cwd. unique_path() is just 
450   too convenient to deprecate!</li>
451   <li>Cleared several GCC warnings.</li>
452   <li>Changed V2 code to use BOOST_THROW_EXCEPTION.</li>
453   <li>Windows: Fix status() to report non-symlink reparse point correctly.</li>
454   <li>Add <code>symlink_option</code> to <code>recursive_directory_iterator</code>, 
455   allowing control over recursion into directory symlinks. Note that the default 
456   is changed to not recurse into directory symlinks.</li>
457   <li><a href="reference.html">Reference</a> documentation cleanup, including 
458   fixing missing and broken links, and adding missing functions.</li>
459   <li>Miscellaneous implementation code cleanup. </li>
460 </ul>
461 <hr>
462 <p>Revised
463 <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->07 August, 2017<!--webbot bot="Timestamp" endspan i-checksum="34770" --></p>
464 <p>&copy; Copyright Beman Dawes, 2011</p>
465 <p> Use, modification, and distribution are subject to the Boost Software 
466 License, Version 1.0. See <a href="http://www.boost.org/LICENSE_1_0.txt">
467 www.boost.org/LICENSE_1_0.txt</a></p>