Changes between Version 27 and Version 28 of SoC2014
- Timestamp:
- Feb 9, 2014, 2:06:49 PM (9 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
SoC2014
v27 v28 18 18 We strongly suggest that students interested in developing a proposal for Boost discuss their ideas on the mailing list in order to help refine the requirements and goals. Students who actively discuss projects on the mailing list are also ranked before those that do not. 19 19 20 == Projects ==20 == Self-contained standalone GSoC Projects == 21 21 The following projects have been suggested by potential mentors. If the descriptions of these projects seem a little vague... Well, that's intentional. We are looking for students to develop requirements for their proposals by doing initial background research on the topic, and interacting with the community on the mailing list to help identify expectations. 22 22 … … 89 89 Paul Bristow and John Maddock regarding algorithmic expertise and Boost infrastructure. 90 90 91 === Boost.AFIO (proposed) Improvements ===91 === Boost.AFIO (proposed) Improvements to async file i/o and closure execution engine === 92 92 Proposed Boost.AFIO is a linear scalable, batch, chainable, asynchronous closure execution engine with an almost wait free implementation (it is wait free if the CPU supports memory transactions) extending Boost.ASIO and Boost.Thread specialised as a portable asynchronous file i/o implementation library. Proposed Boost.AFIO was successfully ported to Boost during GSoC 2013 by Paul Kirth, and entered the Boost peer review queue in October 2013. If it passes peer review, AFIO is thought likely to be the first C++ 11 only library to enter Boost. You can see AFIO's Boost documentation at https://ci.nedprod.com/job/Boost.AFIO%20Build%20Documentation/Boost.AFIO_Documentation and its current continuous integration buildbot status and source code at https://github.com/BoostGSoC/boost.afio (scroll to bottom for present CI buildbot status). You are encouraged to read the AFIO documentation '''extensively''' before writing a GSoC proposal, and ask questions on boost-dev where needed. 93 93 … … 104 104 5. By the time GSoC begins AFIO ought to have a finished async batch hash engine which provides SHA256, CityHash and SpookyHash. Additional hash implementations would be very useful. Before you think you can copy and paste in existing hash implementations, be aware that AFIO requires you to completely rewrite them into batch SIMD (SSE2, AVX and preferably ARM NEON) and implement considerable C++ metaprogramming to tell the compiler how to optimally assemble the implementation. Difficulty level of this item is ''hard'', but very suitable for low level type programmers who like writing in assembly but also like C++ metaprogramming. The batch hash engine can be seen at https://github.com/BoostGSoC/boost.afio/blob/content_hashing_merge/boost/afio/hash_engine.hpp, and an example of the SIMD programming you'd have to do at https://github.com/BoostGSoC/boost.afio/blob/content_hashing_merge/boost/afio/detail/impl/hashes/4-sha256/sha256-neon.c. 105 105 106 This project would be mentored by Niall Douglas (http://www.nedprod.com/). Due to limits on free time, Iwould only be able to mentor one student this summer, and I generally provide a programming test based on AFIO to students whose have submitted proposals to ensure that their coding ability is minimally sufficient to be able to attempt a GSoC. Benefits for the student of a successful GSoC in this area are many: high performance async programming experience is very desirable in the marketplace right now, and getting your name attached to authorship of a Boost library is a shining bright light on a resume which will stand to your career for years to come. You will gain bleeding edge experience programming exclusively in C++11 across the main toolsets of Visual Studio, GCC and clang AND writing portable code for the main operating system platforms of Microsoft Windows, Linux, and BSD/OS X - again, all very desirable skills to have in the marketplace. For those of you looking at a career in computer science research, and depending on the success of your outcomes, you may even be able to pass peer review to present your work at the C++ Now conference held annually in May. Good luck with your GSoC applications!106 This project could be mentored by Niall Douglas (http://www.nedprod.com/), and possibly Dr. Hartmut Kaiser (https://www.cct.lsu.edu/~hkaiser/). Due to limits on free time especially as I am also Boost GSoC admin this year, I (Niall) would only be able to mentor one student this summer, and I generally provide a programming test based on AFIO to students whose have submitted proposals to ensure that their coding ability is minimally sufficient to be able to attempt a GSoC. Benefits for the student of a successful GSoC in this area are many: high performance async programming experience is very desirable in the marketplace right now, and getting your name attached to authorship of a Boost library is a shining bright light on a resume which will stand to your career for years to come. You will gain bleeding edge experience programming exclusively in C++11 across the main toolsets of Visual Studio, GCC and clang AND writing portable code for the main operating system platforms of Microsoft Windows, Linux, and BSD/OS X - again, all very desirable skills to have in the marketplace. For those of you looking at a career in computer science research, and depending on the success of your outcomes, you may even be able to pass peer review to present your work at the C++ Now conference held annually in May. Good luck with your GSoC applications! 107 107 108 108 === Boost.odeint === … … 166 166 Some performance measures comparing using the higher level monads interface and the hand written solution should be provided. 167 167 168 Functional programming background is a must as well as understanding Monads in Haskell l.168 Functional programming background is a must as well as understanding Monads in Haskell. 169 169 170 170 [1] http://yapb-soc.blogspot.fr/2012/10/monads-in-c.html … … 172 172 In addition to provide the common interface to some of the Boost monads, the project could add the State monad. 173 173 174 This project could be mentored by ?. 174 175 175 176 … … 186 187 [3] http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3872.pdf 187 188 188 This project could be mentored by Vicente J. Botet Escriba 189 This project could be mentored by Vicente J. Botet Escriba and possibly Dr. Hartmut Kaiser. 189 190 190 191 === Boost.Thread / Scheduler-Executor === … … 196 197 [2] https://github.com/boostorg/thread/tree/develop/include/boost/thread/executors 197 198 198 This project could be mentored by Vicente J. Botet Escriba 199 This project could be mentored by Vicente J. Botet Escriba and possibly Dr. Hartmut Kaiser. 199 200 200 201 … … 206 207 207 208 208 This project could be mentored by Vicente J. Botet Escriba 209 This project could be mentored by Vicente J. Botet Escriba and possibly Dr. Hartmut Kaiser. 209 210 210 211 … … 219 220 220 221 [2] https://svn.boost.org/svn/boost/sandbox/fixed_point/ 222 223 This project could be mentored by ?. 224 221 225 222 226 === Boost.Chrono / Date === … … 245 249 [1] https://github.com/panaseleus/stack_unwinding#d-style-scope-guardsactions 246 250 251 This project could be mentored by ?. 252 253 247 254 === Boost.Pipelines === 248 255 … … 254 261 255 262 This project could be mentored by Vicente J. Botet Escriba 263 256 264 257 265 === Boost.XML === … … 310 318 This project could be mentored by Vicente J. Botet Escriba 311 319 312 == Ideas == 313 314 Here you find a lot of ideas which have been mentioned on the Boost mailing list. Boost developers can use these ideas to create new projects (and add them to the list of projects above). And students can use them as start points to propose projects themselves. While these ideas are by far not as concrete as projects in the list above, they give students an idea what else they can work on within Boost. They also give students a chance to propose exactly the kind of project they'd like to work on instead of picking one from the predefined projects from above. 315 316 === Boost libraries (extending/overhauling/finishing) === 320 = Ideas = 321 322 If after reading all of the standalone project ideas above you are finding that none excites you, we have collected below a series of smaller work items none of which alone would be big enough to make up a full GSoC, but which could be combined to form a very valuable GSoC indeed. The following would be excellent start points for students to propose projects themselves. While these ideas are by far not as concrete as projects in the list above, they give students an idea what else they can work on within Boost. They also give students a chance to propose exactly the kind of project they'd like to work on instead of picking one from the predefined projects from above. 323 324 Students interested in proposing a mix of the below work items should propose their mix on the Boost mailing list. We will then figure out a suitable mentor for you. 325 326 == Boost libraries (extending/overhauling/finishing) == 317 327 * Reliable UDP (may UDT) for Boost.Asio 318 328 * USB for Boost.Asio … … 326 336 * Replace all uses of CAS spinlocks in all Boost libraries with memory transactions via BOOST_BEGIN_MEMORY_TRANSACTION. See https://svn.boost.org/trac/boost/ticket/9615. 327 337 328 == = Algorithms ===338 == Algorithms == 329 339 * Radix sort 330 340 * Approximate string matching … … 335 345 * Kinetic scrolling 336 346 337 == = Data strutures ===347 == Data strutures == 338 348 * Trie data structure, extending the work done during GSoC 2013. 339 349 * B-tree data structure … … 341 351 * Slim string (as opposed to the fat std::string interface, maybe immutable, maybe policy based) 342 352 343 == = Media ===353 == Media == 344 354 * Hardware graphics (OpenGL/OpenGL ES/DirectX abstraction) 345 355 * Audio library (OpenAL/FMOD/etc) 346 356 * Video processing library (gil for video) 347 357 348 == = Games ===358 == Games == 349 359 * Physics library (ODE/Havok/PhysX/etc abstraction) 350 360 * Input library (like DirectInput/XInput) 351 361 * Ranking algorithms (elo/TrueSkill) 352 362 353 == = Databases ===363 == Databases == 354 364 * Relational database library (http://www.crystalclearsoftware.com/cgi-bin/boost_wiki/wiki.pl?Relational_Database_Access) 355 365 * Document database library (couchdb/mongodb/etc) 356 366 * Spatial indexes 357 367 358 == = Math ===368 == Math == 359 369 360 370 * Geometry library (convince the developers to submit Eigen 3 to Boost) 361 371 * Investigate exporting multiple-precision types to Python via Boost.Python and interoperability with "symbolic python". See: [http://sympy.org/en/index.html] 362 372 363 == = Memory ===373 == Memory == 364 374 * Memcache library 365 375 * Memswap algorithm 366 376 367 == = File formats ===377 == File formats == 368 378 * JSON parsing libary 369 379 * XML library 370 380 371 == = Communication ===381 == Communication == 372 382 * Channel library (http://channel.sourceforge.net/) 373 383 * RPC 374 384 375 == = GUI ===385 == GUI == 376 386 * GUI library 377 387 378 == = C++ "extensions" ===388 == C++ "extensions" == 379 389 * Type switch library (http://tinyurl.com/n3449) 380 390 381 == = Hardware ===391 == Hardware == 382 392 * CPUID