Skip to content

1.0

Compare
Choose a tag to compare
@brentleyjones brentleyjones released this 06 Feb 16:56
· 1104 commits to main since this release
1.0.1
0164ced

What’s Changed

This release is the same as the 1.0.0rc3 release, with the version changed to 1.0.1.

This is the first release with a non-zero major version. Since we are using Semantic Versioning for rules_xcodeproj, from this release forward there won’t be breaking changes unless we increment our major version as well.12

Since this is the first major release, every feature can be seen as “new”, so here is the state of all features in the release:

  • Full support for Xcode features:
    • Indexing (i.e. autocomplete, syntax highlighting, jump to definition)
    • Debugging
    • Runtime sanitizers
    • Inline warnings and errors
    • Fix-its (currently only in BwX mode)
    • Test selection and running
    • Embedded Targets (App Clips, App Extensions, and Watch Apps)
    • Dynamic frameworks
    • SwiftUI Previews
  • Focused Projects
    • Include a subset of your targets in Xcode
    • Unfocused targets are built with Bazel
    • Works in BwX mode as well!
  • Comprehensive Bazel rules support
    • Core Bazel C/C++/Objective-C
    • rules_swift
    • rules_apple
    • rules_ios
    • Most likely your custom rules as well!
  • Minimal configuration needed
  • Multiple ways of building your project in Xcode
    • Build your Bazel targets with Bazel (a.k.a Build with Bazel or BwB mode)
    • Build your Bazel targets with Xcode, not Bazel (a.k.a. Build with Xcode or BwX mode)3

Contributors

Bzlmod Snippet

bazel_dep(name = "rules_xcodeproj", version = "1.1.0", repo_name = "com_github_buildbuddy_io_rules_xcodeproj")

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

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 = "com_github_buildbuddy_io_rules_xcodeproj",
    sha256 = "4f2806f0fe9766263ce46b82b27a6742bbe3a248af3e8a766dce765f954fbec1",
    url = "https://github.com/buildbuddy-io/rules_xcodeproj/releases/download/1.0.1/release.tar.gz",
)

load(
    "@com_github_buildbuddy_io_rules_xcodeproj//xcodeproj:repositories.bzl",
    "xcodeproj_rules_dependencies",
)

xcodeproj_rules_dependencies()

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. Bzlmod has a different way of marking breaking changes with module.compatibility_level. We will increment both the major version and the compatibility_level in tandum.

  2. There are some APIs that have been explicitly marked as unstable, such as the XcodeProjAutomaticTargetProcessingInfo and XcodeProjInfo providers. Changes to unstable APIs do not count as breaking changes.

  3. Build with Bazel mode is the build mode with first class support. We will try to make Build with Xcode mode work with every project, but there are limitations that can make the experience subpar, or not work at all. We recommend using BwB mode if possible.