How Do Binaries work together? What breaks ABI?

For two (dynamic) libraries to work together they need: API compatibility ABI compatibility If you have correct function, parameter names, and are able to access it (it’s not private) then you’re good. The compiler validates if classA is using the correct Programming Interface from classB 👈 API (Application Programming Interface) Example of API usage struct House { var address = Address(streetAddress: "1100 Happy St.") } struct Person { var address = Address("1100 Sad St....

October 20, 2024 · 10 min

⚡️ SERIES - Optimizing App Size

The series summarizes a six month journey where I leaerned a lot about compiler, linker, different kinds of linking, debug symbols, dSYM, xcframeworks, stripping, buiild settings, swiftc and more.

August 11, 2023 · 1 min
Difference between an app bundle and a binary

Whats the Difference Between an App (bundle) and a Binary

A binary is the linked product of all your source code. It’s executable. You can run commands against it. An app, is merely a wrapper / directory, which includes that binary and other things. How do you create a binary? First it’s important to understand what a binary is. You’ve used them every day in the terminal. Examples: ls, cp, mkdir. You pass certain parameters to them. They don’t have any file extension....

March 28, 2023 · 3 min

How cp case-insensitivity can cause chaos!

Been doing Advent of Code in the last couple of days. I completed Day 6. I have been doing it from an Xcode project. However I was thinking it would be nice if I could do it from command line. So I started to do some code clean up. First I started with renaming the folder from AOC to aoc. I did: cp -r AOC aoc I saw a new aoc directory created....

December 6, 2022 · 4 min

Why does pod lib lint suddenly fail to build?

I made some changes to the repo of our private pod. Pushed up my branch. Tests all ran. Then my colleague asked for some updates to my PR (pull request). I made changes and pushed it to GH. I wanted to merge the changes. But then CI was failing. So I ran CI again. It failed again. They say third time is the charm. So I ran it two more times....

October 24, 2022 · 6 min