summaryrefslogtreecommitdiffstats
path: root/libcxx/www
Commit message (Collapse)AuthorAgeFilesLines
...
* Correctly mark the Filesystem status as complete.Eric Fiselier2018-07-271-2/+2
| | | | llvm-svn: 338094
* Implement <filesystem>Eric Fiselier2018-07-271-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch implements the <filesystem> header and uses that to provide <experimental/filesystem>. Unlike other standard headers, the symbols needed for <filesystem> have not yet been placed in libc++.so. Instead they live in the new libc++fs.a library. Users of filesystem are required to link this library. (Also note that libc++experimental no longer contains the definition of <experimental/filesystem>, which now requires linking libc++fs). The reason for keeping <filesystem> out of the dylib for now is that it's still somewhat experimental, and the possibility of requiring an ABI breaking change is very real. In the future the symbols will likely be moved into the dylib, or the dylib will be made to link libc++fs automagically). Note that moving the symbols out of libc++experimental may break user builds until they update to -lc++fs. This should be OK, because the experimental library provides no stability guarantees. However, I plan on looking into ways we can force libc++experimental to automagically link libc++fs. In order to use a single implementation and set of tests for <filesystem>, it has been placed in a special `__fs` namespace. This namespace is inline in C++17 onward, but not before that. As such implementation is available in C++11 onward, but no filesystem namespace is present "directly", and as such name conflicts shouldn't occur in C++11 or C++14. llvm-svn: 338093
* Mark <span> as completeMarshall Clow2018-07-251-2/+2
| | | | llvm-svn: 337879
* Implement filesystem_error::what() and improve reporting.Eric Fiselier2018-07-231-2/+2
| | | | | | | | | | | This patch implements the `what()` for filesystem errors. The message includes the 'what_arg', any paths that were specified, and the error code message. Additionally this patch refactors how errors are created, making it easier to report them correctly. llvm-svn: 337664
* [libc++] Implement Directory Entry Caching -- Sort of.Eric Fiselier2018-07-201-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: This patch implements directory_entry caching *almost* as specified in P0317r1. However, I explicitly chose to deviate from the standard as I'll explain below. The approach I decided to take is a fully caching one. When `refresh()` is called, the cache is populated by calls to `stat` and `lstat` as needed. During directory iteration the cache is only populated with the `file_type` as reported by `readdir`. The cache can be in the following states: * `_Empty`: There is nothing in the cache (likely due to an error) * `_IterSymlink`: Created by directory iteration when we walk onto a symlink only the symlink file type is known. * `_IterNonSymlink`: Created by directory iteration when we walk onto a non-symlink. Both the regular file type and symlink file type are known. * `_RefreshSymlink` and `_RefreshNonSymlink`: A full cache created by `refresh()`. This case includes dead symlinks. * `_RefreshSymlinkUnresolved`: A partial cache created by refresh when we fail to resolve the file pointed to by a symlink (likely due to permissions). Symlink attributes are cached, but attributes about the linked entity are not. As mentioned, this implementation purposefully deviates from the standard. According to some readings of the specification, and the Windows filesystem implementation, the constructors and modifiers which don't pass an `error_code` must throw when the `directory_entry` points to a entity which doesn't exist. or when attribute resolution fails for another reason. @BillyONeal has proposed a more reasonable set of requirements, where modifiers other than refresh ignore errors. This is the behavior libc++ currently implements, with the expectation some form of the new language will be accepted into the standard. Some additional semantics which differ from the Windows implementation: 1. `refresh` will not throw when the entry doesn't exist. In this case we can still meet the functions specification, so we don't treat it as an error. 2. We don't clear the path name when a constructor fails via refresh (this will hopefully be changed in the standard as well). It should be noted that libstdc++'s current implementation has the same behavior as libc++, except for point (2). If the changes to the specification don't get accepted, we'll be able to make the changes later. [1] http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0317r1.html Reviewers: mclow.lists, gromer, ldionne, aaron.ballman Subscribers: BillyONeal, christof, cfe-commits Differential Revision: https://reviews.llvm.org/D49530 llvm-svn: 337516
* Fix HTML blunderMarshall Clow2018-07-051-1/+1
| | | | llvm-svn: 336381
* Implement LWG 2946, 3075 and 3076. Reviewed as https://reviews.llvm.org/D48616Marshall Clow2018-07-021-3/+3
| | | | llvm-svn: 336132
* Remove P0771, which was not passed in RapperswilMarshall Clow2018-06-161-1/+0
| | | | llvm-svn: 334894
* Update the to-do list with motions from Rapperswil.Marshall Clow2018-06-121-1/+44
| | | | llvm-svn: 334467
* Mark more bits of P0433 as complete.Marshall Clow2018-05-231-2/+2
| | | | llvm-svn: 333058
* More notes on Rapperswil issuesMarshall Clow2018-05-101-9/+9
| | | | llvm-svn: 332000
* Status updates for RapperswilMarshall Clow2018-05-071-4/+4
| | | | llvm-svn: 331661
* Update for RapperswilMarshall Clow2018-05-071-71/+37
| | | | llvm-svn: 331638
* Mark <span> as "In progress"Marshall Clow2018-04-061-2/+2
| | | | llvm-svn: 329375
* Implement P0754R2: The <version> header.Marshall Clow2018-04-031-2/+2
| | | | llvm-svn: 329075
* Implement P0430R2 - File system library on non-POSIX systems.Eric Fiselier2018-04-021-1/+1
| | | | | | | | | | | This patch implements P0430R2, who's largest change is adding the path::format enumeration for supporting path format conversions in path constructors. However, since libc++'s filesystem only really supports POSIX like systems, there are no real changes needed. This patch simply adds the format enum and then ignores it when it's passed to constructors. llvm-svn: 329031
* Implement filesystem NB comments, relative paths, and related issues.Eric Fiselier2018-04-022-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a fairly large patch that implements all of the filesystem NB comments and the relative paths changes (ex. adding weakly_canonical). These issues and papers are all interrelated so their implementation couldn't be split up nicely. This patch upgrades <experimental/filesystem> to match the C++17 spec and not the published experimental TS spec. Some of the changes in this patch are both API and ABI breaking, however libc++ makes no guarantee about stability for experimental implementations. The major changes in this patch are: * Implement NB comments for filesystem (P0492R2), including: * Implement `perm_options` enum as part of NB comments, and update the `permissions` function to match. * Implement changes to `remove_filename` and `replace_filename` * Implement changes to `path::stem()` and `path::extension()` which support splitting examples like `.profile`. * Change path iteration to return an empty path instead of '.' for trailing separators. * Change `operator/=` to handle absolute paths on the RHS. * Change `absolute` to no longer accept a current path argument. * Implement relative paths according to NB comments (P0219r1) * Combine `path.cpp` and `operations.cpp` since some path functions require access to the operations internals, and some fs operations require access to the path parser. llvm-svn: 329028
* Implement LWG3034: P0767R1 breaks previously-standard-layout typesMarshall Clow2018-03-211-5/+5
| | | | llvm-svn: 328064
* Updated C++2a status with changes from Jacksonville WG21 meetingMarshall Clow2018-03-181-1/+46
| | | | llvm-svn: 327806
* Implement LWG#2518 - Non-member swap for propagate_const should call member swapMarshall Clow2018-03-081-2/+2
| | | | llvm-svn: 327005
* Implement P0767R1 - Deprecate PODMarshall Clow2018-03-061-2/+2
| | | | llvm-svn: 326801
* Added P0805 to the list of ready bitsMarshall Clow2018-03-011-2/+3
| | | | llvm-svn: 326485
* Implement LWG 2835 - fix <tgmath.h>Marshall Clow2018-02-121-1/+1
| | | | llvm-svn: 324923
* Implement LWG#2908 - The less-than operator for shared pointers could do ↵Marshall Clow2018-02-121-3/+3
| | | | | | more, and mark 2878 as complete as well (we already do that) llvm-svn: 324911
* Mark two issues as completeEric Fiselier2018-02-111-4/+4
| | | | llvm-svn: 324852
* Update the status of removed componentsMarshall Clow2018-02-081-14/+14
| | | | llvm-svn: 324609
* Implement deduction guide for basic_string as described in P0433Marshall Clow2018-02-081-2/+3
| | | | llvm-svn: 324569
* Comment on 'Review' issuesMarshall Clow2018-02-071-8/+8
| | | | llvm-svn: 324503
* Mark P0777 as completeMarshall Clow2018-02-061-2/+2
| | | | llvm-svn: 324399
* No, really this time mark 3034 as 'Patch Ready'Marshall Clow2018-02-061-2/+2
| | | | llvm-svn: 324312
* Mark issue 3034 as 'Patch Ready'Marshall Clow2018-02-061-2/+2
| | | | llvm-svn: 324310
* More patches readyMarshall Clow2018-02-061-7/+7
| | | | llvm-svn: 324307
* Add issues in 'Review'Marshall Clow2018-02-051-3/+23
| | | | llvm-svn: 324292
* Mark LWG 3014 as complete. No code changes neededEric Fiselier2018-02-041-2/+2
| | | | llvm-svn: 324193
* Implement LWG 3014 - Fix more noexcept issues in filesystem.Eric Fiselier2018-02-041-2/+2
| | | | | | | | | This patch removes the noexcept declaration from filesystem operations which require creating temporary paths or creating a directory iterator. Either of these operations can throw. llvm-svn: 324192
* Mark LWG 3013 as already complete. See r316941Eric Fiselier2018-02-041-2/+2
| | | | llvm-svn: 324191
* Implement LWG2989: path's streaming operators allow everything under the sun.Eric Fiselier2018-02-041-2/+2
| | | | | | | | | | | | | | | Because path can be constructed from a ton of different types, including string and wide strings, this caused it's streaming operators to suck up all sorts of silly types via silly conversions. For example: using namespace std::experimental::filesystem::v1; std::wstring w(L"wide"); std::cout << w; // converts to path. This patch tentatively adopts the resolution to LWG2989 and fixes the issue by making the streaming operators friends of path. llvm-svn: 324189
* Mark issue 2851 as completeEric Fiselier2018-02-041-2/+2
| | | | llvm-svn: 324188
* Address LWG 2849 and fix missing failure condition in copy_file.Eric Fiselier2018-02-041-2/+2
| | | | | | | Previously copy_file didn't handle the case where the input and output were the same file. llvm-svn: 324187
* Implement LWG2870: Default value of parameter theta of polar should be dependentMarshall Clow2018-01-311-2/+2
| | | | llvm-svn: 323918
* Add LWG3051Marshall Clow2018-01-301-0/+2
| | | | llvm-svn: 323822
* First cut at issue statuses for JAXMarshall Clow2018-01-301-51/+63
| | | | llvm-svn: 323720
* Minor updated to the main libcxx page; add a link to the deprecation pageMarshall Clow2018-01-291-6/+9
| | | | llvm-svn: 323694
* Mark 2903 as complete; we already do thisMarshall Clow2018-01-251-2/+2
| | | | llvm-svn: 323479
* Implement LWG2783: stack::emplace() and queue::emplace() should return ↵Marshall Clow2018-01-241-3/+3
| | | | | | decltype(auto) llvm-svn: 323385
* Update cxx2a statusMarshall Clow2018-01-221-5/+8
| | | | llvm-svn: 323160
* First part of P0202: Adding constexpr modifiers to functions in <algorithm> ↵Marshall Clow2018-01-151-3/+3
| | | | | | and <utility>. This commit is all the is_XXX algorithms. llvm-svn: 322489
* Document upcoming TS feature removalMarshall Clow2018-01-081-0/+138
| | | | llvm-svn: 322011
* Mark LWG2824 as complete. We already did it, but I added a test to be sureMarshall Clow2018-01-031-2/+2
| | | | llvm-svn: 321689
* Mark issue #2866 as "nothing to do"Marshall Clow2018-01-031-2/+2
| | | | llvm-svn: 321687
OpenPOWER on IntegriCloud