You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This issue doesn't include every PR that went into implementing incremental generation mode. It's primary purpose is to track high level changes on the way to completion of the feature.
What is it/why should I use it?
Incremental generation mode is a new way for rules_xcodeproj to generate your project. Unlike the Build Mode (BwB or BwX), this should only really affect the process by which rules_xcodeproj takes to generate the project, not how the project itself behaves (with some small caveats). Here are some of the benefits of using incremental generation mode over the current (a.k.a "legacy") generation mode:
Much faster generation. Numbers from a large example project:
Clean
Analysis: 12% faster (62s vs 71s)
Execution: 41% faster (72s vs 123s)
Minimal incremental (add file to a top-level target)
Analysis: 36% faster (13s vs 21s)
Execution: 93% faster (8.5s vs 123s)
Lower Starlark memory usage (I need to do a little more work to get bigger gains)
Currently estimated to be about 33% lower
Improved target consolidation and target merging
Some targets can now consolidate better
Libraries can merge into multiple top-level targets
Mixed-language targets merge better
Improved indexing
All Swift compiler flags are now in the project, working around more SourceKit issues
Improved debugging
Improved handling of extra files (mainly around target focusing)
Depend on that release archive with archive_override (Bzlmod) or http_archive (WORKSPACE)
Be sure to set the hash correctly, to pick up changes if you upgrade to a newer version
I highly recommend using this method, instead of pointing to a source archive or git_repository, because incremental generation mode uses many generators, and your initial generation time can be a lot slower without using a release archive
Use xcodeproj.generation_mode = "incremental"
(Optionally) use xcodeproj.xcschemes (you need to use this instead ofxcodeproj.schemes)
This issue doesn't include every PR that went into implementing incremental generation mode. It's primary purpose is to track high level changes on the way to completion of the feature.
What is it/why should I use it?
Incremental generation mode is a new way for rules_xcodeproj to generate your project. Unlike the Build Mode (BwB or BwX), this should only really affect the process by which rules_xcodeproj takes to generate the project, not how the project itself behaves (with some small caveats). Here are some of the benefits of using incremental generation mode over the current (a.k.a "legacy") generation mode:
Early access
You can try out incremental generation mode before everything lands by doing the following:
wip/incremental-generation-mode
brancharchive_override
(Bzlmod) orhttp_archive
(WORKSPACE
)git_repository
, because incremental generation mode uses many generators, and your initial generation time can be a lot slower without using a release archivexcodeproj.generation_mode = "incremental"
xcodeproj.xcschemes
(you need to use this instead ofxcodeproj.schemes
)The
//tools:xcodeproj
target shows an example.Progress
pbxproj_prefix
PBXProject
prefixPBXProj
partial generator #2155files_and_groups
files_and_groups
generator #2243pbxtargetdependencies
pbxproject_targets
generator #2351import_indexstores
import_indexstores.sh
into a Swift binary #2671xcschemes
XCScheme
library #2578xcschemes
generator #2678xcschemes
generator #2814xcschemes
Starlark integration #2686target_build_settings
TargetSwiftDebugSettings
toPBXProj
#2708target_build_settings
generator #2704target_build_settings
generator #2815target_build_settings
Starlark integreation #2737swift_debug_settings
swift_debug_settings
generator #2707swift_debug_settings
generator #2816swift_debug_settings
Starlark integration #2738pbxnativetargets
pbxnativetargets
generator #2712pbxnativetargets
generator #2817pbxnativetargets
Starlark integration #2800pbxproj_partials.write_targets
#2818.xcfilelist
spbxproj_partials.write_generated_xcfilelist
#2801pbxproj_partials.write_generated_xcfilelist
#2819project.pbxproj
pbxproj_partials.write_project_pbxproj
#2811pbxproj_partials.write_project_pbxproj
#2820Other Starlark
The text was updated successfully, but these errors were encountered: