major refactor of file/io and alignment code. requires update-workspaces
. completely rewrite waio - use IOCP, add several hardcore optimizations. now outperforms the
AS SSD and ATTO benchmarks when writing
. refactor file interface - use LIO_READ instead of 'r', allow access to file descriptor.
. completely rewrite the IO wrapper. now much more simple, less CPU overhead, adds
support for pre-issue/post-completion hooks and preallocation. io::Run defaults to simple synchronous IO; use io::Parameters to get asynchronous.
. add alignment.h with constants and Align() function template (more efficient than
round_up for compile-time constants)
. add UniqueRange - similar to C++0x unique_ptr (emulated for C++03), plus a
built-in size. avoids expensive thread-safe reference counting in shared_ptr.
cleanup:
- move fat_time functions into archive_zip
- remove no longer needed io_align and block_cache
- reduce dependencies in sysdep/compiler (move parts to code_annotation.h)
- move IOCP into separate file (reused by waio)