On Thu, Oct 22, 2020 at 2:22 PM Jack Winch <sunt.un.morcov@xxxxxxxxx> wrote: > > > Why would that be a shame? We have the chance to rework the API of the > > entire package, I want to give ourselves some time to get it right > > before we carve anything in stone for an indefinite period of time. > > There's no rush, really. > > You're right. :) > > I will start the talk with you next week regarding ABI compatibility. > I'll give you a rundown of the issues, the potential solutions and we > will discuss the usage of libgpiod and the C++ bindings. > Hi Jack! I started reading on my own and I think I now have a slightly better idea about C++ and its ABI. I also see what a mess the original libgpiod bindings are in terms of ABI compatibility but fear not! Right now (v2.0) is the time to make it better! :) At a personal level I'm not too concerned about the ABI compatibility of C++ bindings - I much more care about the API. This is because libgpiod is aimed mostly at bespoke embedded distros (yocto, buildroot, openwrt etc.) I understand however that it's an important issue for distros. I didn't know any better at the time of writing libgpiodcxx so I just put all private members in the main header, exposing them to the users of the library. I'm not sure why I didn't realize that C++ classes are basically C structs (and exposing them amounts to exposing struct in a C header) but I just didn't know any better. I assume that you'll either propose to use the Pimpl pattern or a header-only library. I noticed that Pimpl is what Qt5 uses while header-only is more of a boost thing. If so - the timing is great as I'm open to either solution for libgpiod v2.0. Best regards, Bartosz Golaszewski