[LLVMdev] [RFC] Developer Policy for LLVM C API

Philip Reames listmail at philipreames.com
Fri Jul 31 14:17:21 PDT 2015



On 07/30/2015 03:46 PM, Eric Christopher wrote:
>
>
> On Thu, Jul 30, 2015 at 3:36 PM Philip Reames 
> <listmail at philipreames.com <mailto:listmail at philipreames.com>> wrote:
>
>     It's sounds like we've reached two rough conclusions:
>     1) We need both a stable and a non-stable fully featured C API. 
>     It's a somewhat open question whether both or either should be
>     part of the main tree.
>
>
> I'm fine with the stable API being in the main tree. I proposed moving 
> it out originally so that it could get some work before moving it in. 
> I'm reasonably confident that we can get something working in tree for 
> a stable API by the next release though.
>
>     2) Everyone seemed okay with the proposed deprecation policy for
>     the stable API.
>
>
> Yes.
>
>     Given this, I would propose we designate the existing C API as the
>     "hopefully stable, but subject to future clean up per policy..."
>     Update
>
>
> This is where we disagree. I've tried to lay out a design that I think 
> would be good for a stable API and the current one does not meet any 
> guidelines there. It's too much a thin wrapper on top of the existing 
> C++ API. There's no clear delineation for when/how/whether we extend 
> it. It's already easy to subtly break the existing one.
>
> My proposal here is simply thus:
>
> We deprecate the existing API as "moving to unstable". For the next 
> release cycle, as a new C API comes into existence, we continue our 
> best effort toward keeping the existing API as stable as possible 
> ("best effort") just like we always have. At the next release we flip 
> the switch that says "this is now not stable, please use X".
I have no real objection to this, but I am also not a consumer of the 
existing C API.  I think this is a big enough change that we'd need to 
make sure this got widely disseminated via a top-level RFC email, LLVM 
Weekly, and the release notes.
> In the mean time we can either a) move a bindings level C API into a 
> separate directory starting with the existing wrapped C++ API that we 
> have as part of the C API, or b) expand in the current directory and 
> copy a set of APIs off to another directory. How to do this with 
> minimal churn in external projects is important - this is why I'm 
> inclined to say that the bindings API reside in the current C API 
> directory, but others are more hesitant, I'm just not sure in their 
> mind how the final transition from "best effort stable" to "stable".
I'm having a hard time parsing this paragraph.  Specifically "expand" 
what?  and which API is transitioning?  If I'm reading the rest of your 
proposal right, we effectively won't have *any* stable API in tree after 
the current one is downgraded to "unstable C binding".  What did I miss?
>
> -eric
>
>     the documentation to note that LLVM does not currently have a
>     fully featured C API.  Update the docs to reflect the deprecation
>     policy for the existing C API.
>
>     We can then start discussing how we should create the fully
>     featured API.  I'd lean towards a tool like Swig, but we could
>     also do it purely on demand.  For example, I could add some shims
>     for the experimental GC support without committing to supporting
>     the current APIs long term.
>
>     Philip
>
>
>     On 07/30/2015 01:47 PM, Reid Kleckner wrote:
>>     On Thu, Jul 30, 2015 at 1:04 PM, Eric Christopher
>>     <echristo at gmail.com <mailto:echristo at gmail.com>> wrote:
>>
>>         I think the idea of having a (hopefully not too) fluid C API
>>         that can encompass everything people want to be able to do in
>>         the language of their choice and calls into LLVM to do work
>>         sounds like a great idea. I think it would be useful to
>>         expand the number of people who are able to do research and
>>         development with LLVM without having to reinvent LLVM. That
>>         said, this is directly at odds with our desire to have a
>>         stable C API that can be supported long term (as you said at
>>         the end of the email). I.e. where do we draw the line on what
>>         can or should be added to the C API? What if the people that
>>         want the functionality are willing to deal with it being
>>         (occasionally) unstable?
>>
>>
>>     Yeah, splitting the concerns of API completeness and API
>>     stability seems like a good idea. Right now we have clients like
>>     llgo that want to generate new debug info, and are perfectly
>>     happy to keep up to date with changes. They need a complete API,
>>     not a stable API, and our insistence on a stable C API has
>>     actually gotten in the way here.
>>
>>         I don't agree with you that no one will take the time to
>>         design a well thought out C API. We've managed to get a lot
>>         of real world experience lately at both how these things will
>>         be used, and how we'll maintain such a thing. I think Juergen
>>         and others are a good group to come up with an answer to our
>>         engineering challenge.
>>
>>
>>     Sure, if people are planning to design a stable API that leave
>>     LLVM with more flexibility, then I'm all in favor of switching
>>     over to it. So far I haven't heard any new suggestions. I think
>>     any such design would probably be write-only, and revolve around
>>     sharing the bitcode auto-upgrade logic.
>>
>>
>>     _______________________________________________
>>     LLVM Developers mailing list
>>     LLVMdev at cs.uiuc.edu  <mailto:LLVMdev at cs.uiuc.edu>          http://llvm.cs.uiuc.edu
>>     http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150731/4bab7018/attachment.html>


More information about the llvm-dev mailing list