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

Reduce code size and make codebase more consistent #2305

Merged
merged 63 commits into from
Dec 27, 2022
Merged

Conversation

zorgiepoo
Copy link
Member

@zorgiepoo zorgiepoo commented Dec 23, 2022

This (big cleanup) reduces Sparkle's code size and makes the code style more consistent by:

  • Stripping all non-global symbols (instead keeping debug symbols) for the framework (developers should refer to the dSYMs we distribute or that they build)
  • Removing Obj-C properties in private interfaces and replacing them with instance variables, preferring ivar access whenever possible
  • Using Obj-C direct attributes for internal classes and methods when possible and not exposed to the developer
  • Ordering ivar members from largest -> smallest in terms of data size
  • Always using __typeof__(self) of when doing strong/weak self dance
  • Using nonatomic for Obj-C properties whenever possible
  • Enabling -Wcustom-atomic-properties and -Wimplicit-atomic-properties warnings
  • Removing old code that was trying to suppress of -Wdirect-ivar-access
  • Adding preprocessor feature flags to disable unused features for developers forking/compiling Sparkle from source, including an additional option to strip all localizations
  • Adding preprocessor checks against needing to perform @available checks based on configured deployment target
  • Adding BUILDING_SPARKLE_SOURCES_EXTERNALLY define for consistency between unit tests and Swift tools
  • Removing SULocalizedString() and passing bundle & table manually

Smallest Sparkle (with UI bits removed and no localizations): ~1.5 MB
Standard Sparkle: ~2.8 MB
Standard Sparkle with XPC Services removed: ~2.3 MB
Standard Sparkle in 2.3.1: ~5 MB for comparison

Misc Checklist

  • My change requires a documentation update on Sparkle's website repository
  • My change requires changes to generate_appcast, generate_keys, or sign_update

Only bug fixes to regressions or security fixes are being backported to the 1.x (master) branch now. If you believe your change is significant enough to backport, please also create a separate pull request against the master branch.

Testing

I tested and verified my change by using one or multiple of these methods:

  • Sparkle Test App
  • Unit Tests
  • My own app
  • Other (please specify)

Tested running Unit tests and tested this with my own app and the test app. Testing this in CI now.

macOS version tested: 10.14 VM, 13.0.1 (22A400)

This change deprecates -[SPUUpdater setFeedURL:] and logs warnings when the updater detects that feed URLs from user defaults are still being used.

This change also logs a warning when checkForUpdatesInBackground is used incorrectly if Sparkle is configured to ask the user's permission to check for updates but a check is done when automatic update checking is NO.
@zorgiepoo zorgiepoo added this to the 2.4 milestone Dec 23, 2022
@zorgiepoo zorgiepoo merged commit be7f695 into 2.x Dec 27, 2022
@zorgiepoo zorgiepoo deleted the slim-sparkle branch December 27, 2022 20:03
danielpunkass added a commit to danielpunkass/Sparkle that referenced this pull request Feb 27, 2023
…s on my branch.

* commit '362f50a8a19cfb1a18202c5912ce4ce6f94d0190': (60 commits)
  Exit with an error if generate_appcast cannot sign an update (sparkle-project#2322)
  Update SUVersionDisplay to allow including build versions and update information (sparkle-project#2321)
  Update Package management files for version 2.3.2
  Update CHANGELOG for 2.3.2
  Remove unnecessary min macro checks (sparkle-project#2318)
  Add support for plain text release notes view (sparkle-project#2315)
  Don't construct appcast item if enclosure URL is invalid (sparkle-project#2317)
  Finnish localization grammar fixes (sparkle-project#2311)
  Reduce code size and make codebase more consistent (sparkle-project#2305)
  Add delegate method to hide showing version history option (sparkle-project#2303)
  Update Package management files for version 2.3.1
  Update CHANGELOG for 2.3.1
  Add deprecations/warnings for incorrect feed & update checking usage (sparkle-project#2295)
  Log the URL that failed to download correctly (sparkle-project#2296)
  Remove duplicate Sparkle localization strings in Updater app (sparkle-project#2288)
  Ask permission for automatically downloading and installing new updates (sparkle-project#2285)
  Upgrade CI to default to using Xcode 14.1 (sparkle-project#2287)
  Enable deployment post processing for Release configurations (sparkle-project#2286)
  Fix update permission alert title text overlapping with question text (sparkle-project#2284)
  Update Czech translation (sparkle-project#2275)
  ...
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

Successfully merging this pull request may close these issues.

1 participant