| 184 | === Boost.ASIO === |
| 185 | |
| 186 | Boost.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 | |
| 188 | A 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 | |
| 190 | 1. 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 | |
| 192 | 2. 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 | |
| 194 | 3. Documentation is rudimentary, even by Boost standards. |
| 195 | |
| 196 | 4. Unit testing is not to Boost standards. |
| 197 | |
| 198 | 5. 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 | |
| 200 | 6. 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 | |
| 202 | This project would be (co)mentored by Niall Douglas ([http://www.nedprod.com/]). |
| 203 | |
| 204 | |