Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/windirstat/llfio.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNiall Douglas (s [underscore] sourceforge {at} nedprod [dot] com) <spamtrap@nedprod.com>2017-07-29 21:42:20 +0300
committerNiall Douglas (s [underscore] sourceforge {at} nedprod [dot] com) <spamtrap@nedprod.com>2017-07-29 21:42:20 +0300
commit2f570b29eb21ec017579ba64963e614f8f8004ae (patch)
tree3c53865b78300b65e93e01e534ba0220dd0cdc0c /release_notes.md
parent4aa75b021b4e4b11e8fe39ff5c80b62e4e5ab438 (diff)
Added deadline to unlink and relink.
Added timeout to ctest invocation.
Diffstat (limited to 'release_notes.md')
-rw-r--r--release_notes.md45
1 files changed, 33 insertions, 12 deletions
diff --git a/release_notes.md b/release_notes.md
index 5d52cffa..a532e679 100644
--- a/release_notes.md
+++ b/release_notes.md
@@ -1,10 +1,9 @@
Herein lies the beginnings of the proposed AFIO v2 post-peer-review rewrite. Its github
source code repository lives at https://github.com/ned14/boost.afio.
-<b>master branch test status</b> Linux: [![Build Status](https://travis-ci.org/ned14/boost.afio.svg?branch=master)](https://travis-ci.org/ned14/boost.afio) Windows: [![Build status](https://ci.appveyor.com/api/projects/status/ox59o2r276xbmef7/branch/master?svg=true)](https://ci.appveyor.com/project/ned14/boost-afio/branch/master) Coverage: Boost.KernelTest support for coveralls.io still todo <b>CMake dashboard</b>: http://my.cdash.org/index.php?project=AFIO
+<b>master branch test status</b> Linux: <a href="https://travis-ci.org/ned14/afio"><img src="https://travis-ci.org/ned14/afio.svg?branch=master"></a> Windows: <em>disabled due to lack of VS2017.3 on CI</em> <b>CMake dashboard</b>: http://my.cdash.org/index.php?project=AFIO
-\note Note that this code is so early alpha that no substantial test code exists
-yet. Nobody should use this code for anything serious.
+\note Note that this code is of late alpha quality. Be careful when using it!
You need these compilers or better:
- GCC 7.0
@@ -12,42 +11,53 @@ You need these compilers or better:
- VS2017 Update 3
-## Architecture and design:
+## v2 architecture and design implemented:
| NEW in v2 | Boost peer review feedback | |
| --------- | -------------------------- | --- |
| ✔ | ✔ | Universal native handle/fd abstraction instead of `void *`.
| ✔ | ✔ | Perfectly/Ideally low memory (de)allocation per op (usually none).
| ✔ | ✔ | noexcept API throughout returning error_code for failure instead of throwing exceptions.
-| ✔ | ✔ | AFIO v1 handle type split into hierarchy of types:<ol><li>handle - provides open, close, get path, clone, set/unset append only, change caching, characteristics<li>io_handle - adds synchronous scatter-gather i/o, byte range locking<li>file_handle - adds open/create file, get and set maximum extent<li>async_file_handle - adds asynchronous scatter-gather i/o</ol>
+| ✔ | ✔ | AFIO v1 handle type split into hierarchy of types:<ol><li>handle - provides open, close, get path, clone, set/unset append only, change caching, characteristics<li>path_handle - a race free anchor to a subset of the filesystem<li>io_handle - adds synchronous scatter-gather i/o, byte range locking<li>file_handle - adds open/create file, get and set maximum extent<li>async_file_handle - adds asynchronous scatter-gather i/o</ol>
| ✔ | ✔ | Cancelable i/o (made possible thanks to dropping XP support).
| ✔ | ✔ | All shared_ptr usage removed as all use of multiple threads removed.
-| ✔ | ✔ | Use of std::vector to transport scatter-gather sequences replaced with C++ 2x `span<>` borrowed views.
+| ✔ | ✔ | Use of std::vector to transport scatter-gather sequences replaced with C++ 20 `span<>` borrowed views.
| ✔ | ✔ | Completion callbacks are now some arbitrary type `U&&` instead of a future continuation. Type erasure for its storage is bound into the one single memory allocation for everything needed to execute the op, and so therefore overhead is optimal.
| ✔ | ✔ | Filing system algorithms made generic and broken out into public `afio::algorithms` template library (the AFIO FTL).
| ✔ | ✔ | Abstraction of native handle management via bitfield specified "characteristics".
| ✔ | | Storage profiles, a YAML database of behaviours of hardware, OS and filing system combinations.
| ✔ | | Absolute and interval deadline timed i/o throughout (made possible thanks to dropping XP support).
| ✔ | | Dependency on ASIO/Networking TS removed completely.
-| ✔ | | Three choices of algorithm implementing a shared filing system mutex.
+| ✔ | | Four choices of algorithm implementing a shared filing system mutex.
| ✔ | | Uses CMake, CTest, CDash and CPack with automatic usage of C++ Modules or precompiled headers where available.
| ✔ | | Far more comprehensive memory map and virtual memory facilities.
-| P | | New multithreaded kernel based testing infrastructure based on LLVM which can permute/fuzz/<b>edge</b> coverage/mock each test kernel with choices of asan/lsan/msan/ubsan/none sanitisation. This new test infrastructure should make possible (one day) <b>formal proof</b> that AFIO's implementation is mathematically correct.
+| ✔ | | Much more granular, micro level unit testing of individual functions.
+| ✔ | | Much more granular, micro level internal logging of every code path taken.
+| ✔ | | Path views used throughout, thus avoiding string copying and allocation in `std::filesystem::path`.
+| ✔ | | Paths are equally interpreted as UTF-8 on all platforms.
+Todo:
-## Features implemented:
+| P | | clang AST assisted SWIG bindings for other languages.
+| P | | Statistical tracking of operation latencies.
+
+
+
+## Planned features implemented:
| NEW in v2 | Windows | POSIX | |
| --------- | --------| ----- | --- |
| ✔ | ✔ | ✔ | Native handle cloning.
| ✔ (up from four) | ✔ | ✔ | Maximum possible (seven) forms of kernel caching.
| | ✔ | ✔ | Absolute path open.
-| | | | Relative path open ("fat paths").
+| | ✔ | ✔ | Relative "anchored" path open enabling race free file system.
| ✔ | ✔ | | Win32 path support (260 path limit).
-| | | | NT kernel path support (32,768 path limit).
+| | ✔ | | NT kernel path support (32,768 path limit).
| ✔ | ✔ | ✔ | Synchronous universal scatter-gather i/o.
| ✔ (POSIX AIO support) | ✔ | ✔ | Asynchronous universal scatter-gather i/o.
-| ✔ | ✔ | ✔ | i/o cancellation.
+| | | | BSD and OS X kqueues optimised `io_service`
+| ✔ | | | Linux KAIO support for native async `O_DIRECT` i/o
+| ✔ | ✔ | ✔ | i/o deadlines and cancellation.
| | ✔ | ✔ | Retrieving and setting the current maximum extent (size) of an open file.
| | ✔ | ✔ | statfs_t ported over from AFIO v1.
| | ✔ | ✔ | utils namespace ported over from AFIO v1.
@@ -57,4 +67,15 @@ You need these compilers or better:
| ✔ | ✔ | ✔ | `shared_fs_mutex` shared/exclusive entities locking based on atomic append
| | ✔ | ✔ | Memory mapped files and virtual memory management (`section_handle` and `map_handle`)
| ✔ | ✔ | ✔ | `shared_fs_mutex` shared/exclusive entities locking based on memory maps
+| ✔ | ✔ | ✔ | Universal portable UTF-8 path views.
+
+Todo:
+| | | | "Hole punching" and hole enumeration ported over from AFIO v1.
+| | | | Directory handles and very fast directory enumeration ported over from AFIO v1.
+| ✔ | | | Extended attributes support.
+| | | | Reliable directory hierarchy deletion algorithm.
+| | | | Reliable directory hierarchy copy algorithm.
+| ✔ | | | Reliable directory hierarchy update (two and three way) algorithm.
+| ✔ | | | Algorithm to replace all duplicate content with hard links.
+| ✔ | | | Algorithm to figure out all paths for a hard linked inode.