diff options
author | Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com) <spamtrap@nedprod.com> | 2017-07-29 21:42:20 +0300 |
---|---|---|
committer | Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com) <spamtrap@nedprod.com> | 2017-07-29 21:42:20 +0300 |
commit | 2f570b29eb21ec017579ba64963e614f8f8004ae (patch) | |
tree | 3c53865b78300b65e93e01e534ba0220dd0cdc0c /release_notes.md | |
parent | 4aa75b021b4e4b11e8fe39ff5c80b62e4e5ab438 (diff) |
Added deadline to unlink and relink.
Added timeout to ctest invocation.
Diffstat (limited to 'release_notes.md')
-rw-r--r-- | release_notes.md | 45 |
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. |