Search Unity

Welcome to round two of our weekly blog update covering progress with stabilization and optimization of iOS 64-bit support in Unity 4.6 and 5.0! One of the most visible changes this week is that 5.0.1p1 includes the build size reductions that previously shipped in 4.6.4p2. You’ll also find further fixes to generics and WebRequest, amongst many others. We still highly recommend that all production teams working toward releasing iOS 64-bit titles adopt every patch release as it ships.

Remember:  All patch releases for 4.6 and 5.0 can be found at

And all monthly maintenance releases for 4.6 and 5.0 can be found at

And now for this week’s updates:

Status of 64-bit/Metal support in Unity 5.0.x

  • 5.0.1p1 shipped Wednesday, April 15.  The weekly 5.0.x patch release schedule resumed this week and and will continue going forward.  The build includes new fixes in addition to those introduced in 4.6.4p1 and 4.6.4p2.
  • Download and view the latest release notes for Unity 5.0.1p1 at

Status of 64-bit/Metal support in Unity 4.6

  • Unity 4.6.4p3 shipped today, April 17th.  In addition to a long list of il2cpp fixes, it contains new WebRequest fixes and first set of build size improvements.
  • Download and view the latest release notes for Unity 4.6.4p3 at

Our current release plan

  • 5.0 patch releases are scheduled to be released each week on Wednesdays.
  • 4.6 patch releases are scheduled to be released each week on Fridays.

Some important info to remember

  • It is necessary to update your projects to 4.6 at the very least to enjoy 64-bit support on iOS. 64-bit will only ship in 4.6.x and 5.x releases.
  • Apple has announced that they will require all apps on the store to include 64-bit support with any updates as of June 1, 2015.
  • We are doing weekly releases with all bugfixes. We can’t fix bugs if they’re not reported, so please report any issues with il2cpp builds the moment you discover them.
  • Internally, our developers collaborate on a single version of IL2CPP which is ported to 4.6 and 5.0 -based patch release branches at the last possible moment in order to release as many fixes and improvements as possible in each release. The cutoff date for fixes in each weekly patch release is several days before the release, to give us time to test and approve each release.

About the binary size increase issue

We’re still working hard behind the scenes to address increased runtime executable file sizes when using il2cpp.  Further improvements were addressed in 5.0.1p1 and 4.6.4p3 with more improvements underway.

For reference and more context about what is going on with iOS 64-bit and Apple’s requirements, please check out the blog post on iOS & ARM64 here, and our in-depth strategic plan for IL2CPP here.

Our plan is to update these posts on a weekly basis so make sure to check back next week to get a heads up on the latest progress with 64-bit iOS support and il2cpp!

Comments are closed.

  1. Just keep your word. You said weekly.

  2. Please tell me what additional information you need from me to help troubleshoot the following problem…

    I’ve updated to Unity 4.6.4p3 for my project, which is a realtime, multiplayer game that uses uLink networking. It builds and runs fine on iOS using the Mono (2.x) scripting backend, but when I change to IL2CPP, I get the following exception when attempting to load the scene that connects the client to the server…

    -> 0x1d465dc : ldr r0, [r0, #0x28]
    0x1d465e0 : bx lr

    expanding the tree shows…

    this NetworkManager * NULL 0x00000000
    GlobalGameManager GlobalGameManager
    GameManager GameManager
    Object Object
    m_MessageQueueRunning bool
    m_Sendrate float
    m_LastSendTime float
    m_PeerType int
    m_PlayerID int
    m_HighestPlayerID int
    m_MinimumAllocatableViewIDs int
    m_Peer RakPeerInterface * NULL
    m_Packet Packet * NULL
    systemAddress SystemAddress
    binaryAddress uint32_t
    port unsigned short
    systemIndex SystemIndex
    guid RakNetGUID
    g uint64_t
    systemIndex SystemIndex
    length unsigned int
    bitSize BitSize_t
    rcvPort unsigned short
    data unsigned char * NULL
    *data unsigned char
    deleteData bool
    m_LevelPrefix int
    m_BitStream RakNet::BitStream
    numberOfBitsUsed BitSize_t
    numberOfBitsAllocated BitSize_t
    readOffset BitSize_t
    data unsigned char * NULL
    copyData bool
    stackData unsigned char [256]
    m_ServerAddress SystemAddress
    binaryAddress uint32_t
    port unsigned short
    systemIndex SystemIndex
    m_ServerPassword std::string
    _M_dataplus std::basic_string<char, std::char_traits, std::allocator >::_Alloc_hider
    m_ServerGUID RakNetGUID
    g uint64_t
    systemIndex SystemIndex
    m_RPCBuffer NetworkManager::RPCBuffer
    m_Sources NetworkManager::NetworkViewList
    m_Root ListElement
    m_NonSyncSources NetworkManager::NetworkViewList
    m_Root ListElement
    m_AllSources NetworkManager::NetworkViewList
    m_Root ListElement
    m_Players NetworkManager::PlayerAddresses
    m_DebugLevel int
    m_NetworkViewIDAllocator NetworkViewIDAllocator
    m_AllocatedViewIDBatches NetworkViewIDAllocator::AllocatedViewIDBatches
    m_ReceivedBatches NetworkViewIDAllocator::ReceivedBatches
    m_AvailableBatches NetworkViewIDAllocator::AvailableBatches
    m_BatchSize int
    m_MinAvailableViewIDs int
    m_RequestedBatches int
    m_ClientPlayer NetworkPlayer
    m_ServerPlayer NetworkPlayer
    m_SendingEnabled UInt32
    m_ReceivedInitialState UInt32
    m_DoNAT bool
    m_NatPunchthrough NatPunchthroughClient
    PluginInterface2 PluginInterface2
    mostRecentNewExternalPort unsigned short
    sp NatPunchthroughClient::SendPing
    pc PunchthroughConfiguration
    natPunchthroughDebugInterface NatPunchthroughDebugInterface * NULL
    failedAttemptList DataStructures::List
    m_FacilitatorID SystemAddress
    binaryAddress uint32_t
    port unsigned short
    systemIndex SystemIndex
    m_ConnectingAfterPing bool
    m_PingConnectTimestamp time_t
    m_OldMasterServerID SystemAddress
    binaryAddress uint32_t
    port unsigned short
    systemIndex SystemIndex
    m_OldFacilitatorID SystemAddress
    binaryAddress uint32_t
    port unsigned short
    systemIndex SystemIndex
    m_UsedInitIndices dynamic_bitset
    dynamic_bitset_base dynamic_bitset_base
    m_ConnTester ConnectionTester * NULL
    m_ConnStatus int
    m_TestRunning int
    m_Peer RakPeerInterface * NULL
    m_NATPunchthrough NatPunchthroughClient
    m_NatTypeDetection RakNet::NatTypeDetectionClient * NULL
    m_ConnTesterAddress SystemAddress
    m_Timestamp time_t
    m_ConnStatus int
    m_ConnTesterAddress SystemAddress
    binaryAddress uint32_t
    port unsigned short
    systemIndex SystemIndex
    m_MaxConnections int
    m_PingThread Thread
    m_Thread PlatformThread
    m_UserData void * NULL
    m_EntryPoint void *(*)(void *) NULL
    m_Running bool
    m_ShouldQuit bool
    m_Priority ThreadPriority
    m_Name const char * NULL
    m_PingQueue NetworkManager::PingQueue
    c std::deque<Ping *, std::allocator >
    m_ProxyAddress SystemAddress
    binaryAddress uint32_t
    port unsigned short
    systemIndex SystemIndex
    m_UseProxy bool
    m_ProxyPassword std::string
    _M_dataplus std::basic_string<char, std::char_traits, std::allocator >::_Alloc_hider
    m_RelayPort unsigned short
    m_AssetToPrefab NetworkManager::AssetToPrefab
    m_PrefabToAsset NetworkManager::PrefabToAsset

  3. Rajpreet Dhillon

    April 20, 2015 at 1:38 pm

    The last update seems to have fixed everything for my game. All seems to be working … let’s hope 5.0.1.p2 doesn’t break it. :)

  4. Saw some massive (or very noticeable) speed improvements using Metal. Before I wasn’t using it because it was so buggy that the game crashed a lot.

    Now the game crashes on (At least) the iPhone 6 with Open GL ES 3, so I’m a bit worried that non-metal devices will end up crashing if the graphics goes back to that instead automatically. I’m also getting a graphics error (visual) when using shadows & Metal, where the characters seems to turn into solid colors for single frames.

    Hopefully future patch releases will fix this.