mirror of
https://github.com/gulrak/filesystem.git
synced 2026-07-30 16:26:11 +08:00
Bump version to 1.5.16 and update README with platform and CI changes
This commit is contained in:
parent
29b5acd3d6
commit
c306390e0d
@ -1,5 +1,5 @@
|
|||||||
cmake_minimum_required(VERSION 3.7.2)
|
cmake_minimum_required(VERSION 3.7.2)
|
||||||
project(ghcfilesystem VERSION 1.5.15)
|
project(ghcfilesystem VERSION 1.5.16)
|
||||||
|
|
||||||
if (POLICY CMP0077)
|
if (POLICY CMP0077)
|
||||||
cmake_policy(SET CMP0077 NEW)
|
cmake_policy(SET CMP0077 NEW)
|
||||||
|
|||||||
79
README.md
79
README.md
@ -4,7 +4,7 @@
|
|||||||
[](https://ci.appveyor.com/project/gulrak/filesystem)
|
[](https://ci.appveyor.com/project/gulrak/filesystem)
|
||||||
[](https://cirrus-ci.com/github/gulrak/filesystem)
|
[](https://cirrus-ci.com/github/gulrak/filesystem)
|
||||||
[](https://coveralls.io/github/gulrak/filesystem?branch=master)
|
[](https://coveralls.io/github/gulrak/filesystem?branch=master)
|
||||||
[](https://github.com/gulrak/filesystem/tree/v1.5.14)
|
[](https://github.com/gulrak/filesystem/tree/v1.5.16)
|
||||||
<!-- [](https://cloud.drone.io/gulrak/filesystem) -->
|
<!-- [](https://cloud.drone.io/gulrak/filesystem) -->
|
||||||
|
|
||||||
|
|
||||||
@ -40,17 +40,19 @@
|
|||||||
# Filesystem
|
# Filesystem
|
||||||
|
|
||||||
This is a header-only single-file `std::filesystem` compatible helper library,
|
This is a header-only single-file `std::filesystem` compatible helper library,
|
||||||
based on the C++17 and C++20 specs, but implemented for C++11, C++14, C++17 or C++20
|
based on the C++17 and C++20 specifications, but implemented for C++11, C++14,
|
||||||
(tightly following the C++17 standard with very few documented exceptions). It is currently tested on
|
C++17, and C++20. It closely follows the C++17 standard with a few documented
|
||||||
macOS 10.12/10.14/10.15/11.6, Windows 10, Ubuntu 18.04, Ubuntu 20.04, CentOS 7, CentOS 8, FreeBSD 12,
|
exceptions.
|
||||||
Alpine ARM/ARM64 Linux and Solaris 10 but should work on other systems too, as long as you have
|
|
||||||
at least a C++11 compatible compiler. It should work with Android NDK, Emscripten and I even
|
Automated CI currently covers macOS, Windows, Ubuntu, Rocky Linux, and FreeBSD,
|
||||||
had reports of it being used on iOS (within sandboxing constraints) and with v1.5.6 there
|
including both current and legacy compiler toolchains. The library has also
|
||||||
is experimental support for QNX. The support of Android NDK, Emscripten, QNX, and since 1.5.14
|
been reported to work on Android, iOS, Emscripten, QNX, GNU/Hurd, Haiku,
|
||||||
GNU/Hurd and Haiku is not backed up by automated testing but PRs and bug reports are welcome
|
Solaris, and other Unix-like systems, but those platforms are not continuously
|
||||||
for those too and they are reported to work.
|
tested. PRs that allow testing any of those are welcome.
|
||||||
It is of course in its own namespace `ghc::filesystem` to not interfere with a regular `std::filesystem`
|
|
||||||
should you use it in a mixed C++17 environment (which is possible).
|
It is of course in its own namespace `ghc::filesystem` to not interfere with a
|
||||||
|
regular `std::filesystem` should you use it in a mixed C++17 environment
|
||||||
|
(which is possible).
|
||||||
|
|
||||||
*Test coverage is well above 90%, and starting with v1.3.6 and in v1.5.0
|
*Test coverage is well above 90%, and starting with v1.3.6 and in v1.5.0
|
||||||
more time was invested in benchmarking and optimizing parts of the library. I'll try
|
more time was invested in benchmarking and optimizing parts of the library. I'll try
|
||||||
@ -90,39 +92,42 @@ to do with Haskell**, sorry for the name clash).
|
|||||||
|
|
||||||
## Platforms
|
## Platforms
|
||||||
|
|
||||||
`ghc::filesystem` is developed on macOS but CI tested on macOS, Windows,
|
`ghc::filesystem` is developed on macOS and continuously tested using GitHub
|
||||||
various Linux Distributions, FreeBSD and starting with v1.5.12 on Solaris.
|
Actions, AppVeyor, and Cirrus CI. The current automated matrix includes:
|
||||||
It should work on any of these with a C++11-capable compiler. Also there are some
|
|
||||||
checks to hopefully better work on Android, but as I currently don't test with the
|
* macOS 14 and 15 on Apple Silicon with AppleClang
|
||||||
Android NDK, I wouldn't call it a supported platform yet, same is valid for using
|
* Windows with Visual Studio 2015, 2017, 2019, and 2022 toolchains, including
|
||||||
it with Emscripten. It is now part of the detected platforms, I fixed the obvious
|
the MSVC v142 toolset
|
||||||
issues and ran some tests with it, so it should be fine. All in all, I don't see it
|
* Windows MSYS2 with MinGW64 GCC, UCRT64 GCC, and Clang64
|
||||||
replacing `std::filesystem` where full C++17 or C++20 is available, it doesn't try
|
* Ubuntu 22.04 and 24.04 with GCC 11-13 and Clang 15/18
|
||||||
to be a "better" `std::filesystem`, just an almost drop-in if you can't use it
|
* Legacy Docker builds with GCC 5-8 and Clang 6-9
|
||||||
(with the exception of the UTF-8 preference).
|
* Rocky Linux 8 and 9
|
||||||
|
* FreeBSD 14
|
||||||
|
|
||||||
|
Modern CI jobs exercise C++11, C++17, and C++20 where supported. Platforms not
|
||||||
|
listed above may still work, but are not covered by the current automated test
|
||||||
|
matrix.
|
||||||
|
|
||||||
|
People use it on Android, iOS, Emscripten, QNX, GNU/Hurd, Haiku, Solaris, and
|
||||||
|
other Unix-like systems but continous CI coverage is missing.
|
||||||
|
|
||||||
|
It _should_ work on any Windows or POSIX platform with a C++11-capable compiler.
|
||||||
|
All in all, I don't see it replacing `std::filesystem` where full C++17 or C++20
|
||||||
|
is available, it doesn't try to be a "better" `std::filesystem`, just an almost
|
||||||
|
drop-in if you can't use it (with the exception of the UTF-8 preference).
|
||||||
|
|
||||||
:information_source: **Important:** _This implementation is following the ["UTF-8 Everywhere" philosophy](https://utf8everywhere.org/) in that all
|
:information_source: **Important:** _This implementation is following the ["UTF-8 Everywhere" philosophy](https://utf8everywhere.org/) in that all
|
||||||
`std::string` instances will be interpreted the same as `std::u8string` encoding
|
`std::string` instances will be interpreted the same as `std::u8string` encoding
|
||||||
wise and as being in UTF-8. The `std::u16string` will be seen as UTF-16. See *Differences in API*
|
wise and as being in UTF-8. The `std::u16string` will be seen as UTF-16. See *Differences in API*
|
||||||
for more information._
|
for more information._
|
||||||
|
|
||||||
Unit tests are currently run with:
|
|
||||||
|
|
||||||
* macOS 10.12: Xcode 9.2 (clang-900.0.39.2), GCC 9.2, Clang 9.0, macOS 10.13: Xcode 10.1, macOS 10.14: Xcode 11.2, macOS 10.15: Xcode 11.6, Xcode 12.4
|
|
||||||
* Windows: Visual Studio 2017, Visual Studio 2015, Visual Studio 2019, MinGW GCC 6.3 (Win32), GCC 7.2 (Win64), Cygwin GCC 10.2 (no CI yet)
|
|
||||||
* Linux (Ubuntu): GCC (5.5, 6.5, 7.4, 8.3, 9.2), Clang (5.0, 6.0, 7.1, 8.0, 9.0)
|
|
||||||
* ~~Linux (Alpine ARM/ARM64): GCC 9.2.0~~ (The Drone build scripts stopped working,
|
|
||||||
as they where a contribution, I couldn't figure out what went wrong, any help appreciated.)
|
|
||||||
* FreeBSD: Clang 8.0
|
|
||||||
* Solaris: GCC 5.5
|
|
||||||
|
|
||||||
|
|
||||||
## Tests
|
## Tests
|
||||||
|
|
||||||
The header comes with a set of unit-tests and uses [CMake](https://cmake.org/)
|
The header comes with a set of unit-tests and uses [CMake](https://cmake.org/)
|
||||||
as a build tool and [Catch2](https://github.com/catchorg/Catch2) as test framework.
|
as a build tool and [Catch2](https://github.com/catchorg/Catch2) as test framework.
|
||||||
All tests are registered with in CMake, so the [ctest](https://cmake.org/cmake/help/latest/manual/ctest.1.html)
|
All tests are registered with CMake, so the [ctest](https://cmake.org/cmake/help/latest/manual/ctest.1.html)
|
||||||
commando can be used to run the tests.
|
command can be used to run the tests.
|
||||||
|
|
||||||
All tests against this implementation should succeed, depending on your environment
|
All tests against this implementation should succeed, depending on your environment
|
||||||
it might be that there are some warnings, e.g. if you have no rights to create
|
it might be that there are some warnings, e.g. if you have no rights to create
|
||||||
@ -154,8 +159,8 @@ in the standard, and there might be issues in these implementations too.
|
|||||||
|
|
||||||
### Downloads
|
### Downloads
|
||||||
|
|
||||||
The latest release version is [v1.5.14](https://github.com/gulrak/filesystem/tree/v1.5.14) and
|
The latest release version is [v1.5.16](https://github.com/gulrak/filesystem/tree/v1.5.16) and
|
||||||
source archives can be found [here](https://github.com/gulrak/filesystem/releases/tag/v1.5.14).
|
source archives can be found [here](https://github.com/gulrak/filesystem/releases/tag/v1.5.16).
|
||||||
|
|
||||||
The latest pre-native-backend version is [v1.4.0](https://github.com/gulrak/filesystem/tree/v1.4.0) and
|
The latest pre-native-backend 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).
|
source archives can be found [here](https://github.com/gulrak/filesystem/releases/tag/v1.4.0).
|
||||||
@ -648,7 +653,7 @@ to the expected behavior.
|
|||||||
|
|
||||||
## Release Notes
|
## Release Notes
|
||||||
|
|
||||||
### v1.5.15 (wip)
|
### v1.5.16
|
||||||
|
|
||||||
* Fix for [#203](https://github.com/gulrak/filesystem/issues/203), directory
|
* Fix for [#203](https://github.com/gulrak/filesystem/issues/203), directory
|
||||||
iteration and `proximate()` are available in builds without exception
|
iteration and `proximate()` are available in builds without exception
|
||||||
|
|||||||
@ -292,7 +292,7 @@
|
|||||||
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
|
||||||
// ghc::filesystem version in decimal (major * 10000 + minor * 100 + patch)
|
// ghc::filesystem version in decimal (major * 10000 + minor * 100 + patch)
|
||||||
#define GHC_FILESYSTEM_VERSION 10515L
|
#define GHC_FILESYSTEM_VERSION 10516L
|
||||||
|
|
||||||
#if !defined(GHC_WITH_EXCEPTIONS) && (defined(__EXCEPTIONS) || defined(__cpp_exceptions) || defined(_CPPUNWIND))
|
#if !defined(GHC_WITH_EXCEPTIONS) && (defined(__EXCEPTIONS) || defined(__cpp_exceptions) || defined(_CPPUNWIND))
|
||||||
#define GHC_WITH_EXCEPTIONS
|
#define GHC_WITH_EXCEPTIONS
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user