New submission from Zorg <zorgie...@gmail.com>:

If one wants to compile Python and embed it in their applications, or more 
generally, deploy the framework / libraries to older systems, then Python needs 
to check the existence of functions at runtime that are unavailable to Python's 
supported minimum OS.

For example, Python makes use of:
clock_gettime
getentropy

These functions are only available on macOS 10.12. Python currently states it 
supports 10.9. Checking for their existence at compile time isn't good enough; 
compiling Python on 10.13 and deploying back to 10.9 or 10.11 for example will 
not work, and cause a crash at runtime. One can make sure the functions are 
weakly linked and check they aren't NULL to get around this.

There may be more such functions Python is using; I haven't extensively 
searched for all usages.

Alternatively, Python could state that it does not properly support embedding 
(probably not desirable), or Python could bump the minimum supported OS 
requirements in its documentation.

Else one might be able to compile Python by turning off such features? But the 
user needs to know what those are, Python gives no warnings when 
MACOSX_DEPLOYMENT_TARGET/--mmacosx-version-min are low enough, and Python 
wouldn't be able to use those functions when they are actually available on 
newer systems.

----------
components: macOS
messages: 324698
nosy: Zorg, ned.deily, ronaldoussoren
priority: normal
severity: normal
status: open
title: Python needs to check existence of functions at runtime for targeting 
older macOS platforms
type: crash
versions: Python 3.5, Python 3.6, Python 3.7, Python 3.8

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue34597>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to