Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Significant iOS binary size increase with Rust 1.50 #3925

Closed
rfk opened this issue Mar 12, 2021 · 7 comments
Closed

Significant iOS binary size increase with Rust 1.50 #3925

rfk opened this issue Mar 12, 2021 · 7 comments
Assignees

Comments

@rfk
Copy link
Contributor

rfk commented Mar 12, 2021

As noted in mozilla-mobile/firefox-ios#8044 (comment), the v73.0.0 release of application-services has significantly increased compiled binary size (by nearly 30%, from 35M to 45M).

Some of that increase is due to the inclusion of Nimbus, but actually the largest contributor seems to be the switch from Rust 1.43 to Rust 1.50. Here's the size of a local build of v73.0.0 done using Rust 1.50, which matches what we see in the release artifact:

[rfk] repos/mozilla/application-services (git)-[tags/v73.0.0] % du -hs Carthage/Build/iOS/MozillaAppServices.framework/MozillaAppServices                                                
 46M    Carthage/Build/iOS/MozillaAppServices.framework/MozillaAppServices

Here's the same when built with Rust 1.43, the toolchain we used for previous releases:

[rfk] repos/mozilla/application-services (git)-[tags/v73.0.0] % du -hs Carthage/Build/iOS/MozillaAppServices.framework/MozillaAppServices
 40M    Carthage/Build/iOS/MozillaAppServices.framework/MozillaAppServices

I confirmed that if I manually remove Nimbus from the build, we get back down to around 35M, which was approximately the size of the previous release.

┆Issue is synchronized with this Jira Task

@rfk
Copy link
Contributor Author

rfk commented Mar 12, 2021

(Which, +5M still seems like a lot for Nimbus to be honest, but that's a separate question...)

@dmose
Copy link
Member

dmose commented Mar 16, 2021

Random thoughts:

@dmose
Copy link
Member

dmose commented Mar 16, 2021

Other things to try:

  • look at the LLVM 10 and 11 release notes, see if anything is mentioned there, particularly stuff controllable from the command-line
  • look the LLVM 10 and 11 github issues and PRs for rustc, and see if anyone noticed this along the way

@dmose
Copy link
Member

dmose commented Mar 16, 2021

@rfk since you've got both builds around, can you try running cargo bloat to see if it yields any interesting info?

@dmose
Copy link
Member

dmose commented Mar 17, 2021

If the problem is LLVM-upgrade-related, interestingly, LLVM12 has landed in nightly rustc, so maybe that'll change things yet again...

@dmose
Copy link
Member

dmose commented Mar 17, 2021

@dmose
Copy link
Member

dmose commented Mar 17, 2021

cargo-bisect-rustc might help us sort this out too...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants