Changes between Version 32 and Version 33 of SoC2013


Ignore:
Timestamp:
Apr 22, 2013, 3:46:08 PM (10 years ago)
Author:
Niall Douglas
Comment:

Added proposal for extending Boost.ASIO with async file i/o

Legend:

Unmodified
Added
Removed
Modified
  • SoC2013

    v32 v33  
    182182This project will be mentored by Christopher Kormanyos
    183183
     184=== Boost.ASIO ===
     185
     186Boost.ASIO is probably the leading asynchronous i/o implementation library in C++, followed in popularity only by libuv which is pure C. Parts of Boost.ASIO are expected to join the C++ standard library in TR2 as the official C++ networking implementation (see N3360 [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3360.pdf]). Yet something very obvious is missing: Boost.ASIO is missing asynchronous file i/o support for POSIX, yet there is a partial implementation for Microsoft Windows ([http://www.boost.org/doc/libs/1_53_0/doc/html/boost_asio/overview/windows/random_access_handle.html]).
     187
     188A very nice and useful Boost GSoC project would be to fully complete asynchronous file i/o support for Boost.ASIO and to submit it as a complete new Boost library (Boost.AFSIO?) which ties together Boost.ASIO, Boost.Thread, Boost.Filesystem etc. And in fact I have implemented most of such a library (see https://github.com/ned14/TripleGit/blob/master/triplegit/include/async_file_io.hpp), but the following items remain outstanding before it could be accepted by Boost:
     189
     1901. POSIX async i/o support is limited to a threadpooled emulation. Proper support for Linux's kaio and POSIX's aio_* interfaces would be great. Note that these APIs are extremely tricky to get working right across all POSIX platforms, especially OS X.
     191
     1922. The file i/o APIs supplied are the bare minimum. A deeper, more explicit integration with Boost.Filesystem which is currently only supported using hand written template shims would be needed.
     193
     1943. Documentation is rudimentary, even by Boost standards.
     195
     1964. Unit testing is not to Boost standards.
     197
     1985. The existing implementation is exclusively C++11 and does not use Boost's macro trickery for supporting older compilers. Some refactoring would be needed here to pass Boost peer review.
     199
     2006. The library needs to pass Boost peer review, with all the bureaucracy that involves. Do NOT underestimate the difficulty of this part - in fact, this part alone is probably 50% or more of a GSoC project. Yet it is probably the most valuable part of a Boost GSoC internship because if successful, your resume can state that ''you're the (co)author of a Boost library''. That's something only a few hundred people in the world can claim, and it will stand with you as a bright point for the rest of your career.
     201
     202This project would be (co)mentored by Niall Douglas ([http://www.nedprod.com/]).
     203
     204
    184205=== Benchmark Library ===
    185206