Removed compile-time checks for support for symlinks and hardlink on Windows. Instead, a runtime check is used. (PR#142)
Fixed handling of reparse points in canonical and read_symlink on Windows. This also affects other algorithms that involve canonical and read_symlink in their implementation. (PR#100, #85, #99, #123, #125)
Fixed that read_symlink on Windows could potentially fail or cause failures elsewhere with a sharing violation error, if the same symlink was opened concurrently. (#138)
Fixed that is_symlink(directory_entry) would always return false, even if the directory entry actually referred to a symlink. (PR#148)
Added missing status inspection operation overloads for directory_entry and error_code (e.g. is_directory(directory_entry,error_code&)). Removed incorrect noexcept specifications for the overloads not taking the error_code arguments.
copy_file implementation has been updated to perform checks on the source and target files, as required by C++20 ([fs.op.copy.file]/4.1). In particular, the operation will fail if the source or target file is not a regular file or the source and target paths identify the same file.
copy_file on POSIX systems will now also copy the source file permissions to the target file, if the target file is overwritten.
New: Added copy_file implementations based on sendfile and copy_file_range system calls on Linux, which may improve file copying performance, especially on network filesystems.
Deprecated: The copy_option enumeration that is used with the copy_file operation is deprecated. As a replacement, the new enum copy_options (note the trailing 's') has been added. The new enum contains values similar to the copy_options enum from C++20. The old enum values are mapped onto the new enum. The old enum will be removed in a future release.
New: Added copy_options::skip_existing option, which allows copy_file operation to succeed without overwriting the target file, if it exists.
New: Added copy_options::update_existing option, which allows copy_file operation to conditionally overwrite the target file, if it exists, if its last write time is older than that of the replacement file.
New:copy_file now returns bool, which indicates whether the file was copied.
New, breaking change:copy operation has been extended and reworked to implement behavior specified in C++20 [fs.op.copy]. This includes support for copy_options::recursive, copy_options::copy_symlinks, copy_options::skip_symlinks, copy_options::directories_only, copy_options::create_symlinks and copy_options::create_hard_links options. The operation performs additional checks based on the specified options. Applying copy to a directory with default copy_options will now also copy files residing in that directory (but not nested directories or files in those directories).
New: Added create_directory overload taking two paths. The second path is a path to an existing directory, which is used as a source of permission attributes to use in the directory to create.
Deprecated:copy_directory operation has been deprecated in favor of the new create_directory overload. Note that the two operations have reversed order of the path arguments.
equivalent on POSIX systems now returns the actual error code from the OS if one of the paths does not resolve to a file. Previously the function would return an error code of 1. (#141)
equivalent no longer considers file size and last modification time in order to test whether the two paths refer to the same file. These checks could result in a false negative if the file was modified during the equivalent call.
New: Added absolute overloads taking error_code argument.
Operations that have current_path() as the default value of their arguments and also have an error_code argument will use the current_path(error_code&ec) overload to obtain the current path, so that its failure is reported via the error_code argument instead of an exception.
space now initializes the space_info structure members to -1 values on error, as required by C++20 ([fs.op.space]/1).
space on Windows now accepts paths referring to arbitrary files, not only directories. This is similar to POSIX systems and corresponds to the operation description in C++20. (#73)
New: Added implementation of temp_directory_path for Windows CE. (PR#25)
New: Improved compatibility with WASI platform. (PR#144)
New: Improved support for Embarcadero compilers. (PR#130)
New: Added implementations of unique_path operation based on getrandom (Linux), arc4random_buf (OpenBSD/FreeBSD/CloudABI) and BCrypt (Windows) system APIs.
Deprecated: Auto-linking against system libraries on Windows with MSVC-compatible compilers is deprecated and will be removed in a future release. This affects users linking against static library of Boost.Filesystem. Users are advised to update their project build systems to either use a shared library of Boost.Filesystem, or explicitly specify the dependencies of Boost.Filesystem in the linker command line. Users of shared library of Boost.Filesystem are not affected.