Skip to content

Releases: MobileNativeFoundation/rules_xcodeproj

2.1.1

09 Apr 15:29
2.1.1
69d672c
Compare
Choose a tag to compare

What’s Changed

Since 2.1.0

  • Upgraded WORKSPACE and dev rules_apple: #3002
  • Upgraded dev rules_swift: #3003
  • Fixed missing BAZEL_PACKAGE_BIN_DIR for non-Swift targets in incremental generation mode: #3004

Below are the changes that were in 2.1.0.

Adjusted

  • Added module.bazel_compatibility to reflect our minimum supported Bazel version: #2995
  • Upgraded WORKSPACE version of rules_swift and rules_apple: #2996

Fixed

  • Fixed extension_host error when using launch_path: #2992
  • Test hosts are no longer included in schemes when adjust_schemes_for_swiftui_previews = True: #2991
  • The correct action (e.g. Test or Run) is now set for transitive Xcode Preview dependencies: #2993

Ruleset Development Changes

  • Upgraded dev version of rules_swift and rules_apple: #2996

Full Changelog

2.0.0...2.1.1

Contributors

Bzlmod Snippet

bazel_dep(name = "rules_xcodeproj", version = "2.1.1")

release.tar.gz’s integrity: sha256-w4cknrUOEOiCgdg4tqjUvykKxNBpeAjvA65EL0tWNos=

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 = "c387249eb50e10e88281d838b6a8d4bf290ac4d0697808ef03ae442f4b56368b",
    url = "https://github.com/MobileNativeFoundation/rules_xcodeproj/releases/download/2.1.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()

2.1.0

05 Apr 17:39
2.1.0
de3089f
Compare
Choose a tag to compare

What’s Changed

Adjusted

  • Added module.bazel_compatibility to reflect our minimum supported Bazel version: #2995
  • Upgraded WORKSPACE version of rules_swift and rules_apple: #2996

Fixed

  • Fixed extension_host error when using launch_path: #2992
  • Test hosts are no longer included in schemes when adjust_schemes_for_swiftui_previews = True: #2991
  • The correct action (e.g. Test or Run) is now set for transitive Xcode Preview dependencies: #2993

Ruleset Development Changes

  • Upgraded dev version of rules_swift and rules_apple: #2996

Full Changelog

2.0.0...2.1.0

Contributors

Bzlmod Snippet

bazel_dep(name = "rules_xcodeproj", version = "2.1.0")

release.tar.gz’s integrity: sha256-pn04vd6/nJZNK1P143Qud+SPryzqXHj7/37DmzWG07g=

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 = "a67d38bddebf9c964d2b53f5e3742e77e48faf2cea5c78fbff7ec39b3586d3b8",
    url = "https://github.com/MobileNativeFoundation/rules_xcodeproj/releases/download/2.1.0/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()

2.0.0: Incremental generation mode enabled by default

03 Apr 15:57
2.0.0
fca6cfb
Compare
Choose a tag to compare

What’s Changed

⚠️ Breaking changes ⚠️

New

  • Environment variables are now resolved in bazel_env: #2983
  • additional_*_inputs are now collected as extra files in incremental generation mode: #2972
  • swiftc_inputs are now collected as extra files in incremental generation mode: #2971

Adjusted

  • Reduced work that incremental generation mode installer does for generated directories: #2956 & #2965
  • The adjusted Info.plist is now used for extension_infoplists in incremental generation mode: #2966
  • exec configuration targets are no longer processed in incremental generation mode: #2968

Fixed

  • Indentation related project_options are now applied in incremental generation mode: #2959
  • Uncategorized files are no longer collected for unfocused targets in incremental generation mode: #2960 & #2982
  • Uncategorized files are no longer collected for source-less library targets in incremental generation mode: #2969
  • The swift generated header is now excluded from the project in incremental generation mode: #2961
  • codesign_inputs are now collected as extra files in incremental generation mode: #2970
  • Fixed build_mode to be set bazel when passed in None or "": #2987

Ruleset Development Changes

  • Locked down distribution to a specific Xcode version: #2954

Full Changelog

1.18.0...2.0.0

Contributors

Bzlmod Snippet

bazel_dep(name = "rules_xcodeproj", version = "2.0.0")

release.tar.gz’s integrity: sha256-ZEARdZYhfJ4Fxp7t1MyKprj+4RkbKrRhckF8yi95FiM=

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 = "6440117596217c9e05c69eedd4cc8aa6b8fee1191b2ab46172417cca2f791623",
    url = "https://github.com/MobileNativeFoundation/rules_xcodeproj/releases/download/2.0.0/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()

1.18.0

12 Mar 19:57
1.18.0
20914f3
Compare
Choose a tag to compare

What’s Changed

New

  • Added support for visionOS: #2922
  • Added Ruby file type extension for Podspec files: #2932
  • Added literal_string argument to xcschemes.arg: #2938

Adjusted

  • Upgraded WORKSPACE version of rules_swift to 1.16.0: #2927
  • --experimental_remote_download_regex is no longer set by default with the command-line API: #2930
  • Timing output from calculate_output_groups.py is now flushed immediately: #2931
  • We now work around when bazelisk is called recursively during project generation: #2929
  • Made xcschemes.top_level_anchor_target work with *_build_test targets: #2945 & #2949

Fixed

  • Fixed Xcode 15.3 LLDB debugging: #2947
  • Fixed an error when using an empty or None xcschemes.env value: #2935
  • Fixed stale tests with test hosts when deploying to simulator: #2936
  • explicitFileType is now correctly set for .bazel and .bzl extensions in incremental generation mode: #2928
  • Fixed performance of associated_extra_files with incremental generation mode: #2944 & #2948

Ruleset Development Changes

  • Upgrade dev version of rules_swift to 1.16.0: #2927

Full Changelog

1.17.0...1.18.0

Contributors

Bzlmod Snippet

bazel_dep(name = "rules_xcodeproj", version = "1.18.0")

release.tar.gz’s integrity: sha256-hNSObmZAiQeLMq8NRrG3LsM7qsPUpMbTTG3hIHSBens=

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 = "84d48e6e664089078b32af0d46b1b72ec33baac3d4a4c6d34c6de12074817a7b",
    url = "https://github.com/MobileNativeFoundation/rules_xcodeproj/releases/download/1.18.0/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()

1.17.0

27 Feb 18:23
1.17.0
2f6b80b
Compare
Choose a tag to compare

What’s Changed

New

  • Added support for the new swift_proto_library rule: #2832

Adjusted

  • Added support for argument lists in swiftc_stub: #2907
  • We now log when the Bazel build is starting: #2895
  • Upgraded WORKSPACE versions of rules_apple: #2912
  • Removed incremental generation mode extra CODE_SIGNING_ALLOWED logic: #2921

Fixed

  • Fixed duplicate same_as_run launch target pre/post actions: #2892
  • Fixed frozen list issue with incremental generation: #2894
  • Fixed more code signing issues of UI tests with incremental generation: #2919
  • Fixed processing of folder-type uncategorized resources with incremental generation: #2918
  • Fixed tree artifact File handling with incremental generation: #2905
  • Fixed tvOS Xcode preview framework code signing with incremental generation: #2920
  • xcschemes no longer errors when listing a merged target in library_targets: #2897

Ruleset Development Changes

  • Upgraded development apple_support and rules_apple versions: #2912

Full Changelog

1.16.0...1.17.0

Contributors

Bzlmod Snippet

bazel_dep(name = "rules_xcodeproj", version = "1.17.0")

release.tar.gz’s integrity: sha256-iEDmJM4kKyWeTn6kwe83+nfu34XOai1rBg4he/8nNss=

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 = "8840e624ce242b259e4e7ea4c1ef37fa77eedf85ce6a2d6b060e217bff2736cb",
    url = "https://github.com/MobileNativeFoundation/rules_xcodeproj/releases/download/1.17.0/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()

1.16.0

29 Jan 21:57
1.16.0
66dfa1e
Compare
Choose a tag to compare

What’s Changed

New

  • Added support for pre/post actions with launch_path: #2866

Adjusted

  • Added a failure when product.original_basename isn’t set: #2879
  • Improved performance of the files_and_groups incremental generator: #2870
  • Upgraded xcodeproj_rules_dependencies rules_apple, rules_swift, and bazel_features: #2882
  • Upgraded bazel_features to 1.3.0: #2883
  • Removed bitcode support: #2887

Fixed

  • Fixed macro expansion for test schemes without launch targets: #2868
  • Fixed some args and env setting in incremental generation schemes: #2869
  • Fixed SwiftUI Previews link command-line length issue with incremental generation mode: #2878
  • Fixed Bazel 6 handling of libSwiftProtobuf.a: #2888
  • Fixed the command-line API to support all Bazel commands via the common pseudo-command: #2889

Ruleset Development Changes

  • Upgraded dev versions of rules_apple and rules_swift: #2884 and #2886

Full Changelog

1.15.0...1.16.0

Contributors

Bzlmod Snippet

bazel_dep(name = "rules_xcodeproj", version = "1.16.0")

release.tar.gz’s integrity: sha256-zMcZhRqZQsU7k1mYQQbp+lxcl9liGzRiQ7Y4sY7Al/k=

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 = "ccc719851a9942c53b9359984106e9fa5c5c97d9621b346243b638b18ec097f9",
    url = "https://github.com/MobileNativeFoundation/rules_xcodeproj/releases/download/1.16.0/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()

1.15.0: Incremental generation mode fixes

08 Jan 20:00
1.15.0
94a7c3d
Compare
Choose a tag to compare

What’s Changed

New

  • cmake sources are now included in the Project navigator: #2847

Adjusted

  • The default --experimental_remote_download_regex flag set by rules_xcodeproj has been expanded to explicitly list file types needed for indexing: #2859
    • Incremental generation mode has been adjusted to not manually track generated files, resulting in lower CPU and memory usage
    • The targets for a scheme (e.g. .app, .xctest, .a) are now built in Index Build, similar to how Xcode does it
    • This should improve indexing of more complicated setups (e.g. ones that use VFS overlays or hmap files)
  • Added --experimental_use_cpp_compile_action_args_params_file to baseline xcodeproj.bazelrc: #2850
    • Fixes a long command-line issue in incremental generation mode

Fixed

  • Fixed build_targets in xcschemes to accept string labels: #2864
  • Fixed folder-type files (e.g. .xcassets) in incremental generation mode: #2841
  • Fixed generated input source file error in incremental generation mode: #2851
  • Fixed simulator UI test debugging in incremental generation mode: #2849
  • Fixed a potential hang in import_indexstores: #2858

Full Changelog

1.14.2...1.15.0

Contributors

Bzlmod Snippet

bazel_dep(name = "rules_xcodeproj", version = "1.15.0")

release.tar.gz’s integrity: sha256-d3W+uh+d2zy84gnKHtDRF//ii5LYW/qOZZ+zwXatpWU=

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 = "7775beba1f9ddb3cbce209ca1ed0d117ffe28b92d85bfa8e659fb3c176ada565",
    url = "https://github.com/MobileNativeFoundation/rules_xcodeproj/releases/download/1.15.0/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()

1.14.2

19 Dec 20:23
1.14.2
9e4562e
Compare
Choose a tag to compare

What’s Changed

Since 1.14.1

  • Fix another incremental installer issue: #2826

Below are the changes that were in 1.14.1.

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)
      • 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.)
    • This is currently opt in
  • 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

  • Upgraded rules_apple related dev dependencies: #2728
  • Upgraded dev version of skylib to 1.5.0: #2729

Full Changelog

1.13.0...1.14.2

Contributors

Bzlmod Snippet

bazel_dep(name = "rules_xcodeproj", version = "1.14.2")

release.tar.gz’s integrity: sha256-UnbmV2Q0XQqwBa6+dxdjH4j3uzUTDVnYostRWfGQ3Zw=

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 = "5276e65764345d0ab005aebe7717631f88f7bb35130d59d8a2cb5159f190dd9c",
    url = "https://github.com/MobileNativeFoundation/rules_xcodeproj/releases/download/1.14.2/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()

1.14.1

19 Dec 19:09
1.14.1
010d2f9
Compare
Choose a tag to compare

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)
      • 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.)
    • This is currently opt in
  • 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

  • Upgraded rules_apple related dev dependencies: #2728
  • Upgraded dev version of skylib to 1.5.0: #2729

Full Changelog

1.13.0...1.14.1

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()

1.14.0: Incremental generation mode

19 Dec 16:57
1.14.0
53e40ec
Compare
Choose a tag to compare

What’s Changed

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)
      • 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.)
    • This is currently opt in
  • 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

  • Upgraded rules_apple related dev dependencies: #2728
  • Upgraded dev version of skylib to 1.5.0: #2729

Full Changelog

1.13.0...1.14.0

Contributors

Bzlmod Snippet

bazel_dep(name = "rules_xcodeproj", version = "1.14.0")

release.tar.gz’s integrity: sha256-y2mbkDHxAWbyeYf3BjE2LUpAbj+kIqAq4rwnX9APqh4=

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 = "cb699b9031f10166f27987f70631362d4a406e3fa422a02ae2bc275fd00faa1e",
    url = "https://github.com/MobileNativeFoundation/rules_xcodeproj/releases/download/1.14.0/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()