<div dir="ltr">On Fri, Mar 8, 2013 at 11:48 AM, Lisandro Dalcin <span dir="ltr"><<a href="mailto:dalcinl@gmail.com" target="_blank">dalcinl@gmail.com</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I was sure this was going to happen...<br>
<br>
So now, we have:<br>
<br>
PETSC_INTERN PetscErrorCode KSPBuildSolution_Default(KSP,Vec,Vec*);<br>
<br>
Then, if PETSC_INTERN endups meaning -fvisibility=hidden, any third<br>
party code linking with libpetsc.so and implementing a custom KSP<br>
subtype (like petsc4py does) is no longer able to re-use<br>
KSPBuildSolution_Default().<br></blockquote><div><br></div><div style>This is reasonably part of the implementer/plugin API, so I think it should be renamed to skip the underscore and documented as a developer-level routine.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Jed, I very much understand you good intentions with all this, and I<br>
support your POVs in almost all cases, but this new PETSC_INTERN stuff<br>
will do harm if people is not really careful when using it.<br>
<br>
Other example: <a href="https://bitbucket.org/dalcinl/petiga/src/49b6285b1380fa6b29d780c7dbe752441b6e9512/src/petigavec.c?at=default#cl-8" target="_blank">https://bitbucket.org/dalcinl/petiga/src/49b6285b1380fa6b29d780c7dbe752441b6e9512/src/petigavec.c?at=default#cl-8</a><br>

If anyone ever makes these function PETSC_INTERN, PetIGA will likely<br>
be in trouble.<br></blockquote><div><br></div><div style>I'm not sure whether it is better to reference these directly like this or to keep them PETSC_INTERN and have a different (public) API for setting them. It's extremely fragile to have external projects depending on private implementation functions like this. It's the same problem we have inside PETSc where we have derived classes piggy-backing on PCMG, making the logic is convoluted and brittle and a frequent source of bugs as people try to change it.</div>
</div></div></div>