1.14.1
What’s Changed
Since 1.14.0
- Fixed incremental installer: #2825
Below are the changes that were in 1.14.0.
New
- Added a new incremental generation mode
- 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)
- Clean
- Lower Starlark memory usage (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)
- Improved Xcode Previews support
- For maintainers, vastly improved maintainability (docs, tests, code structure, etc.)
- Much faster generation. Numbers from a large example project:
- This is currently opt in
- Set
xcodeproj.generation_mode
to"incremental"
to try it out - Use
xcodeproj.xcschemes
, instead ofxcodeproj.schemes
, if you define custom schemes - Note: Only BwB mode is supported
- Set
- 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
- Added a Bzlmod dependency on
rules_python
0.27.1
: #2793
Adjusted
- Added recognition of additional
deps
attributes for rules_ios bundle rules: #2750 - Archived bundles are now extracted with Bazel instead of in
copy_outputs.sh
: #2779 cc_common.merge_cc_infos
is now only called if needed: #2762- Disabled the
GenerateTAPI
Xcode action: #2724 - Improved handling of source-less library targets: #2714
- Optimized some Starlark CPU usage: #2760
- Optimized some Starlark retained memory usage: #2769 and #2777
- Upgraded bazel_features to 1.1.1: #2718
- Upgraded apple_support, rules_apple, and rules_swift in
WORKSPACE
macro: #2824 - Removed
--collect_specs
support: #2803 - Removed
DEPLOYMENT_LOCATION
hack when using BwB mode: #2790
Ruleset Development Changes
Full Changelog
Contributors
Bzlmod Snippet
bazel_dep(name = "rules_xcodeproj", version = "1.14.1")
release.tar.gz
’s integrity
: sha256-Y3lwAEzeEmnSFNHC9Ol+geTWkBuuwI9Q4O6arJfBeHg=
Workspace Snippet
Please use the release asset (release.tar.gz
) from your Bazel WORKSPACE
instead of GitHub's source asset to reduce download size and improve reproducibility.
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_xcodeproj",
sha256 = "637970004cde1269d214d1c2f4e97e81e4d6901baec08f50e0ee9aac97c17878",
url = "https://github.com/MobileNativeFoundation/rules_xcodeproj/releases/download/1.14.1/release.tar.gz",
)
load(
"@rules_xcodeproj//xcodeproj:repositories.bzl",
"xcodeproj_rules_dependencies",
)
xcodeproj_rules_dependencies()
load("@bazel_features//:deps.bzl", "bazel_features_deps")
bazel_features_deps()
load(
"@build_bazel_rules_apple//apple:repositories.bzl",
"apple_rules_dependencies",
)
apple_rules_dependencies()
load(
"@build_bazel_rules_swift//swift:repositories.bzl",
"swift_rules_dependencies",
)
swift_rules_dependencies()
load(
"@build_bazel_rules_swift//swift:extras.bzl",
"swift_rules_extra_dependencies",
)
swift_rules_extra_dependencies()
load(
"@build_bazel_apple_support//lib:repositories.bzl",
"apple_support_dependencies",
)
apple_support_dependencies()