Python on the move: The state of Mobile Python

Python on the move: The state of Mobile Python

B91373320dbc3bc52fcd870d3b21748f?s=128

Russell Keith-Magee

September 12, 2015
Tweet

Transcript

  1. Python on the move The state of mobile Python Dr

    Russell Keith-Magee Vancouver PyDay 2015
  2. Python on the move The state of mobile Python Dr

    Russell Keith-Magee Vancouver PyDay 2015
  3. None
  4. None
  5. None
  6. None
  7. toga

  8. None
  9. What is "Mobile Python"?

  10. Mobile devices don't have TTYs

  11. Functionality delivered as apps, not common services

  12. My position: “Mobile Python” means “Embedded only” Python

  13. My position: “Mobile Python” means “Embedded only” Python

  14. Python means cross platform

  15. iOS and Android

  16. iOS Hardware: ARMv6, ARMv7, ARMv7s, ARM64 Testing on i386/x86-64 Simulator

    Clang toolchain Fat binaries Objective-C native libraries No dynamic linking Submission through App Store
  17. iOS Hardware: ARMv6, ARMv7, ARMv7s, ARM64 Testing on i386/x86-64 Simulator

    Clang toolchain Fat binaries Objective-C native libraries No dynamic linking Submission through App Store
  18. iOS Hardware: ARMv6, ARMv7, ARMv7s, ARM64 Testing on i386/x86-64 Simulator

    Clang toolchain Fat binaries Objective-C native libraries No dynamic linking Submission through App Store
  19. iOS Hardware: ARMv6, ARMv7, ARMv7s, ARM64 Testing on i386/x86-64 Simulator

    Clang toolchain Fat binaries Objective-C native libraries No dynamic linking Submission through App Store
  20. iOS Hardware: ARMv6, ARMv7, ARMv7s, ARM64 Testing on i386/x86-64 Simulator

    Clang toolchain Fat binaries Objective-C native libraries No dynamic linking Submission through App Store
  21. iOS Hardware: ARMv6, ARMv7, ARMv7s, ARM64 Testing on i386/x86-64 Simulator

    Clang toolchain Fat binaries Objective-C native libraries No dynamic linking Submission through App Store
  22. iOS Hardware: ARMv6, ARMv7, ARMv7s, ARM64 Testing on i386/x86-64 Simulator

    Clang toolchain Fat binaries Objective-C native libraries No dynamic linking Submission through App Store
  23. Jailbreaking

  24. Android Hardware: ARM, ARM64, i386, MIPS Testing via device emulator

    Java toolchain Native code via JNI Single target binaries Submission through Google Play Store
  25. Android Hardware: ARM, ARM64, i386, MIPS Testing via device emulator

    Java toolchain Native code via JNI Single target binaries Submission through Google Play Store
  26. Android Hardware: ARM, ARM64, i386, MIPS Testing via device emulator

    Java toolchain Native code via JNI Single target binaries Submission through Google Play Store
  27. Android Hardware: ARM, ARM64, i386, MIPS Testing via device emulator

    Java toolchain Native code via JNI Single target binaries Submission through Google Play Store
  28. Android Hardware: ARM, ARM64, i386, MIPS Testing via device emulator

    Java toolchain Native code via JNI Single target binaries Submission through Google Play Store
  29. Android Hardware: ARM, ARM64, i386, MIPS Testing via device emulator

    Java toolchain Native code via JNI Single target binaries Submission through Google Play Store
  30. So can I Python my phone?

  31. iOS Patch available for CPython 3.4.2 Python issue23670 On OS/X

    with XCode: cd iOS && make spits out Python.framework Fully passes test suite on Simulator many capabilities disabled 5 failing tests on ARM64 devices 3 failing tests on ARMv7/ARMv7S devices
  32. iOS Patch available for CPython 3.4.2 Python issue23670 On OS/X

    with XCode: cd iOS && make spits out Python.framework Fully passes test suite on Simulator many capabilities disabled 5 failing tests on ARM64 devices 3 failing tests on ARMv7/ARMv7S devices
  33. iOS Patch available for CPython 3.4.2 Python issue23670 On OS/X

    with XCode: cd iOS && make spits out Python.framework Fully passes test suite on Simulator many capabilities disabled 5 failing tests on ARM64 devices 3 failing tests on ARMv7/ARMv7S devices
  34. iOS Patch available for CPython 3.4.2 Python issue23670 On OS/X

    with XCode: cd iOS && make spits out Python.framework Fully passes test suite on Simulator many capabilities disabled 5 failing tests on ARM64 devices 3 failing tests on ARMv7/ARMv7S devices
  35. iOS Patch available for CPython 3.4.2 Python issue23670 On OS/X

    with XCode: cd iOS && make spits out Python.framework Fully passes test suite on Simulator many capabilities disabled 5 failing tests on ARM64 devices 9 failing tests on ARMv7/ARMv7S devices
  36. iOS - problems to solve Python issue22625 - cross-platform build

    support libffi Shepherding the commit
  37. iOS - problems to solve Python issue22625 - cross-platform build

    support libffi Shepherding the commit
  38. iOS - problems to solve Python issue22625 - cross-platform build

    support libffi Shepherding the commit
  39. iOS - problems to solve Python issue22625 - cross-platform build

    support libffi Shepherding the commit
  40. Android Patch available for CPython 3.4.2 Python issue23496 Not yet

    complete Kivy has a working 2.7.6 compile, so it can be done.
  41. Android - problems to solve Python issue22625 - cross-platform build

    support libffi CPython vs Java Why not Jython?
  42. Why not Jython?

  43. Why not Jython?

  44. Why not Jython?

  45. Why not Jython?

  46. Something else?

  47. Something else?

  48. Byterun https://github.com/nedbat/byterun

  49. VOC https://github.com/pybee/voc

  50. https://github.com/pybee/voc

  51. (rimshot)

  52. https://github.com/pybee/voc Vestigial Output Compiler Vexing Obtuse Compiler Valuable Obscure Compiler

    Varigated Ocelot Calibrator
  53. But wait...

  54. Bridges: iOS PyObjC Rubicon Objective C PyObjus

  55. Bridges: iOS PyObjC Rubicon Objective C PyObjus

  56. Bridges: iOS PyObjC Rubicon Objective-C PyObjus

  57. Bridges: Android CPython Rubicon Java PyJNIus Jython clamp

  58. Widgets

  59. 1. Go native

  60. 2. Kivy

  61. 2. Kivy

  62. 2. Kivy

  63. 2. Kivy

  64. 2. Kivy

  65. 2. Kivy

  66. 2. Kivy

  67. 3. Toga

  68. Making it easy.

  69. Making an iOS project cookiecutter http://github.com/pybee/Python- iOS-template Download support tarball

    from http://github.com/Python-iOS-support Unpack tarball Compile and run
  70. Making an Android project cookiecutter http://github.com/pybee/Python- Android-template Download support tarball

    from http://github.com/Python-Android-support Unpack tarball Compile and run
  71. Option 1a pip install briefcase python setup.py ios python setup.py

    android
  72. python setup.py osx

  73. The future

  74. The future

  75. The threat

  76. The threat

  77. The opportunity

  78. The opportunity

  79. The potential and the potential audience for a Mobile Python

    is huge.
  80. Python Mobile-SIG russell@keith-magee.com @freakboy3742 pybee.org @PyBeeWare