[boost] [type_erasure] Review ends today July 27, 2012

Hello all,
On Mon, Jul 23, 2012 at 9:09 AM, Lorenzo Caminiti
On Wed, Jul 18, 2012 at 1:13 AM, Lorenzo Caminiti
wrote: *** The review of Steven Watanabe's proposed Boost.TypeErasure library begins on July 18, 2012 and ends on July 27, 2012. ***
*** Boost.TypeErasure review ends in 5 days. Please submit your reviews :D ***
*** Boost.TypeErasure review ends today July 27, 2012. If you are planning to submit a review, please do so as soon as possible. *** Thank you to everyone who has commented on the library and submitted a review so far! The review manager, --Lorenzo P.S. I am considering extending the review until end of day Sunday July 29, 2012... I will keep you posted.
There have been interesting discussions on the library on the ML but I have not received any official review yet :( Especially if you are a user of Boost Any, Function, and Any Iterator, you definitely want to take a look at Type Erasure as it generalizes solutions provided by those other libraries.
Thank you.
The review manager. --Lorenzo
THE LIBRARY
C++ provides runtime polymorphism through virtual functions. They are a very useful feature, but they do have some limitations. * They are intrusive. In generic programming, we can design an interface which allows third-party types to be adapted to it. * They require dynamic memory management. Of course, most of the problems can be avoided by using an appropriate smart pointer type. Even so, it still acts like a pointer rather than a value. * Virtual functions' ability to apply multiple independent concepts to a single object is limited. The Boost.TypeErasure library solves these problems allowing us to mirror static generic programming at runtime.
Library source: http://svn.boost.org/svn/boost/sandbox/type_erasure/
Pre-built documentation: http://steven_watanabe.users.sourceforge.net/type_erasure/libs/type_erasure/
You can also download archives with pre-built documentation from: http://sourceforge.net/projects/steven-watanabe.u/files/
YOUR REVIEW
Please submit a review to the mailing-list by replying to this email ("[boost] [type_erasure] Review ..." should be in the subject).
Please state clearly whether you think this library should be accepted as a Boost library.
Other questions you may want to consider: 1. What is your evaluation of the design? 2. What is your evaluation of the implementation? 3. What is your evaluation of the documentation? 4. What is your evaluation of the potential usefulness of the library? 5. Did you try to use the library? With what compiler? Did you have any problems? 6. How much effort did you put into your evaluation? A glance? A quick reading? In-depth study? 7. Are you knowledgeable about the problem domain?
Thanks in advance to all who participate in the review discussion -- I'm looking forward to it!

Hi Lorenzo, Here is my two pennies... I should start by saying that, lately, I have not done a lot of C++. I have certainly not made a lot of Boost usages. In fact, despite the fact that my research is about C++, for certain reasons to do with formalisms, I these days develop most of my software in Scala. So, part of my low-quality review might have roots in that. Whilst, with my particular situation explained above, I only read the Boost list to keep up with the news, your post stroke me for a particular reason: Type Erasure has a specific meaning in the Java world that has several times bit me hard over my Scala development. (See my threads on the topic to see that I publicly announce that I believe "type erasure is by far the ugliest dwarf I have ever witnessed mankind creating in a programming language." Having said that, I opened your post thinking what a mistake it would be to bring nasty Java stuff to C++. To my big surprise, though, your stuff is nowhere close to what I understand is known in the JVM world as Type Erasure. So, I strongly recommend, as my first comment, to think about renaming the library because...
The Boost.TypeErasure library solves these problems allowing us to mirror static generic programming at runtime.
... rather than this, JVM Type Erasure is about knowingly choosing to be completely oblivious against types from the early compilation stages onwards. Whereas your stuff simply postpones certain typing decisions. For that reason, you might for example want to call your library "Staged Typing" or "Deferred Typing". (Both of these are established research topics in programming languages. Please note that you're not doing "Gentle Typing" or "Gradual Typing".) On the other hand, JVM type erasure doesn't solve any of the problems your stuff does. As a matter of fact, in many occasions, it even makes the situation worse. For similar facilities to that of yours, your might want to take a look into the Scala Macro system.
Please state clearly whether you think this library should be accepted as a Boost library.
Yes. I think it would be a nice idea; although I can't remember any specific occasions when I needed that -- I'm sure there were certain such occasions over my industrial development time.
1. What is your evaluation of the design?
I expect, in later versions, there will still be room for removal of some boiler-plating currently on the user to provide. But, that's a good start.
2. What is your evaluation of the implementation?
Didn't really try it.
3. What is your evaluation of the documentation?
Reasonable first attempt.
4. What is your evaluation of the potential usefulness of the library?
The whole research papers on "Staged Typing" and "Deferred Typing".
5. Did you try to use the library? With what compiler? Did you have any problems?
No. N/A. N/A.
6. How much effort did you put into your evaluation? A glance? A quick reading? In-depth study?
Quick reading of the documentation plus some of the codes that are not directly referenced to in the examples.
7. Are you knowledgeable about the problem domain?
To some extents. Good luck and HTH, --Hossein

AMDG On 07/27/2012 07:38 AM, Hossein Haeri wrote:
Hi Lorenzo,
Here is my two pennies...
Thank you for your review.
I should start by saying that, lately, I have not done a lot of C++. I have certainly not made a lot of Boost usages. In fact, despite the fact that my research is about C++, for certain reasons to do with formalisms, I these days develop most of my software in Scala. So, part of my low-quality review might have roots in that.
Whilst, with my particular situation explained above, I only read the Boost list to keep up with the news, your post stroke me for a particular reason: Type Erasure has a specific meaning in the Java world that has several times bit me hard over my Scala development. (See my threads on the topic to see that I publicly announce that I believe "type erasure is by far the ugliest dwarf I have ever witnessed mankind creating in a programming language."
Having said that, I opened your post thinking what a mistake it would be to bring nasty Java stuff to C++. To my big surprise, though, your stuff is nowhere close to what I understand is known in the JVM world as Type Erasure. So, I strongly recommend, as my first comment, to think about renaming the library because...
The Boost.TypeErasure library solves these problems allowing us to mirror static generic programming at runtime.
... rather than this, JVM Type Erasure is about knowingly choosing to be completely oblivious against types from the early compilation stages onwards. Whereas your stuff simply postpones certain typing decisions. For that reason, you might for example want to call your library "Staged Typing" or "Deferred Typing". (Both of these are established research topics in programming languages. Please note that you're not doing "Gentle Typing" or "Gradual Typing".)
On the other hand, JVM type erasure doesn't solve any of the problems your stuff does. As a matter of fact, in many occasions, it even makes the situation worse. For similar facilities to that of yours, your might want to take a look into the Scala Macro system.
I have to admit that I'm not particularly knowledgeable about the JVM world. Type erasure is established terminology in C++/Boost though. In Christ, Steven Watanabe

on Fri Jul 27 2012, Hossein Haeri
Whilst, with my particular situation explained above, I only read the Boost list to keep up with the news, your post stroke me for a particular reason: Type Erasure has a specific meaning in the Java world that has several times bit me hard over my Scala development. (See my threads on the topic to see that I publicly announce that I believe "type erasure is by far the ugliest dwarf I have ever witnessed mankind creating in a programming language."
Having said that, I opened your post thinking what a mistake it would be to bring nasty Java stuff to C++. To my big surprise, though, your stuff is nowhere close to what I understand is known in the JVM world as Type Erasure. So, I strongly recommend, as my first comment, to think about renaming the library because...
The Boost.TypeErasure library solves these problems allowing us to mirror static generic programming at runtime.
... rather than this, JVM Type Erasure is about knowingly choosing to be completely oblivious against types from the early compilation stages onwards. Whereas your stuff simply postpones certain typing decisions. For that reason, you might for example want to call your library "Staged Typing" or "Deferred Typing". (Both of these are established research topics in programming languages. Please note that you're not doing "Gentle Typing" or "Gradual Typing".)
On the other hand, JVM type erasure doesn't solve any of the problems your stuff does. As a matter of fact, in many occasions, it even makes the situation worse. For similar facilities to that of yours, your might want to take a look into the Scala Macro system.
Actually, from my understanding of Java type erasure, it's doing exactly the same things. IIUC the idea is to implement a generic function with a single piece of compiled code by erasing specifics of the type being operated on inside the implementation of that function. The problems IIUC with Java are twofold: 1. Type erasure is Java's only answer for genericity, which is bad for performance. 2. Java does all its type erasure one object at a time, which leads to the dreaded binary method problem. Steven's library supports something a lot more like Haskell's implementation of generics. -- Dave Abrahams BoostPro Computing Software Development Training http://www.boostpro.com Clang/LLVM/EDG Compilers C++ Boost

Hello all,
After consulting the review wizards and Steven, I am extending
Boost.TypeErasure review of one week, until August 3, 2012.
Thank you to all that have submitted a review already and I am looking
forward to receiving additional submissions.
The review manager,
--Lorenzo
On Jul 27, 2012 3:22 AM, "Lorenzo Caminiti"
Hello all,
On Mon, Jul 23, 2012 at 9:09 AM, Lorenzo Caminiti
wrote: On Wed, Jul 18, 2012 at 1:13 AM, Lorenzo Caminiti
wrote: *** The review of Steven Watanabe's proposed Boost.TypeErasure library begins on July 18, 2012 and ends on July 27, 2012. ***
*** Boost.TypeErasure review ends in 5 days. Please submit your reviews :D ***
*** Boost.TypeErasure review ends today July 27, 2012. If you are planning to submit a review, please do so as soon as possible. ***
Thank you to everyone who has commented on the library and submitted a review so far!
The review manager, --Lorenzo P.S. I am considering extending the review until end of day Sunday July 29, 2012... I will keep you posted.
There have been interesting discussions on the library on the ML but I have not received any official review yet :( Especially if you are a user of Boost Any, Function, and Any Iterator, you definitely want to take a look at Type Erasure as it generalizes solutions provided by those other libraries.
Thank you.
The review manager. --Lorenzo
THE LIBRARY
C++ provides runtime polymorphism through virtual functions. They are a very useful feature, but they do have some limitations. * They are intrusive. In generic programming, we can design an interface which allows third-party types to be adapted to it. * They require dynamic memory management. Of course, most of the problems can be avoided by using an appropriate smart pointer type. Even so, it still acts like a pointer rather than a value. * Virtual functions' ability to apply multiple independent concepts to a single object is limited. The Boost.TypeErasure library solves these problems allowing us to mirror static generic programming at runtime.
Library source: http://svn.boost.org/svn/boost/sandbox/type_erasure/
Pre-built documentation:
http://steven_watanabe.users.sourceforge.net/type_erasure/libs/type_erasure/
You can also download archives with pre-built documentation from: http://sourceforge.net/projects/steven-watanabe.u/files/
YOUR REVIEW
Please submit a review to the mailing-list by replying to this email ("[boost] [type_erasure] Review ..." should be in the subject).
Please state clearly whether you think this library should be accepted as a Boost library.
Other questions you may want to consider: 1. What is your evaluation of the design? 2. What is your evaluation of the implementation? 3. What is your evaluation of the documentation? 4. What is your evaluation of the potential usefulness of the library? 5. Did you try to use the library? With what compiler? Did you have any problems? 6. How much effort did you put into your evaluation? A glance? A quick reading? In-depth study? 7. Are you knowledgeable about the problem domain?
Thanks in advance to all who participate in the review discussion -- I'm looking forward to it!
participants (4)
-
Dave Abrahams
-
Hossein Haeri
-
Lorenzo Caminiti
-
Steven Watanabe