[GSOC] Mentors for a C++11 TMP-related project
Hi, I am a student considering to apply for GSOC 2014. Short story =========== I would like to know if someone is interested to mentor a project whose aim is boldly to: - Document the current state of the art in C++11 template metaprogramming. - Propose modifications to the current Boost.MPL or perhaps write a TMP library as a successor to the MPL. Full story ========== I have been working on a C++11 TMP library[1] for a while now, and I will present the state of my work at C++Now 2014. In the process of writing the library, I experiment with several TMP techniques, which I document and benchmark. The goal is to propose a new library that improves over the current MPL in a measurable way (i.e. it's not just my preference). That library could be seen as a C++11 successor to the MPL and new code could use that instead of the MPL. Now, while I expect the library to be fairly advanced by the beginning of the summer, there will certainly be criticism when I present it publicly. I see two possibilities here: (1) Input is negative enough that the idea to propose it is dropped. In that case, I could work on improvements to the current MPL during the summer. The kind of improvements I'm talking about range from documentation to bugfixes to support for C++11 when available. (2) Input is generally positive and the library is proposed circa the beginning of the summer. If the library is refused, then I'm back to (1). Otherwise, I can work on improvements and modifications required for the library to officially make it in. In both cases, the scope of the project seems reasonable to me. There is nothing similar in the list of proposed GSOC projects, so if someone is interested in mentoring this project, please speak up. I will then go through the normal process for proposing GSOC projects and include a more detailed description of it, and we'll see what happens. Regards, Louis Dionne [1]: http://github.com/ldionne/mpl11
On 8 Mar 2014 at 16:58, Louis Dionne wrote:
I would like to know if someone is interested to mentor a project whose aim is boldly to: - Document the current state of the art in C++11 template metaprogramming.
Replace "Document" with "Review" and I think Google will be happier. They don't fund writing literature reviews.
- Propose modifications to the current Boost.MPL or perhaps write a TMP library as a successor to the MPL.
You'll need to be more concrete for GSoC. Explicit work items e.g. replacing all faux variadic templates with real variadic templates.
I have been working on a C++11 TMP library[1] for a while now, and I will present the state of my work at C++Now 2014. In the process of writing the library, I experiment with several TMP techniques, which I document and benchmark. The goal is to propose a new library that improves over the current MPL in a measurable way (i.e. it's not just my preference). That library could be seen as a C++11 successor to the MPL and new code could use that instead of the MPL.
I think I am not alone in considering your presentation at C++ Now 2014 to be a must see. The two other people presenting same slot as you (provisional) are very strong and talking on important topics, but yours I think will be the most popular for library writers.
(1) Input is negative enough that the idea to propose it is dropped. In that case, I could work on improvements to the current MPL during the summer. The kind of improvements I'm talking about range from documentation to bugfixes to support for C++11 when available.
(2) Input is generally positive and the library is proposed circa the beginning of the summer. If the library is refused, then I'm back to (1). Otherwise, I can work on improvements and modifications required for the library to officially make it in.
In both cases, the scope of the project seems reasonable to me.
Your mentor and you can decide anything for GSoC, even something very controversial. Obviously you need the Boost community to rank your proposal highly, but if say you get a member of the Boost steering committee to mentor you, I would doubt anyone would rank such a proposal poorly. After all, you have written actual implementation code which proves you've thought about the problem deeply, and that puts you way ahead of most other candidates. I haven't looked at your MPL11 replacement library closely enough to say whether it's a good replacement for MPL. My personal single biggest concern is that I think you need Concepts in the language before an MPL replacement can really fly, and that probably removes Visual Studio from available compilers which is a showstopper. I certainly am looking forward hugely to your C++ Now presentation to learn more.
There is nothing similar in the list of proposed GSOC projects, so if someone is interested in mentoring this project, please speak up. I will then go through the normal process for proposing GSOC projects and include a more detailed description of it, and we'll see what happens.
I think you need to get a suitable mentor before all else, but if you do, I'd say your golden. Niall --- Boost C++ Libraries Google Summer of Code 2014 admin https://svn.boost.org/trac/boost/wiki/SoC2014
Niall Douglas
- Document the current state of the art in C++11 template metaprogramming.
Replace "Document" with "Review" and I think Google will be happier. They don't fund writing literature reviews.
Will do.
- Propose modifications to the current Boost.MPL or perhaps write a TMP library as a successor to the MPL.
You'll need to be more concrete for GSoC. Explicit work items e.g. replacing all faux variadic templates with real variadic templates.
No problem, it should be possible to get fairly specific. I'll be sure to do that when/if I apply.
I think I am not alone in considering your presentation at C++ Now 2014 to be a must see. The two other people presenting same slot as you (provisional) are very strong and talking on important topics, but yours I think will be the most popular for library writers.
Thanks. This is both encouraging and scary :).
Your mentor and you can decide anything for GSoC, even something very controversial. Obviously you need the Boost community to rank your proposal highly, but if say you get a member of the Boost steering committee to mentor you, I would doubt anyone would rank such a proposal poorly. After all, you have written actual implementation code which proves you've thought about the problem deeply, and that puts you way ahead of most other candidates.
Thanks for the pointer; I will try to get in touch with someone on the steering committee.
I haven't looked at your MPL11 replacement library closely enough to say whether it's a good replacement for MPL. My personal single biggest concern is that I think you need Concepts in the language before an MPL replacement can really fly, and that probably removes Visual Studio from available compilers which is a showstopper. I certainly am looking forward hugely to your C++ Now presentation to learn more.
May I ask why would Concepts be necessary for a "new MPL"? Do you have anything more specific in mind? I would like to know because that might influence my current work. Thank you for your helpful reply, Louis Dionne
On 9 Mar 2014 at 19:47, Joel Falcou wrote:
If this proposal maes it, I'll volunteer to mentor it.
Wow, thank you Joel. There are few better than you to do so. Niall --- Boost C++ Libraries Google Summer of Code 2014 admin https://svn.boost.org/trac/boost/wiki/SoC2014
Joel Falcou
If this proposal maes it, I'll volunteer to mentor it.
I take it that you refer to the proposal of MPL11 as a Boost library, not the overall GSoC project. For the result of that proposal to be known in time for the GSoC application deadline, I would need to propose it very soon (it might even be too late?). Unfortunately, I think this is unrealistic given that I can only work so much on the MPL11 during school. However, I could make an official pre-proposal asking for comments in order to gauge interest, while making it clear which aspects of the library are not done, and what I plan to do for those. If the feedback was satisfying, would it be enough for you to go ahead with the GSoC project? Thank you, Louis Dionne
On 9 Mar 2014 at 20:05, Louis Dionne wrote:
However, I could make an official pre-proposal asking for comments in order to gauge interest, while making it clear which aspects of the library are not done, and what I plan to do for those. If the feedback was satisfying, would it be enough for you to go ahead with the GSoC project?
I would definitely come up with a proposal specifying a reasonable amount of work for a summer project and post it here. We'll help you get it into a state where the Boost community will rank it highly, after all, it's the same people here advising you who will be doing the ranking! Also, having Joel onboard as your mentor is a huge added advantage. You really lucked out there, congrats! Niall --- Boost C++ Libraries Google Summer of Code 2014 admin https://svn.boost.org/trac/boost/wiki/SoC2014
Niall Douglas
I would definitely come up with a proposal specifying a reasonable amount of work for a summer project and post it here. We'll help you get it into a state where the Boost community will rank it highly, after all, it's the same people here advising you who will be doing the ranking!
Alright. I'll come back with a proposal in the next days. Thanks for your help, Louis Dionne
On 9 Mar 2014 at 13:01, Louis Dionne wrote:
I haven't looked at your MPL11 replacement library closely enough to say whether it's a good replacement for MPL. My personal single biggest concern is that I think you need Concepts in the language before an MPL replacement can really fly, and that probably removes Visual Studio from available compilers which is a showstopper. I certainly am looking forward hugely to your C++ Now presentation to learn more.
May I ask why would Concepts be necessary for a "new MPL"? Do you have anything more specific in mind? I would like to know because that might influence my current work.
It's purely a gut feeling, not based in any fact. And let me clarify, by Concepts I specifically mean Andrew Sutton's Concepts Lite which is now heading into the standard. Andrew's Concepts Lite let you much more richly specify partial template specialisations - in fact, PTS looks very clunky compared to what Concepts Lite allows. That certainly helps with the brevity and power of implementation, but it also helps with the sanity of usage. Whilst use of the existing MPL is fairly problem free, that is definitely not the case for stuff which is based on the MPL where you'll find the metaprogramming becomes very brittle a la Boost.Spirit. I suspect, without evidence, that correctly and permanently eliminating that brittleness will require Concepts Lite in the MPL layer, not in the layer above. I stress it's a gut feeling. I have no evidence, and am hoping your C++ Now presentation might illuminate things for me. Niall -- Currently unemployed and looking for work in Ireland. Work Portfolio: http://careers.stackoverflow.com/nialldouglas/
Niall Douglas
Andrew's Concepts Lite let you much more richly specify partial template specialisations - in fact, PTS looks very clunky compared to what Concepts Lite allows. That certainly helps with the brevity and power of implementation, but it also helps with the sanity of usage. Whilst use of the existing MPL is fairly problem free, that is definitely not the case for stuff which is based on the MPL where you'll find the metaprogramming becomes very brittle a la Boost.Spirit. I suspect, without evidence, that correctly and permanently eliminating that brittleness will require Concepts Lite in the MPL layer, not in the layer above.
Thanks for clarifying. I'll take a deeper look at Concepts Lite and see how this might relate to the MPL (and also to my work so far). Louis
On 03/08/14 10:58, Louis Dionne wrote:
Hi,
I am a student considering to apply for GSOC 2014.
Short story =========== I would like to know if someone is interested to mentor a project whose aim is boldly to: - Document the current state of the art in C++11 template metaprogramming. - Propose modifications to the current Boost.MPL or perhaps write a TMP library as a successor to the MPL.
Full story ========== I have been working on a C++11 TMP library[1] for a while now, and I will present the state of my work at C++Now 2014. In the process of writing the library, I experiment with several TMP techniques, which I document and benchmark. The goal is to propose a new library that improves over the current MPL in a measurable way (i.e. it's not just my preference). That library could be seen as a C++11 successor to the MPL and new code could use that instead of the MPL.
Now, while I expect the library to be fairly advanced by the beginning of the summer, there will certainly be criticism when I present it publicly. I see two possibilities here:
(1) Input is negative enough that the idea to propose it is dropped. In that case, I could work on improvements to the current MPL during the summer. The kind of improvements I'm talking about range from documentation to bugfixes to support for C++11 when available.
(2) Input is generally positive and the library is proposed circa the beginning of the summer. If the library is refused, then I'm back to (1). Otherwise, I can work on improvements and modifications required for the library to officially make it in.
In both cases, the scope of the project seems reasonable to me.
There is nothing similar in the list of proposed GSOC projects, so if someone is interested in mentoring this project, please speak up. I will then go through the normal process for proposing GSOC projects and include a more detailed description of it, and we'll see what happens.
Regards,
Louis Dionne
Do you have the results of the benchmark: https://github.com/ldionne/mpl11/blob/master/benchmark/foldl.rb ? One problem with template metaprograms is the large compile times. The boost preprocessing library was used to alleviate this problem. The foldl.rb benchmark, IIUC, compares various techniques, including the existing boost::mpl technique. I sure others would be interested in seeing this comparison. BTW, one template metafunction class in that benchmark was the until template. I'd consider adding this to the library. OTOH, the while_ metafunction here: http://svn.boost.org/svn/boost/sandbox/variadic_templates/boost/mpl/while.hp... *might* be more general because it more closely resembles the recursive definition of a while statement: while B do S == if B then (S; while B do S) else skip found here: http://spivey.oriel.ox.ac.uk/corner/Semantics_of_while_loops_%28Programming_...
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
On 03/09/14 11:43, Larry Evans wrote:
On 03/08/14 10:58, Louis Dionne wrote:
Hi,
I am a student considering to apply for GSOC 2014.
Short story =========== I would like to know if someone is interested to mentor a project whose aim is boldly to: - Document the current state of the art in C++11 template metaprogramming. - Propose modifications to the current Boost.MPL or perhaps write a TMP library as a successor to the MPL.
Full story ========== I have been working on a C++11 TMP library[1] for a while now, and I will present the state of my work at C++Now 2014. In the process of writing the library, I experiment with several TMP techniques, which I document and benchmark. The goal is to propose a new library that improves over the current MPL in a measurable way (i.e. it's not just my preference). That library could be seen as a C++11 successor to the MPL and new code could use that instead of the MPL.
Now, while I expect the library to be fairly advanced by the beginning of the summer, there will certainly be criticism when I present it publicly. I see two possibilities here:
(1) Input is negative enough that the idea to propose it is dropped. In that case, I could work on improvements to the current MPL during the summer. The kind of improvements I'm talking about range from documentation to bugfixes to support for C++11 when available.
(2) Input is generally positive and the library is proposed circa the beginning of the summer. If the library is refused, then I'm back to (1). Otherwise, I can work on improvements and modifications required for the library to officially make it in.
In both cases, the scope of the project seems reasonable to me.
There is nothing similar in the list of proposed GSOC projects, so if someone is interested in mentoring this project, please speak up. I will then go through the normal process for proposing GSOC projects and include a more detailed description of it, and we'll see what happens.
Regards,
Louis Dionne
Do you have the results of the benchmark:
https://github.com/ldionne/mpl11/blob/master/benchmark/foldl.rb
?
I tried using the cmake, but got a diagnostic about missing doc directory: ~/prog_dev/boost/boost-svn/ro/boost_1_54_0/sandbox/rw/variadic_templates/libs/composite_storage/sandbox/cjgillot/rtti-master $ ls CMakeCache.txt CMakeFiles CMakeLists.txt README.md cache-table-0.2 examples include rtti.kdev4 src test ~/prog_dev/boost/boost-svn/ro/boost_1_54_0/sandbox/rw/variadic_templates/libs/composite_storage/sandbox/cjgillot/rtti-master $ mkdir build ~/prog_dev/boost/boost-svn/ro/boost_1_54_0/sandbox/rw/variadic_templates/libs/composite_storage/sandbox/cjgillot/rtti-master $ cd build ~/prog_dev/boost/boost-svn/ro/boost_1_54_0/sandbox/rw/variadic_templates/libs/composite_storage/sandbox/cjgillot/rtti-master/build $ cmke .. cmke: command not found ~/prog_dev/boost/boost-svn/ro/boost_1_54_0/sandbox/rw/variadic_templates/libs/composite_storage/sandbox/cjgillot/rtti-master/build $ cmake .. CMake Error at CMakeLists.txt:13 (add_subdirectory): add_subdirectory given source "doc" which is not an existing directory. -- Configuring incomplete, errors occurred! ~/prog_dev/boost/boost-svn/ro/boost_1_54_0/sandbox/rw/variadic_templates/libs/composite_storage/sandbox/cjgillot/rtti-master/build $ When you get the time, could you please revise the build system to avoid that problem? -regards, Larry [snip]
On 03/09/14 16:02, Larry Evans wrote:
On 03/09/14 11:43, Larry Evans wrote:
On 03/08/14 10:58, Louis Dionne wrote: [snip] Regards,
Louis Dionne
Do you have the results of the benchmark:
https://github.com/ldionne/mpl11/blob/master/benchmark/foldl.rb
?
I tried using the cmake, but got a diagnostic about missing doc directory:
[snip] I had tried the .zip download; however, after doing `git clone`, I had the doc directory: ~/prog_dev/boost/boost-svn/ro/boost_1_54_0/sandbox/rw/variadic_templates/libs/composite_storage/sandbox/cjgillot $ git clone https://github.com/ldionne/mpl11.git Cloning into 'mpl11'... remote: Reusing existing pack: 15887, done. remote: Total 15887 (delta 0), reused 0 (delta 0) Receiving objects: 100% (15887/15887), 4.21 MiB | 372 KiB/s, done. Resolving deltas: 100% (12502/12502), done. ~/prog_dev/boost/boost-svn/ro/boost_1_54_0/sandbox/rw/variadic_templates/libs/composite_storage/sandbox/cjgillot $ ls download.log download.log~ mpl11 rtti-master-zip rtti-master.zip ~/prog_dev/boost/boost-svn/ro/boost_1_54_0/sandbox/rw/variadic_templates/libs/composite_storage/sandbox/cjgillot $ ls mpl11/doc CMakeLists.txt Doxyfile.in gh-pages ~/prog_dev/boost/boost-svn/ro/boost_1_54_0/sandbox/rw/variadic_templates/libs/composite_storage/sandbox/cjgillot $ So, maybe tell people to use clone instead of downloading: https://codeload.github.com/cjgillot/rtti/zip/master as I had done at first. -regards, Larry
Le dimanche 9 mars 2014 16:02:59 Larry Evans a écrit : [snip]
I tried using the cmake, but got a diagnostic about missing doc directory:
~/prog_dev/boost/boost-svn/ro/boost_1_54_0/sandbox/rw/variadic_templates/lib s/composite_storage/sandbox/cjgillot/rtti-master $ ls [snip] When you get the time, could you please revise the build system to avoid that problem?
It is now fixed, sorry for the inconvenience. By the way, didn't you get this thread (mpl11) and mine (multi-methods) inadvertently mixed ? Regards, Camille Gillot
On 03/09/14 17:29, Camille Gillot wrote:
Le dimanche 9 mars 2014 16:02:59 Larry Evans a écrit : [snip]
I tried using the cmake, but got a diagnostic about missing doc directory:
~/prog_dev/boost/boost-svn/ro/boost_1_54_0/sandbox/rw/variadic_templates/lib s/composite_storage/sandbox/cjgillot/rtti-master $ ls [snip] When you get the time, could you please revise the build system to avoid that problem?
It is now fixed, sorry for the inconvenience. By the way, didn't you get this thread (mpl11) and mine (multi-methods) inadvertently mixed ?
Yes. Sorry :(
Regards,
Camille Gillot
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
Larry Evans
Do you have the results of the benchmark:
https://github.com/ldionne/mpl11/blob/master/benchmark/foldl.rb
First, I would like to say that you should not draw conclusions from the benchmarks at this time: the current foldl implementation for MPL11 lists is not optimized at all. Also, I don't expect huge performance gains with foldl; we can't do _much_ better than the MPL here since each step depends on the previous one and so there's very little room for magic. There are larger gains with other metafunctions, but I'm not going into the details at this time. So, here is a benchmark where the same headers are included for all tryouts. What I mean is that we always include the headers necessary for mpl::vector, mpl11::list and so on. This is in order to reduce the difference due to including different headers. http://imgur.com/rz4PZjo As you can see, there is almost no difference. However, you can expect the MPL11 to be as good as the best on the graph since I will just use that implementation instead of the naive one when I'm ready to optimize. Here is a benchmark where each tryout only includes the headers it uses. This is the performance gain you would _actually_ get if you used one implementation over another in your code. http://imgur.com/uTIHi9D Again, don't forget that benchmarks should be taken lightly at this stage.
One problem with template metaprograms is the large compile times. The boost preprocessing library was used to alleviate this problem. The foldl.rb benchmark, IIUC, compares various techniques, including the existing boost::mpl technique. I sure others would be interested in seeing this comparison.
This is part of my material for C++Now 2014! Don't spoil attendance rates! :)
BTW, one template metafunction class in that benchmark was the until template. I'd consider adding this to the library. OTOH, the while_ metafunction here:
Thank you for the suggestion. In the MPL11, `while_` can
be implemented as (untested!):
template
By the way, the huge drop at 50 in the first benchmark is due to the fact that
we can't include
participants (5)
-
Camille Gillot
-
Joel Falcou
-
Larry Evans
-
Louis Dionne
-
Niall Douglas