<div dir="ltr"><br><div class="gmail_quote"><div dir="ltr"><div dir="ltr"><br></div><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Jul 6, 2020 at 3:31 PM Martin Dobias <<a href="mailto:wonder.sk@gmail.com" target="_blank">wonder.sk@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On Mon, Jul 6, 2020 at 9:07 PM Howard Butler <<a href="mailto:howard@hobu.co" target="_blank">howard@hobu.co</a>> wrote:<br>
><br>
> No plan for a PDAL C API. Just extra stuff to manage for little benefit. PDAL's C++ API has been quite stable since about 1.6 or 1.7 release. More specifically, if you use higher level APIs like the PipelineManager or PipelineExecutor, they will insulate you from API changes. We have done our best to preserve pipeline behavior and syntax throughout releases, as this is the real definition of PDAL activity. This also conveniently gives other language implementors (Python, Java, Julia, Matlab) a mechanism to drive PDAL without having to deeply implement a large API surface.<br>
<br>
Is there a way for me to tell which APIs are high level and which<br>
aren't? For example, classes like LasReader, PointTable, PointViewSet?<br></blockquote><div><br></div><div>No.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">I am a bit worried that without guaranteed API stability we may run<br>
into trouble easily - even safely looking changes such as adding a new<br>
private member variable or a new virtual method may change ABI and<br>
then cause crashes if a newer version of PDAL would be released and<br>
dependent QGIS code would not get recompiled... For example Qt library<br>
has policies (like using d-pointers everywhere) and extensive tests to<br>
make sure the ABI does not get broken between releases...<br></blockquote><div><br></div><div>Isn't this what library versioning is for? Don't package managers routinely deal with this? Multiple versions of libraries can co-exist and if you replace a library with an incompatible one, you'll get a runtime error when the required library can't be located. I'm not that familiar with Windows, but I thought that typically DLLs were provided with an app to get around the lack of DLL versioning.</div><div> </div></div></div></div>-- <br><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature">Andrew Bell<br><a href="mailto:andrew.bell.ia@gmail.com" target="_blank">andrew.bell.ia@gmail.com</a></div></div>