Releases: bazelbuild/rules_swift
0.13.0
- This release is tested with Bazel 1.0.0.
- Swift modules that import C modules can now find headers located in the bazel-bin directory. (78a005c)
swift_c_module
can now list multiple targets in itsdeps
. (f831819)
Thanks to the following contributors:
- Dave Lee (@kastiglione): 472e820, f52ddb1, db6a1b7, 10cbd69, 9035fb8
- Keith Smiley (@keith): 01ea0ba, c8d7247, c0bffc4, 57383da
Please use the rules_swift.0.13.0.tar.gz
release asset from your Bazel WORKSPACE
.
SHA-256 digest: ef2578a50a4dae1debb42a41699a8a77d3f31814c097be8d594f7f4d7f9fce14
0.12.1
- This release is tested with Bazel 0.28.1
- Link stamping has been refactored. Now instead of using a fixed dependency (via its label) containing the stamp data, the toolchain provider contains a Skylib partial that is called when linking a Swift binary or test target. This partial can return a C++ linking context that will be included among the other dependencies. (a2c1bfc)
- Update a few of the dependencies. e0198ea 9f50039 f7f4c14
Please use the rules_swift.0.12.1.tar.gz
release asset from your Bazel WORKSPACE
.
SHA-256 digest: 18cd4df4e410b0439a4935f9ca035bd979993d42372ba79e7f2d4fafe9596ef0
0.12.0
- This release is tested with Bazel 0.28.1
- A bug causing diagnostics to be silently thrown out in incremental mode has been fixed. (010db1b)
swift_module_alias
no longer prints a warning about possible misuse. (c674e70)- Targets created using
swift_module_alias
now expose their module name in theSwiftInfo
provider. (ffda400)
Thanks to the following contributors:
Please use the rules_swift.0.12.0.tar.gz
release asset from your Bazel WORKSPACE
.
SHA-256 digest: adba48e9e7659c6838c4b500c6c66763bce6e0ca0b6510ed11cd3dceea9cf645
0.11.1
- This release is tested with Bazel 0.27
- The
swift_common.run_toolchain{_shell_,_swift_,_}action
functions have been removed. (d11785b)
Please use the rules_swift.0.11.1.tar.gz
release asset from your Bazel WORKSPACE
.
SHA-256 digest: 96a86afcbdab215f8363e65a10cf023b752e90b23abf02272c4fc668fcb70311
0.11.0
- This release is tested with Bazel 0.26.
- On Linux, the Swift toolchain can now autoconfigure itself to detect which features are supported by the version of the compiler in use. (a7f4adb)
Thanks to the following contributors:
- Danny Weinberg (@FuegoFro): 01c5d85
- Dave Lee (@kastiglione): b4c87bf, 37dd0ef
- Keith Smiley (@keith): 5161cb8
Please use the rules_swift.0.11.0.tar.gz
release asset from your Bazel WORKSPACE
.
SHA-256 digest: 245290b9c01950db0903bcb6575b358f8f8cfc3bbd36a1c72566e4608a701dbc
0.10.1
- This release is tested with Bazel 0.25.
- Introduce
swift_common.compile
and removeswift_common.compile_as_{library,objects}
. (606d50b, 4f69fc1) - The
direct_libraries
,direct_linkopts
,transitive_additional_inputs
,transitive_libraries
, andtransitive_linkopts
fields ofSwiftInfo
have been removed. This information is now propagated using linking contexts inCcInfo
providers. (9e60959) - The
SwiftClangModuleInfo
provider has been deprecated. Headers and include search paths can be obtained fromCcInfo
's compilation context. Module maps are propagated inSwiftInfo.transitive_modulemaps
. (6fcd64b) - On macOS hosts, you can use a custom toolchain installed in
/Library/Developer/Toolchains
by passing--define=SWIFT_CUSTOM_TOOLCHAIN=<toolchain id>
to Bazel, where<toolchain id>
is the bundle identifier of the toolchain. (4fa465e)- A tool has been added to dump the toolchain identifiers of any custom toolchains currently installed:
bazel run @build_bazel_rules_swift//tools/dump_toolchains
. (1aec8de)
- A tool has been added to dump the toolchain identifiers of any custom toolchains currently installed:
Thanks to the following contributors:
Please use the rules_swift.0.10.1.tar.gz
release asset from your Bazel WORKSPACE
.
SHA-256 digest: fef40f8afc331ae4b63da5603538134444f005e5ca7762112b0629334602c845
0.9.0
- This release is tested with Bazel 0.24.1
- The
allow_testing
,compilation_mode
,configuration
,objc_fragment
, andswift_fragment
arguments have been removed from theswift_common.{compile_as_objects,compile_as_library,swiftc_command_line_and_inputs}
functions. (ecd0250) - The
swift_grpc_library
rule has been added, which can be used to generate Swift code for gRPC clients/servers. Necessary dependencies (gRPC and gRPC-Swift) are automatically added to the workspace. (9034f69) - Incremental compilation is now supported by passing the
--strategy=SwiftCompile=worker
flag to Bazel. (637e3f1) - The
compile_options
field of theSwiftInfo
provider has been removed. TheSwiftBinaryInfo
provider has been removed. (b73e06d) swift_common.merge_swift_info_providers
is now namedswift_common.merge_swift_infos
and takes a list ofSwiftInfo
providers instead of a list of targets.swift_common.build_swift_info
is now namedswift_common.create_swift_info
and only takes direct arguments and no longer merges transitive info from dependencies. (ef84822)- Like
cc_{binary,test}
,swift_{binary,test}
now supports amalloc
attribute that lets the user substitute an alternatemalloc
implementation to be linked into the binary. (5a9cd5d) - When building with Xcode 10.2 (Swift 5.0) or higher, the compiler now passes
-debug-prefix-map
to the compiler to remap the working directory to"."
, removing absolute source paths from the generated debug info. (23389cc)
Thanks to the following contributors:
Please use the rules_swift.0.9.0.tar.gz
release asset from your Bazel WORKSPACE
.
SHA-256 digest: 9efe9699e9765e6b4a5e063e4a08f6b163cccaf0443f775d935baf5c3cd6ed0e
0.8.0
- This release is tested with Bazel 0.24.
-simulator
is now added to the target triple passed toswiftc
(e.g., "-target x86_64-apple-ios10.3-simulator") by the Xcode toolchain when targeting simulator platforms. (73c2508) Thanks @kastiglione!- The Xcode toolchain now supports dynamically linking to Swift runtimes distributed with the OS (which is the case on macOS 10.14.4 and higher). (d0f1415)
- The
allow_testing
parameter toswift_common.compile_as_{library,objects}
is now deprecated. To control testability of code compiled with these APIs, you should now set or unset the"swift.enable_testing"
feature in your feature configuration. (62b3b4c) - The
objc_fragment
andswift_fragment
arguments toswift_common
compilation APIs are now deprecated. (957cdae) - The
feature_configuration
argument is now required for thecompile_as_objects
,compile_as_library
, andswiftc_command_line_and_inputs
methods inswift_common
. (fb38185)
Thanks to the following contributors:
- Dave Lee (@kastiglione): 73c2508, 13acad9
- Keith Smiley (@keith): b22ce2b
Please use the rules_swift.0.8.0.tar.gz
release asset from your Bazel WORKSPACE
.
SHA-256 digest: 31aad005a9c4e56b256125844ad05eb27c88303502d74138186f9083479f93a6
0.7.0
-
This release is tested with Bazel 0.23.0.
-
swift_library
now lists the Objective-C bridging header as one of its output files. -
The
cc_libs
andmodule_link_name
attributes have been removed from the Swift rules. If you need to create a static library that contains both Swift and C++ code, have theswift_library
depend on thecc_library
and then use another rule, such as agenrule
, to combine the archives.To replace the behavior of the
module_link_name
attribute, pass the-module-link-name <name>
flags directly in the target'scopts
. This change no longer affects the name of the output library; it is the responsibility of the user to ensure that the.a
file that is output by the rule matches the link name embedded in the module. This allows the link name to refer to an archive emitted by a different rule, such as one that merges static archives as described above. -
Feature-related APIs in
swift_common
have changed slightly. Theget_{disabled,enabled}_features
methods have been removed, andis_enabled
has been added. Also, the Swift feature configuration now embeds a C++ feature configuration (accessible by callingswift_common.cc_feature_configuration
) for users who need to call C++ APIs with a feature configuration compatible with the Swift toolchain's underlying C++ toolchain. -
Uses of the legacy
"cc"
provider have been migrated to the newCcInfo
provider. -
Uses of the legacy
"instrumented_files"
provider have been migrated to the newInstrumentedFilesInfo
provider. -
Information in
SwiftInfo
providers is no longer lost when passing through a non-Swift target (such asobjc_library
). In some cases, build graphs could be constructed that caused upstream Swift compilations to not be passed the.swiftmodule
files they needed to perform type lookups.
0.6.0
- This release is tested with Bazel 0.21.0.
- Incompatible change: The
resources
andstructured_resources
ofswift_library
have been removed. Replace them as follows:- Files and labels referenced in
resources
can be placed directly in the library'sdata
attribute. - Files and labels referenced in
structured_resources
should be moved to thestructured_resources
of a newapple_resource_group
target (defined in rules_apple) and that target should be placed in the library'sdata
attribute.
- Files and labels referenced in