<div dir="ltr">Do we have no users? :(<div><br></div><div>This is a huge API surface area that is being ripped out. The cries of even a single user that depends on this will forever shatter all confidence in LLVM's C API stability promise. (also, btw, I wouldn't expect a user of a stable API to be subscribed to the developer's mailing list of the project...; that is a key difference between a stable API and a "no backwards compatibility; the onus is on you to be aware of what is happening in the codebase" API).<br>
<div><br></div><div>If these API's are deprecated (later to be removed) please write a migration guide to help existing users transition to the new recommended approach (also, it would be nice to have some documentation about what the recommended approach even is!). Can you estimate the expected development cost required to transition from the old API to the recommended API? (for example, what if bunding an XML library is not feasible for a user that depends on this functionality?)</div>
<div><br></div><div>more comments below,</div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Nov 12, 2013 at 8:50 PM, Dmitri Gribenko <span dir="ltr"><<a href="mailto:gribozavr@gmail.com" target="_blank">gribozavr@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Hello,<br>
<br>
I'd like to remove libclang APIs to traverse the comment AST.<br>
Instead, I would recommend to use clang_FullComment_getAsXML, which<br>
provides the same information, but does not expose implementation<br>
details of the comment AST.<br>
<br>
Here is the list of libclang APIs I would like to remove:<br>
<br>
enum CXCommentKind<br>
enum CXCommentInlineCommandRenderKind<br>
enum CXCommentParamPassDirection<br>
<br>
clang_Comment_getKind<br>
clang_Comment_getNumChildren<br>
clang_Comment_getChild<br>
clang_Comment_isWhitespace<br>
clang_InlineContentComment_hasTrailingNewline<br>
clang_TextComment_getText<br>
clang_InlineCommandComment_getCommandName<br>
clang_InlineCommandComment_getRenderKind<br>
clang_InlineCommandComment_getNumArgs<br>
clang_InlineCommandComment_getArgText<br>
clang_HTMLTagComment_getTagName<br>
clang_HTMLStartTagComment_isSelfClosing<br>
clang_HTMLStartTag_getNumAttrs<br>
clang_HTMLStartTag_getAttrName<br>
clang_HTMLStartTag_getAttrValue<br>
clang_BlockCommandComment_getCommandName<br>
clang_BlockCommandComment_getNumArgs<br>
clang_BlockCommandComment_getArgText<br>
clang_BlockCommandComment_getParagraph<br>
clang_BlockCommandComment_getCommentWithIndex<br>
clang_ParamCommandComment_getParamName<br>
clang_ParamCommandComment_isParamIndexValid<br>
clang_ParamCommandComment_getParamIndex<br>
clang_ParamCommandComment_isDirectionExplicit<br>
clang_ParamCommandComment_getDirection<br>
clang_TParamCommandComment_getParamName<br>
clang_TParamCommandComment_isParamPositionValid<br>
clang_TParamCommandComment_getDepth<br>
clang_TParamCommandComment_getIndex<br>
clang_VerbatimBlockLineComment_getText<br>
clang_VerbatimLineComment_getText<br>
<br>
The reason to remove all these APIs is simple: providing these APIs<br>
does not allow us to change the underlying AST easily.<br></blockquote><div><br></div><div>What is the alternative? Even with XML output, if a node has some user-facing property (equivalent to what is exposed by one of these functions), then you still can't change that property since that will break users, so I don't really see how this buys any flexibility in changing the underlying AST.</div>
<div><br></div><div>-- Sean Silva</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<br>
Here's the plan:<br>
Clang 3.4 -- the APIs are deprecated.<br>
Clang 3.5 -- the APIs are removed.<br>
<br>
Please let me know what you think.<br>
<span class=""><font color="#888888"><br>
Dmitri<br>
<br>
--<br>
main(i,j){for(i=2;;i++){for(j=2;j<i;j++){if(!(i%j)){j=0;break;}}if<br>
(j){printf("%d\n",i);}}} /*Dmitri Gribenko <<a href="mailto:gribozavr@gmail.com">gribozavr@gmail.com</a>>*/<br>
_______________________________________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@cs.uiuc.edu">cfe-dev@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev</a><br>
</font></span></blockquote></div><br></div></div></div>