Skip to content

2.0.0-rc1

Pre-release
Pre-release
Compare
Choose a tag to compare
@github-actions github-actions released this 25 Jun 12:29
· 31 commits to master since this release

What's Changed

Breaking Changes

  • The swift_module= tag on cc_library targets no longer does anything, and the swift_c_module rule was removed: #1191 and #1224
    • Use the new swift_interop_hint aspect hint instead
    • There were also some changes to how the apple_common.Objc provider is handled (e.g. d68b214)
  • The deprecated swift proto library rules were removed: #1193
  • The Bzlmod module.compatibility_level was increased: #1214
    • If you ruleset can support both pre-2.0 and post-2.0 rules_swift, please set bazel_dep.max_compatibility_level = 2 instead of bumping your minimum supported version of rules_swift
  • The swift.disable_system_index feature is now enabled by default: #1252
  • Removed swift.emit_symbol_graph feature: #1229
    • Use the new swift_symbol_graph_extract rule
  • Removed the swift.use_response_files feature: #1275
  • Removed the swift.bundled_xctests feature: #1272
  • Removed the implicit output from swift_library: #1260
  • Moved swift_usage_aspect and SwiftUsageInfo from rules_swift into rules_apple: #1223
  • Manually specifying the -index-store-path flag while also using the swift.index_while_building is no longer supported: #1248
  • It is now an error to specify both swiftinterface and swiftmodule in swift_import: #1253

Deprecations

  • Moved rules and other build definitions into their own public files and deprecated the umbrella swift.bzl and proto.bzl files: #1231, #1236, and #1255
    • Please update your load statements as the swift.bzl file will be removed in the next major release

Other changes

  • Added support for symbol graph extraction with the swift_symbol_graph_extract rule: #772, #1195, #1246, #1270, and #1271
  • Added support for the fdo_instrument_order_file feature: #1251
  • Added the swift.add_target_name_to_output feature, which allows multiple targets in a package to produce the same module name in the same build: #1098 and #1217
  • Added the swift.thin_lto and swift.full_lto features to enable LTO: #1208
  • Added the swift.propagate_generated_module_map feature to propagate the generated module map: #1212
  • Added the swift.headers_always_action_inputs feature which causes all headers to always be included as inputs to SwiftCompile actions, even when using explicit modules: #1249
  • Added an API to compile a .swiftinterface file into a .swiftmodule: #1250
  • Added an XCTest observer to swift_test targets that generates a JUnit-style XML log at the path in the XML_OUTPUT_PATH environment variable defined by Bazel: #1222, #1242, #1263, and #1273
  • Added a discover_tests attribute to swift_test: #1259, #1266, #1273, and #1274
  • Added a mechanism to provide a list of protocol names for constant value extraction: #1170
  • Added a swift_common.get_toolchain helper function: #1226, #1257, and #1258
  • resource_set is now defined for SwiftCompile actions: #1241
  • Swift compiler sandboxing is now disabled when using Xcode 15.3+, which fixes nested sandboxing errors: #1206
  • We now correctly add .swiftmodule directories to the search path: #1245
  • We now correctly calculate the minimum supported OS when calculating the target triple for 'arm64-apple-ios-simulator' targets: #1247
  • The new driver is now used on Xcode 14+ since it contains the fixes in swiftlang/swift-driver#1036: #1268
  • Removed some no-longer-relevant "supports X" features: #1267
  • Fixed LLDB expr evaluation for swift_{binary,test} targets only containing Swift in their srcs: #1269

This release is compatible with Bazel 6.x LTS, 7.x LTS, and 8.x rolling releases.

MODULE.bazel Snippet

bazel_dep(name = "rules_swift", version = "2.0.0-rc1", repo_name = "build_bazel_rules_swift")

Workspace Snippet

load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")

http_archive(
    name = "build_bazel_rules_swift",
    sha256 = "4ed76051139b7b95fb7e4884e6728af8b7ac77e7c80589a7c9f8f6dd106e53c9",
    url = "https://github.com/bazelbuild/rules_swift/releases/download/2.0.0-rc1/rules_swift.2.0.0-rc1.tar.gz",
)

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