Breaking changes
- Increased
compatibility_level
to3
by @luispadron in #1536 - Drop support for Bazel 6 by @brentleyjones in #1422
- Remove support for the
objc_library.module_map
attribute inswift_clang_module_aspect
by @brentleyjones in #1328 - Remove old
SwiftInfo
arguments by @brentleyjones in #1427 - Remove
swift_common.toolchain_attrs
by @brentleyjones in #1385 - Remove the
emit_swiftinterface
build setting by @brentleyjones in #1393 - Remove support for the
SWIFT_CUSTOM_TOOLCHAIN
define by @brentleyjones in #1432 - Remove
swift_module_alias
by @brentleyjones in #1390 - Disable
swift.emit_swiftsourceinfo
by default by @brentleyjones in #1409
Fixed
- Fix
apple.swizzle_absolute_xcttestsourcelocation
usage by @brentleyjones in #1457 - Fix typo in
_check_supports_language_mode_6
by @brentleyjones in #1484 - Fix index-import on all Xcode 16.x versions by @luispadron in #1504
- Fix documentation of per_module_swiftcopt flag by @jschear in #1508
- Fix ensure undeclared outputs are deleted when not tracked by @luispadron in #1533
Added
- Improved Swift Testing support by @brentleyjones in #1443
- Introduce a pure Swift runfiles library by @cerisier in #1310
- Add execution groups for actions that don't have to use the same toolchain used when building the target by @brentleyjones in #1317
- Add back API docs for function removed from
swift_common
by @brentleyjones in - Add back API docs for function removed from
swift_common
by @brentleyjones in #1429 - Add
swift_overlay
rule by @brentleyjones in #1431 - Support sharding and regex-based
--test_filter
inswift_test
by @brentleyjones in #1410 - Add
data
attribute tomixed_language_library
by @brentleyjones in #1450 - Add an API that lets aspects ask whether a target is a
swift_overlay
by @brentleyjones in #1441 - Add support for
package_name
inmixed_language_library
by @luispadron in #1458 - Add implicit deps to
swift_library_group
by @brentleyjones in #1468 - Add
swift.suppress_warnings
feature by @aaronsky in #1489 - Add instrumented files info to
swift_binary
andswift_compiler_plugin
by @sebastianv1 in #1512 - Add env attribute to swift_{binary,test} and env_inherit to swift_test by @luispadron in #1517
- Swift 6.0.3 for Linux by @brentleyjones in #1491
- Add a feature to allow certain targets to ignore the implicit dependencies from the toolchain. by @luispadron in #1518
- Add an advanced API to create a custom instance of swift_clang_module_aspect with a different toolchain type than the default by @luispadron in #1524
- Add swift_common.is_action_enabled as a public API. by @luispadron in #1523
- Implement
swift_synthesize_interface_aspect
. by @luispadron in #1522
Changed
- Update
doc/README.md
by @brentleyjones in #1428 - Change
swift_library
alwayslink
default to True by @brentleyjones in #1398 - Warn instead of fail when
swiftc
not found on Linux by @brentleyjones in #1433 - Prefer Swift toolchain clang over system clang by @brentleyjones in #1434
- Stop trying to extract symbol graphs from actions that don’t compile Swift or Objective-C code by @brentleyjones in #1435
- Allow
swift_cross_import_overlay
to specify a disambiguating explicit module name for the declaring and/or bystanding module by @brentleyjones in #1417 - Put the
swift_overlay
's depsSwiftInfo
s into the transitiveSwiftInfo
s of the propagatedSwiftInfo
instead of the directSwiftInfo
s (which causes them to be merged with the overlay module itself) by @brentleyjones in #1438 - Don't drop compilation contexts for
private_deps
when compiling the target that imports them by @brentleyjones in #1437 - Update docs to say that a source file should only be in a single
swift_*
target, and aswift_overlay
should only be referenced by a single other target'saspect_hints
by @brentleyjones in #1439 - Set
alwayslink
on the clang target ofmixed_language_library
as well by @brentleyjones in #1451 - Stop using config.string(allow_multiple = True) by @EdSchouten in #1452
- Make sure that the path to the generated header in the generated module map is workspace-relative when the feature configuration asks for it by @brentleyjones in #1442
- Don't drop
swift_overlay
linking contexts when an overlay depends on another library that has an overlay by @brentleyjones in #1440 - Apply -enable-bare-slash-regex action config to SWIFT_ACTION_DERIVE_F… by @jschear in #1464
- Map const-values in output file map for incremental by @vikage in #1471
- Include swift_proto_library attrs in compilation by @sebastianv1 in #1473
- Mark non_module_deps extension as reproducible by @cerisier in #1481
- Print a warning, instead of an error, when not finding
swiftc.exe
by @brentleyjones in #1483 - Create fewer Xcode toolchains by @brentleyjones in #1487
- Always create all toolchains by @brentleyjones in #1488
- Only warn about missing
swiftc
on matching host platform by @brentleyjones in #1490 - Support swift plugins in mixed_language_library by @qyang-nj in #1493
- Deduplicate plugin arguments by @qyang-nj in #1495
- Update
swift.suppress_warnings
comment by @mattrobmattrob in #1499 - Use
exec_group
forSWIFT_ACTION_DERIVE_FILES
andSWIFT_ACTION_DUMP_AST
by @brentleyjones in #1510 - Only pass the strict Obj-C include paths from direct dependencies to compilation actions by @luispadron in #1516
- Use a different attribute than features on toolchain rules to specify which features should be enabled/disabled by default for all targets built with that toolchain by @luispadron in #1519
- Use a new provider to wrap symbol graph extraction used for test discovery by @luispadron in #1521
- Ensure that
swift_synthesize_interface_aspect
generates unique outputs by @luispadron in #1526 - Remove prints when toolchain is skipped by @keith in #1535
Removed
- Remove
apple_common.Objc
provider usage related to linking now that the Apple linking logic in Bazel gets everything fromCcInfo
by @brentleyjones in #1383 - Remove implicit dependencies of
_allowlist_function_transition
in third_party by @brentleyjones in #1402 - Remove unnecessary
SwiftBinaryInfo
required provider fromplugins
attribute by @brentleyjones in #1445 - Remove redundant code in
swift_import
by @brentleyjones in #1446
New Contributors
- @EdSchouten made their first contribution in #1452
- @jschear made their first contribution in #1464
- @vikage made their first contribution in #1471
- @cerisier made their first contribution in #1481
- @qyang-nj made their first contribution in #1493
- @thelvis4 made their first contribution in #1503
Full Changelog: 2.8.2...3.0.2
This release is compatible with Bazel 7.x LTS, 8.x LTS, and 9.x rolling releases.
MODULE.bazel Snippet
bazel_dep(name = "rules_swift", version = "3.0.1", 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 = "ae6673d27024914fa89e32fd1369e9563fb8ede463feac703aaec1ba6ca0358c",
url = "https://github.com/bazelbuild/rules_swift/releases/download/3.0.1/rules_swift.3.0.1.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()