Apple Has Significantly Improved App Launching in iOS 15, macOS Monterey
As noted by iOS developer and former Apple employee Noah Martin, Apple has significantly changed the way apps communicate with the system in Xcode 13, which could dramatically reduce the time it takes to launch the apps in iOS 15 and macOS Monterey (via MacWorld).
Here’s what Apple notes in the release notes for Xcode 13:
All programs and dylibs built with a deployment target of macOS 12 or iOS 15 or later now use the chained fixups format. This uses different load commands and LINKEDIT data, and won’t run or load on older OS versions.
As explained by Martin, iOS and macOS apps are created as bundles and are equipped with the most necessary components within a package. These apps also load shared libraries with the dynamic linker process (dyld), which are then copied to the system’s RAM to be quickly accessed while the program is running.
The RAM consists of so-called pages that have only 16 kilobytes of capacity each and stay as long as the app is running. The dyld process has so far gradually packed these tables, which essentially delayed app launches.
Apple solved the problem in iOS 15 and macOS 12 with chains, fixups and pointers—instead of gradually loading the individual app components and the shared libraries separately into RAM, a pointer can thus chain apps up to 64 gigabytes and connect them to each other via the fixups.
The RAM content is now interconnecting to each other in a chain. This saves enormous amounts of metadata that is otherwise spent on management, which makes the entire RAM management much more efficient.
You can learn more about how these changes work in a lengthy article over at Medium.