Skip to content

Releases: bazelbuild/rules_swift

0.13.0

09 Oct 19:36
Compare
Choose a tag to compare
  • 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 its deps. (f831819)

Thanks to the following contributors:

Please use the rules_swift.0.13.0.tar.gz release asset from your Bazel WORKSPACE.

SHA-256 digest: ef2578a50a4dae1debb42a41699a8a77d3f31814c097be8d594f7f4d7f9fce14

Complete list of changes

0.12.1

09 Aug 19:26
Compare
Choose a tag to compare
  • 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

Complete list of changes

0.12.0

05 Aug 17:45
Compare
Choose a tag to compare
  • 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 the SwiftInfo 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

Complete list of changes

0.11.1

05 Jun 16:00
Compare
Choose a tag to compare
  • 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

Complete list of changes

0.11.0

29 May 17:16
Compare
Choose a tag to compare
  • 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:

Please use the rules_swift.0.11.0.tar.gz release asset from your Bazel WORKSPACE.

SHA-256 digest: 245290b9c01950db0903bcb6575b358f8f8cfc3bbd36a1c72566e4608a701dbc

Complete list of changes

0.10.1

09 May 17:08
Compare
Choose a tag to compare
  • This release is tested with Bazel 0.25.
  • Introduce swift_common.compile and remove swift_common.compile_as_{library,objects}. (606d50b, 4f69fc1)
  • The direct_libraries, direct_linkopts, transitive_additional_inputs, transitive_libraries, and transitive_linkopts fields of SwiftInfo have been removed. This information is now propagated using linking contexts in CcInfo providers. (9e60959)
  • The SwiftClangModuleInfo provider has been deprecated. Headers and include search paths can be obtained from CcInfo's compilation context. Module maps are propagated in SwiftInfo.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)

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

Complete list of changes

0.9.0

25 Apr 17:39
Compare
Choose a tag to compare
  • This release is tested with Bazel 0.24.1
  • The allow_testing, compilation_mode, configuration, objc_fragment, and swift_fragment arguments have been removed from the swift_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 the SwiftInfo provider has been removed. The SwiftBinaryInfo provider has been removed. (b73e06d)
  • swift_common.merge_swift_info_providers is now named swift_common.merge_swift_infos and takes a list of SwiftInfo providers instead of a list of targets. swift_common.build_swift_info is now named swift_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 a malloc attribute that lets the user substitute an alternate malloc 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

Complete list of changes

0.8.0

01 Apr 21:03
Compare
Choose a tag to compare
  • This release is tested with Bazel 0.24.
  • -simulator is now added to the target triple passed to swiftc (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 to swift_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 and swift_fragment arguments to swift_common compilation APIs are now deprecated. (957cdae)
  • The feature_configuration argument is now required for the compile_as_objects, compile_as_library, and swiftc_command_line_and_inputs methods in swift_common. (fb38185)

Thanks to the following contributors:

Please use the rules_swift.0.8.0.tar.gz release asset from your Bazel WORKSPACE.

SHA-256 digest: 31aad005a9c4e56b256125844ad05eb27c88303502d74138186f9083479f93a6

Complete list of changes

0.7.0

26 Feb 21:08
Compare
Choose a tag to compare
  • 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 and module_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 the swift_library depend on the cc_library and then use another rule, such as a genrule, 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's copts. 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. The get_{disabled,enabled}_features methods have been removed, and is_enabled has been added. Also, the Swift feature configuration now embeds a C++ feature configuration (accessible by calling swift_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 new CcInfo provider.

  • Uses of the legacy "instrumented_files" provider have been migrated to the new InstrumentedFilesInfo provider.

  • Information in SwiftInfo providers is no longer lost when passing through a non-Swift target (such as objc_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.

Full list of changes between 0.6.0 and 0.7.0.

0.6.0

18 Jan 20:55
Compare
Choose a tag to compare
  • This release is tested with Bazel 0.21.0.
  • Incompatible change: The resources and structured_resources of swift_library have been removed. Replace them as follows:
    • Files and labels referenced in resources can be placed directly in the library's data attribute.
    • Files and labels referenced in structured_resources should be moved to the structured_resources of a new apple_resource_group target (defined in rules_apple) and that target should be placed in the library's data attribute.