If you followed the recent Apple events, you probably saw a picture of the A14 and M1 dies… that got me thinking about what you would see if you could pass iOS under X-Rays…
In my previous article about the evolution of the programming languages from iPhone OS 1.0 to iOS 14, I analyzed iOS based on the number of binaries and their programming languages. As I pointed out in this past post, the size of the binaries were not taken in account. In this new article, I look at iPhone OS 1.0 and iOS 14 from a size perspective using tree maps.
To produce the images in this article, I extracted the root filesystem (including the dyld shared cache) of each major iOS release:
|iOS 14.0 (18A373)||iPhone X|
|iOS 13.1 (17A844)||iPhone X|
|iOS 12.0 (16A366)||iPhone X|
|iOS 11.1 (15B93)||iPhone X|
|iOS 10.1 (14B72)||iPhone 5s|
|iOS 9.0 (13A344)||iPhone 5s|
|iOS 8.0 (12A365)||iPhone 5s|
|iOS 7.0.1 (11A470a)||iPhone 5s|
|iOS 6.0 (10A403)||iPhone 3GS|
|iOS 5.0 (9A334)||iPhone 3GS|
|iOS 4.0 (8A293)||iPhone 3GS|
|iPhone OS 3.0 (7A341)||iPhone 3GS|
|iPhone OS 2.0 (5A347)||iPhone 2G|
|iPhone OS 1.0 (1A543a)||iPhone 2G|
I then created a tree map. You might be familiar with tree maps as they are often used to visualize a file hierarchy to give you a graphical overview of the structure. One key characteristic is that each file is shown as a rectangle with an area proportional to the file’s size. The tree maps displayed in this article have been created using the awesome GrandPerspective and annotated with Pixelmator.
iPhone OS 1.0
Let’s look at what you would see if you could scan iPhone OS 1.0 using X-Rays:
The diagram below highlights some of the major functional blocks:
We can already notice that:
- The structure is quite simple and has similarities to macOS
- Frameworks are taking more than a third of the size
- Fonts are taking more than 25% of the whole operating system
We can go one level deeper and identify all the components:
From the list of components, we can clearly determine all the main features of iPhone OS 1.0:
- Safari + Web
- Office support
- Audio player
- Video player
A couple of components worth mentioning:
- The UIKit framework is taking more than 13 % of the total size
- The wallpapers and ringtones count for 6 %
- ICU (International Components for Unicode) takes more than 5 %
- SpringBoard is roughly 2 %
Fonts in iPhone OS 1.0
On popular demand, I added this section to provide more info about the fonts.
Fonts block is composed of 2 parts:
- the fonts representing 2/3 of the size
- some caches (visible at the top of the area and representing a third of the size)
For the font lovers, here is the complete list of fonts in iPhone OS 1.0:
AmericanTypewriter.ttf AmericanTypewriterBold.ttf AmericanTypewriterCondensed.ttf AmericanTypewriterCondensedBold.ttf AmericanTypewriterCondensedLight.ttf AmericanTypewriterLight.ttf Arial.ttf ArialBold.ttf ArialBoldItalic.ttf ArialItalic.ttf ArialRoundedMTBold.ttf arialuni.ttf CourierBoldOblique.ttf CourierNew.ttf CourierNewBold.ttf CourierNewBoldItalic.ttf CourierNewItalic.ttf CourierOblique.ttf DB_LCD_Temp-Black.ttf Georgia.ttf GeorgiaBold.ttf GeorgiaBoldItalic.ttf GeorgiaItalic.ttf Helvetica.ttf HelveticaBold.ttf HelveticaBoldOblique.ttf HelveticaOblique.ttf LockClock.ttf MarkerFeltThin.ttf MarkerFeltWide.ttf PhonepadTwo.ttf TimesNewRoman.ttf TimesNewRomanBold.ttf TimesNewRomanBoldItalic.ttf TimesNewRomanItalic.ttf TrebuchetMS.ttf TrebuchetMSBold.ttf TrebuchetMSBoldItalic.ttf TrebuchetMSItalic.ttf Verdana.ttf VerdanaBold.ttf VerdanaBoldItalic.ttf VerdanaItalic.ttf Zapfino.ttf
The cache contains info for all these fonts and includes the 2 extra files:
Fast forward to a few years later
I won’t give details about each iOS release but you can inspect the tree maps from iPhone OS 2.0 to iOS 13.1:
|iPhone OS 2.0||iPhone OS 3.0||iOS 4.0|
|iOS 5.0||iOS 6.0||iOS 7.0.1|
|iOS 8.0||iOS 9.0||iOS 10.1|
|iOS 11.1||iOS 12.0||iOS 13.1|
Note that the number of building blocks increased with each new iOS release and the components are becoming smaller.
We are now in 2020 and iOS 14 is available. Without a surprise, iOS 14 is way more complex than iPhone OS 1.0:
Here is the diagram highlighting the functional blocks in iOS 14:
We can note that the main structure is still fairly similar to the original iPhone OS 1.0 version: the fonts, frameworks, applications, library, /usr, … are still there.
There are however a couple of big differences:
- iOS 14 contains a lot of
Linguistic Data. As far as I can tell, these components are used for on-device machine learning: language detector, voices, tokenizers, vocalizers, …
- The dyld shared cache, a caching mechanism introduced in iPhone OS 3.1, causes the Frameworks and Private Frameworks to be split in several areas. The dyld shared cache has been marked with the red box in the diagram.
- Health is clearly an important feature of iOS 14.
There are so many components in iOS 14 that it is way more complex to identify all of them. I gave it a try nonetheless:
Although it is now difficult to list all the features, there are some clear trends:
- iOS 14 is packed with on-device machine learning technologies: Face Detection, Deep Convolutional Networks, Vision frameworks, Text Recognition, Neural Network, …
- A lot of components are related to the camera and photos: Effects, Memories, video processing, photo library, …
- Siri and voices are clearly visible.
- As we already mentioned, Health is an important feature.
- We can identify a couple of features added over the years: HomeKit, Watch, CarPlay, Spotlight, Emoji 🤟, News, iWork, Wallet, Shortcuts, ARKit, …
- Fonts are now counting for less than 6 % of the size
- Linguistic Data represent almost 8 % of the size
- Although the ICU size was multiplied by more than 3 since iPhone OS 1.0, it now represents approximatively 0.5% of the total
Comparing iPhone OS 1.0 with iOS 14.0
For readability the previous tree maps in this article were all displayed using the same size. If we present iPhone OS 1.0 next to iOS 14 with a proportional area, you would see that the whole iPhone OS 1.0 is basically taking the size of the iOS 14 wallpapers:
When iPhone OS 1.0 was released in 2007, it redefined the smartphone with a limited set of core features. Nowadays iOS 14 contains an incredible amount of components. By looking at them based on their size, we can determine the most important features. We thus distinctly see Apple’s AI push into on-device machine learning with technologies like object detection in images and video, language analysis, sound classification and text recognition.
- Added fonts in the iPhone OS 1.0 tree map
- Added fonts in the iOS 14 tree map
- Add section with fonts info for iPhone OS 1.0