From 8166dd1546c620cfdd4f1bc1d1cd723a91b8f390 Mon Sep 17 00:00:00 2001 From: Steffen Schuemann Date: Thu, 31 Dec 2020 10:37:49 +0100 Subject: [PATCH] Release v1.4.0 --- README.md | 36 +++++++++++++++++++++++++++++++++--- include/ghc/filesystem.hpp | 2 +- 2 files changed, 34 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 826569e..7345ce0 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ [![Build Status](https://api.cirrus-ci.com/github/gulrak/filesystem.svg?branch=master)](https://cirrus-ci.com/github/gulrak/filesystem) [![Build Status](https://cloud.drone.io/api/badges/gulrak/filesystem/status.svg?ref=refs/heads/master)](https://cloud.drone.io/gulrak/filesystem) [![Coverage Status](https://coveralls.io/repos/github/gulrak/filesystem/badge.svg?branch=master)](https://coveralls.io/github/gulrak/filesystem?branch=master) -[![Latest Release Tag](https://img.shields.io/github/tag/gulrak/filesystem.svg)](https://github.com/gulrak/filesystem/tree/v1.3.10) +[![Latest Release Tag](https://img.shields.io/github/tag/gulrak/filesystem.svg)](https://github.com/gulrak/filesystem/tree/v1.4.0) # Filesystem @@ -115,9 +115,13 @@ in the standard, and there might be issues in these implementations too. ### Downloads -The latest release version is [v1.3.10](https://github.com/gulrak/filesystem/tree/v1.3.10) and +The latest release version is [v1.4.0](https://github.com/gulrak/filesystem/tree/v1.4.0) and +source archives can be found [here](https://github.com/gulrak/filesystem/releases/tag/v1.4.0). + +The latest pre-C++20 release version is [v1.3.10](https://github.com/gulrak/filesystem/tree/v1.3.10) and source archives can be found [here](https://github.com/gulrak/filesystem/releases/tag/v1.3.10). + ### Using it as Single-File-Header As `ghc::filesystem` is at first a header-only library, it should be enough to copy the header @@ -292,6 +296,19 @@ documentation would work, besides the few differences explained in the next section. So you might head over to https://en.cppreference.com/w/cpp/filesystem for a description of the components of this library. +When compiling with C++11, C++14 or C++17, the API is following the C++17 +standard, where possible, with the exception that `std::string_view` parameters +are only supported on C++17. When Compiling with C++20, `ghc::filesysytem` +defaults to the C++20 API, with the `char8_t` and `std::u8string` interfaces +and the deprecated `fs::u8path` factory method. + +**Note:** If the C++17 API should be enforced even in C++20 mode, use the define +`GHC_FILESYSTEM_ENFORCE_CPP17_API`. +Even then it is possible to create `fws::path` from `std::u8string` but +`fs::path::u8string()` and `fs::path::generic_u8string()` return normal +UTF-8 encoded `std::string` instances, so code written for C++17 could +still work with `ghc::filesystem` when compiled with C++20. + The only additions to the standard are documented here: @@ -434,6 +451,18 @@ This returns a const reference, instead of a value, because it can. This implementation uses the generic representation for internal workings, so it's "free" to return that. +```cpp +std::string path::u8string() const; +std::string path::generic_u8string() const; +vs. +std::u8string path::u8string() const; +std::u8string path::generic_u8string() const; +``` + +The return type of these two methods is depending on the used C++ standard +and if `GHC_FILESYSTEM_ENFORCE_CPP17_API` is defined. On C++11, C++14 and +C++17 or when `GHC_FILESYSTEM_ENFORCE_CPP17_API` is defined, the return +type is `std::string`, and on C++20 without the define it is `std::u8string`. ### Differences in Behavior @@ -523,7 +552,7 @@ to the expected behavior. ## Release Notes -### v1.4.0 (WIP) +### [v1.4.0](https://github.com/gulrak/filesystem/releases/tag/v1.4.0) * Enhancements for [#71](https://github.com/gulrak/filesystem/issues/71), when compiled with C++20: * `char8_t` and `std::u8string` are supported where `Source` is the parameter type @@ -533,6 +562,7 @@ to the expected behavior. to the old `fs::path::u8string()` and `fs::path::generic_u8string()` API if preferred * Bugfix for `fs::proximate(p, ec)` where the internal call to `fs::current_path()` was not using the `error_code` variant, throwing possible exceptions instead of setting `ec`. +* Enhancement `LWG_2936_BEHAVIOUR` is now on by default. * Some cleanup work to reduce preprocessor directives for better readability and remove unneeded template specializations. diff --git a/include/ghc/filesystem.hpp b/include/ghc/filesystem.hpp index 191ef24..4469590 100644 --- a/include/ghc/filesystem.hpp +++ b/include/ghc/filesystem.hpp @@ -236,7 +236,7 @@ //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // ghc::filesystem version in decimal (major * 10000 + minor * 100 + patch) -#define GHC_FILESYSTEM_VERSION 10399L +#define GHC_FILESYSTEM_VERSION 10400L #if !defined(GHC_WITH_EXCEPTIONS) && (defined(__EXCEPTIONS) || defined(__cpp_exceptions) || defined(_CPPUNWIND)) #define GHC_WITH_EXCEPTIONS