Joined July 2019
I'm seeing similar results in our biggest project. Linking time for a typical incremental build goes from over 10s to 3s in Xcode 15 with ld-prime!
The new linker in Xcode 15 lives up to the hype! ~6s -> ~1.5s for our largest target.
4
36
12,903
Davide Italiano retweeted
The new linker in Xcode 15 lives up to the hype! ~6s -> ~1.5s for our largest target.
2
19
3
150
31,723
Davide Italiano retweeted
Replying to @davidecci
When Venkatadri Seshadri and I presented on concurrent compilation in 1987 at IFIP/Distributed Processing, there was very little published. We focussed on low-hanging fruit at the front-end of the pipeline. Wonderful to see concurrency make it all the way through to the linker.
1
1
4,384
Davide Italiano retweeted
Who knew, static linking still hot 💪
Today at WWDC we introduced a new static linker. It is a ground-up rewrite that’s up to 5x faster than ld64. The new linker is written with multicore in mind, and it’s the first production ready parallel linker officially supported for iOS development. (1/n)
3
3
45
7,739
Davide Italiano retweeted
Hope everyone enjoyed the SOTU presentation! We have an brand new linker this year, and some really cool new features like mergeable libraries. There is a session on Wednesday, and team members will be in labs throughout the week. developer.apple.com/wwdc23/1… #WWDC23
2
9
51
9,894
I consider myself fortunate enough to have had the opportunity to support these two projects, both of which were successfully developed by an exceptional small team of individuals.
My team also worked on a new library format: mergeable libraries. Mergeable libraries combine the benefits of static and dynamic libraries, providing the best performance without sacrificing development velocity. (1/n)
3
13
2,910
What's even more thrilling is observing that, despite linkers and loaders having a long history, there is still ample potential for advancing the state of the art in this field.
9
1,169
My team also worked on a new library format: mergeable libraries. Mergeable libraries combine the benefits of static and dynamic libraries, providing the best performance without sacrificing development velocity. (1/n)
Today at WWDC we introduced a new static linker. It is a ground-up rewrite that’s up to 5x faster than ld64. The new linker is written with multicore in mind, and it’s the first production ready parallel linker officially supported for iOS development. (1/n)
3
72
9
360
86,007
Mergeable libraries are dynamic libraries plus metadata that allow the static linker to perform a relinking step. At the core lies the concept that the metadata hold sufficient information to reconstruct the original object files.
1
2
3
45
8,658
In development, mergeable libraries act like “regular” dylibs, for maximum development productivity. In release, the linker can use the extra metadata to merge multiple libraries together and perform the kind of optimizations that would happen in a static library build.
3
3
1
63
5,788
Today at WWDC we introduced a new static linker. It is a ground-up rewrite that’s up to 5x faster than ld64. The new linker is written with multicore in mind, and it’s the first production ready parallel linker officially supported for iOS development. (1/n)
18
263
46
1,565
370,780
When designing the new linker, we decided to go all-in. Every single operation is now performed in a parallel fashion. From symbol resolution to building linker metadata structures (debug notes, fixups, export trie etc.).
1
4
112
20,638
As a result, the new linker is able to link very large binaries in a fraction of the time, making the whole edit-build-debug cycle much faster and interactive for developers.
5
4
1
203
19,112