Why is timespec_get() now in a non-public API

Hi,


I recently tried to submit Builds of my App for TestFlight it on iOS and tvOS.

The App is statically linking against VLCKit fpor Video playback as tvOS is not able to handle MPEG_TS streams.


My build got rejected with:

ITMS-90338: Non-public API usage - The app references non-public symbols in vuplusTV iOS: _timespec_get. If method names in your source code match the private Apple APIs listed above, altering your method names will help prevent this app from being flagged in future submissions. In addition, note that one or more of the above APIs may be located in a static library that was included with your app. If so, they must be removed. For further information, visit the Technical Support Information at http://developer.apple.com/support/technical/


Huh?

timespec_get() is defined in Standard C Library (according to its manpage). It officially conforms to ISO/IEC 9899:2011 (``ISO C11'').


How can a function inside Standard C Library, officially documented with a manpage, suddenly (since iOS 13 and tvOS 13 are released) be categorized as Non-public API?

How can an App using officially documented functions of Standard C Library bget rejected because of that???


Please fix the Review mechanisms accordingly...

Replies

Having the same issue because of usage of libVlcMobileKit.


It seems that there is a function called timespec_get but NOT _timespec_get! But Apple still claims it. Maybe the checker is running just an indexOf or contains?


However Apple has to fix this. Why the silence?

I was able to circumvent the issue by copying the implementation of timespec_get inside MobileVLCKit into my App. This way the linker will resolve the symbol internally and is not placing it as an undefined symbol referenced from libc.

But this is only a bad workaround, not a real solution - as this is a problem (and a change) of Apple blocking it. And Apple does not accept this as a bug and they do not justify their change.


And - yes - why is there no response from Apple??

Response from Apple about what? Did you file a bug report? Of course, you shouldn't expect a response from that either.


When I try "man timespec_get" or search for timespec_get in Xcode help, I get no results. Therefore, it is part of an internal library that Apple does not consider "API". Just because something links doesn't mean you can use it. In some cases, you may need to incorporation the original code into your app yourself and link statically. Such is life for an Apple developer.