Hi everyone,
I’m sorry I’m late for the discussion, I only became aware of this PEP when it was submitted to the steering council.
First of all, thank you very much for this; you did a great job in building and submitting this proposal, and I support it completely. I am the author of a terminal-like app (a-Shell) and a local Jupyter notebook app (Carnets), so this will make my life a lot easier.
I have few comments, questions and answers to complete this discussion.
- as said by @freakboy3742, it’s totally possible to build Python and Python modules using a dynamic framework build of libPython (that’s what I’m using). With that build, it becomes possible to use
--undefined error
instead of--undefined dynamic_lookup
, so the issue about possible obsolescence of that flag goes away. - the AppStore rule about downloading code to an existing app has been clarified through the years. Downloading human-readable code (like Python) is allowed, so
pip
works for pure Python packages. That’s what Pythonista, Juno, Pyto, a-Shell and Carnets use, to the best of my knowledge. Downloading and loading Arm64 binaries is both forbidden and technically impossible (the app will only load binary code that has been signed with the developer certificate and placed in a specific directory that can only be accessed at install time, and never modified later). - iOS and OSX are very similar in their behaviour, except for the fact that
fork()
won’t work and that dynamic libraries won’t load. As a result, a lot of existing Python packages written for OSX work “as is” on iOS, by going through theplatform == "darwin"
branch. This proposal will break that, and packages will have to be rewritten to expand the test:(platform == "darwin") or (platform == "ios")
. It’s not a major issue for me, just a point to mention. - another specificity of iOS is that the user cannot write or create directories in
~
, only in~/Documents
. It’s not an issue for Python itself, but it is for many packages that store configuration files or caches in~
. We will need to edit the code for these packages, but that’s not a major issue (and definitely not an issue for Python).