Thank you for your feedback and comments on the document. Seems we have to iterate more. I want to point out that using the pimpl idiom we wouldn't have the problem of breaking backward compatibility, since the internal C++ API is not really exposed.
Only the public facing one of the pimpl facade which calls the internal C++ API on the private implementation. (That's the whole point of PIMPL, to hide the implementation and provide binary compatibility on top as it's done in many commercial libraries like QT). It would provide the same benefit as the hour glass design. Why are you so keen on keeping the C interface then? Pedro. On Fri, Mar 23, 2018 at 8:21 PM, Tianqi Chen <tqc...@cs.washington.edu> wrote: > One quote that I really liked and related to this topic “the best design is > achieved not when you have nothing to add, but when there is nothing to be > taken away”. > > Most of the stable api decision we put into a project will become a > technical debt, and a minimum clean design with equally powerful api adds > more value than a bigger one > On Fri, Mar 23, 2018 at 12:11 PM Tianqi Chen <tqc...@cs.washington.edu> > wrote: > > > +1 for hour-glass CAPI design. It is there for very good reason. For > > example, if you are windows user an want to build your app using mingw, > > current way works. While the raw c++ approach won’t due to the fact cuda > is > > only supported by MSVC. > > > > The argument that c++ api itself is more elegant and fast is not > > necessarily valid. Always remember Amdahl’s Law, the additional overhead > > saved by directly using are not the bottleneck. > > > > The effectiveness of core engine, on the other hand will be on the > > critical path, and we rely on constantly improving this which can mean > > break backward compatibility if C++ api layer is exposed > > > > Tianqi > > > > > > On Fri, Mar 23, 2018 at 11:45 AM Eric Xie <j...@apache.org> wrote: > > > >> I see several issues with the design. I've commented in the document but > >> for record here: > >> > >> 1. cpp-package is almost only used for inference. since you are planning > >> a rewrite that's almost certainly non-backward-compatible, we might as > well > >> create a new interface that's inference only. > >> > >> 2. The hour-glass CAPI design should be kept. > >> > >> On 2018/03/14 18:07:49, Anton Chernov <mecher...@gmail.com> wrote: > >> > Dear MxNet Community, > >> > > >> > please find here > >> > < > >> https://cwiki.apache.org/confluence/pages/viewpage. > action?pageId=75976112> > >> the > >> > design document for the proposed MXNet C++ package improvements for > >> review > >> > and consideration. > >> > > >> > Feedback is welcome and highly appreciated. Thank you! > >> > > >> > BR > >> > Anton > >> > > >> > > >