Apache Cordova
  1. Apache Cordova
  2. CB-4863

Drop iOS 5.0 support, and support arm64

    Details

    • Type: Improvement Improvement
    • Status: Resolved
    • Priority: Minor Minor
    • Resolution: Fixed
    • Affects Version/s: 3.0.0
    • Fix Version/s: 3.5.0
    • Component/s: iOS
    • Labels:

      Description

      Adding this issue for discussion.

      We still support iOS 5.0 in the Deployment Target.
      iOS 6.0 and greater support enables arm64 support (64-bit) but not sure of any advantages there, really.

      Also, this is consistent with our previous support where we only support the current iOS version and one version back. Also, finding a device with iOS 5 support (besides the iPad 1, which cannot have iOS 6 support) is becoming problematic.

      iOS 6 API diffs from 5:
      https://developer.apple.com/library/ios/releasenotes/General/iOS60APIDiffs/index.html

      Apple's note regarding 64-bit support: https://developer.apple.com/news/index.php?id=9162013a

      If you wish to continue to support iOS 6 then you will need to build for 32-bit only. Next month we will be making changes that will allow you to create a single app binary that supports 32-bit on iOS 6, as well as 32-bit and 64-bit on iOS 7.

      So, based on that I think if we go ahead and support arm64 we wait for this 64-bit iOS fat binary functionality coming "next month". This probably will coincide with their Mavericks 10.9 OS and SDK release with the new accompanying Xcode bump.

        Issue Links

          Activity

          Hide
          ASF subversion and git services added a comment -

          Commit 412bd595539b09a2abbd903d7e20c30b810efb50 in cordova-ios's branch refs/heads/master from Shazron Abdullah
          [ https://git-wip-us.apache.org/repos/asf?p=cordova-ios.git;h=412bd59 ]

          CB-4863 - Drop iOS 5.0 support, and support arm64 (closes #90)

          Show
          ASF subversion and git services added a comment - Commit 412bd595539b09a2abbd903d7e20c30b810efb50 in cordova-ios's branch refs/heads/master from Shazron Abdullah [ https://git-wip-us.apache.org/repos/asf?p=cordova-ios.git;h=412bd59 ] CB-4863 - Drop iOS 5.0 support, and support arm64 (closes #90)
          Hide
          Shazron Abdullah added a comment -

          Starting Feb 1st, 2014, Xcode 5 is required:
          https://developer.apple.com/news/index.php?id=12172013a

          This is the perfect time to drop iOS 5.0 support, and support arm64.

          Show
          Shazron Abdullah added a comment - Starting Feb 1st, 2014, Xcode 5 is required: https://developer.apple.com/news/index.php?id=12172013a This is the perfect time to drop iOS 5.0 support, and support arm64.
          Hide
          Shazron Abdullah added a comment -
          Show
          Shazron Abdullah added a comment - ML discussion: http://markmail.org/thread/buaztlikukmy5p7n
          Hide
          Shazron Abdullah added a comment -

          From http://markmail.org/message/nwonogyjqm4nwkeg :
          Perf gains for 64 bit:
          http://www.mikeash.com/pyblog/friday-qa-2013-09-27-arm64-and-you.html

          TLDR;
          The 64-bit isa pointer for an Objective-C object only uses 31 bits, the
          rest of the 33 bits are used for an inline reference count. Previously,
          reference counting was in an external table. The old way was slower, thus
          the new way results in performance gains for object alloc/dealloc.

          Quoting:
          "My casual benchmarking indicates that basic object creation and
          destruction takes about 380ns on a 5S running in 32-bit mode, while it's
          only about 200ns when running in 64-bit mode. If any instance of the class
          has ever had a weak reference and an associated object set, the 32-bit time
          rises to about 480ns, while the 64-bit time remains around 200ns for any
          instances that were not themselves the target.

          In short, the improvements to Apple's runtime make it so that *object
          allocation in 64-bit mode costs only 40-50% of what it does in 32-bit mode*.
          If your app creates and destroys a lot of objects, that's a big deal."

          Show
          Shazron Abdullah added a comment - From http://markmail.org/message/nwonogyjqm4nwkeg : Perf gains for 64 bit: http://www.mikeash.com/pyblog/friday-qa-2013-09-27-arm64-and-you.html TLDR; The 64-bit isa pointer for an Objective-C object only uses 31 bits, the rest of the 33 bits are used for an inline reference count. Previously, reference counting was in an external table. The old way was slower, thus the new way results in performance gains for object alloc/dealloc. Quoting: "My casual benchmarking indicates that basic object creation and destruction takes about 380ns on a 5S running in 32-bit mode, while it's only about 200ns when running in 64-bit mode. If any instance of the class has ever had a weak reference and an associated object set, the 32-bit time rises to about 480ns, while the 64-bit time remains around 200ns for any instances that were not themselves the target. In short, the improvements to Apple's runtime make it so that *object allocation in 64-bit mode costs only 40-50% of what it does in 32-bit mode*. If your app creates and destroys a lot of objects, that's a big deal."
          Hide
          Shazron Abdullah added a comment -

          Default template:
          1. Select "Project -> Build Settings -> Architectures -> Architectures -> Standard Architectures (including 64-bit)"

          CordovaLib:
          1. Select "Project -> Build Settings -> Architectures -> Architectures -> Debug -> iphoneos7.* SDK -> Standard Architectures (including 64-bit)"
          2. Select "Project -> Build Settings -> Architectures -> Architectures -> Release -> iphoneos7.* SDK -> Standard Architectures (including 64-bit)"
          3. Add arm64 to "Project -> Build Settings -> Architectures -> Valid Architectures"

          Show
          Shazron Abdullah added a comment - Default template: 1. Select "Project -> Build Settings -> Architectures -> Architectures -> Standard Architectures (including 64-bit) " CordovaLib: 1. Select "Project -> Build Settings -> Architectures -> Architectures -> Debug -> iphoneos7.* SDK -> Standard Architectures (including 64-bit)" 2. Select "Project -> Build Settings -> Architectures -> Architectures -> Release -> iphoneos7.* SDK -> Standard Architectures (including 64-bit)" 3. Add arm64 to "Project -> Build Settings -> Architectures -> Valid Architectures "
          Hide
          Shazron Abdullah added a comment - - edited

          arm64 fat binary support is here with Xcode 5.01: http://lists.apple.com/archives/xcode-users/2013/Nov/msg00010.html (iOS 5.1.1 minimum deployment support though, bumped up)

          Show
          Shazron Abdullah added a comment - - edited arm64 fat binary support is here with Xcode 5.01: http://lists.apple.com/archives/xcode-users/2013/Nov/msg00010.html (iOS 5.1.1 minimum deployment support though, bumped up)

            People

            • Assignee:
              Shazron Abdullah
              Reporter:
              Shazron Abdullah
            • Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development