[ 
https://issues.apache.org/jira/browse/THRIFT-2464?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16733529#comment-16733529
 ] 

Randy Abernethy commented on THRIFT-2464:
-----------------------------------------

I have a different view, it is a feature I use and find elegant and chaos free  
!/jira/images/icons/emoticons/smile.png! .

Clearly if you use an implementation type that is incompatible with the 
abstract IDL type or protocol interface you will have problems, just like if 
you don't eat you will starve, I don't think we need to police this. To your 
point, type substitution is not a feature anyone should reach for at the 
outset, rather a feature that allows Thrift to easily accommodate needs related 
to performance, version changes and customization. Many languages have multiple 
IDL-type compatible implementation-types, yet with no specific one being the 
fastest/best for all use cases (lists, vectors, ints, boxed ints, hashmaps, 
treemaps, dictionaries, counters, etc.). Also new types (especially container 
types) can show up over time (v1, v2, v3) making "the best" default hard to 
specify. This feature also allows custom types to be implemented. In none of 
these cases does the impl complexity leak into Thrift, the Thrift IDL types and 
wire serialization are unimpacted.

What is a mess is the implementation we have. We have annotations for "final", 
and Java map types then these crazy keyword impls for C++. The cpp_* kws 
predate annotations and should have been moved over with the introduction of 
annotations.

I also think we should rigorously reject new Thrift IDL types as they break the 
world and spawn huge amounts of work throughout the platform (every lib, every 
protocol) [I am not a fan of the self referential types we have half 
implemented]. In a tool chain used for cross platform compatibility, changing 
the IDL type support is the worst thing we can do and should really only happen 
when extreme benefits are present. This view makes me that much more interested 
in living with the simple and elegant Thrift IDL types yet having the option to 
choose or create my own implementations without impacting client or having to 
modify Thrift at all.

 

 

> Transition cpp_type and cpp_include keywords to compiler annotations
> --------------------------------------------------------------------
>
>                 Key: THRIFT-2464
>                 URL: https://issues.apache.org/jira/browse/THRIFT-2464
>             Project: Thrift
>          Issue Type: Improvement
>          Components: Compiler (General)
>    Affects Versions: 0.9.2
>         Environment: C++
>            Reporter: Randy Abernethy
>            Assignee: Randy Abernethy
>            Priority: Minor
>
> The cpp_type and cpp_include keywords provide a useful feature but are 
> language specific. In keeping with the trend of moving the interface language 
> to a clean cross implementation language abstraction, these two keywords 
> should be transitioned to annotations.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to