Releases: spotify/sourcekit-bazel-bsp
0.5.0
Notable Changes
- The BSP can now process C++
cc_libraryrules. Support for Obj-C/Obj-C++ has also been improved in the form of bug fixes. - After finishing processing the full list of targets in a project, BSP will now write this information to
(bazel_output_path)/sourcekit-bazel-bsp-graph.json. This can be used to power more advanced integrations via e.g. custom IDE extensions. - The BSP will now better handle cases where a top-level app bundles other top-level apps, like how an iOS app can bundle a watchOS app.
- Added new parameters related to filtering:
--dependency-rule-to-discover: Allows filtering which languages the BSP should look at. Can be used to e.g disable C++/Obj-C support in large projects).--top-level-target-to-exclude: A list of target patterns to exclude from the initial top-level target search.--dependency-target-to-exclude: A list of target patterns to exclude from the initial dependency target search.
What's Changed
- Fix BuildTargets failing to recognize aliases and unsupported dependencies by @rockbruno in #125
- Reply faster to BuildTargets by @rockbruno in #126
- Reply faster to TargetSources by @rockbruno in #127
- Improve handling of label conversions by @rockbruno in #128
- Fix PID workaround in the Example launch scripts by @rockbruno in #124
- Add support for C/C++, improve Obj-C handling by @rockbruno in #129
- Simplify target discovery by @rockbruno in #131
- Add the ability to filter targets by @rockbruno in #132
- Write a JSON report after parsing targets by @rockbruno in #133
- Fix test targets failing to be parsed properly by @rockbruno in #134
- Add support for parsing external repos and implementation_deps by @rockbruno in #135
- Fix nested top-level apps not being parsed properly by @rockbruno in #136
- Add dependency_rules_to_discover to the bazel setup, minor fixes by @rockbruno in #137
Full Changelog: 0.4.2...0.5.0
Compatibility
This release was developed / tested for:
- Xcode 26.1.1
- Bazel:
8.4.1 - rules_swift:
3.3.0 - rules_apple:
4.3.2 - apple_support:
1.24.5 - sourcekit-lsp:
d449cb78be1a001ae4efd8dd023da8301eb2af0a
0.4.2
What's Changed
- Remove task progress from the SKOptions request by @rockbruno in #114
- Handle Xcode envs when passing arguments manually by @rockbruno in #116
- Fix query determinism in BazelTargetStore by @rockbruno in #117
- Remove build_test targets from the example app by @rockbruno in #119
- Fix more sources of non-determinism by @rockbruno in #118
Full Changelog: 0.4.1...0.4.2
Compatibility
This release was developed / tested for:
- Xcode 26.1.1
- Bazel:
8.4.1 - rules_swift:
3.3.0 - rules_apple:
4.3.2 - apple_support:
1.24.5 - sourcekit-lsp:
d449cb78be1a001ae4efd8dd023da8301eb2af0a
0.4.1
What's Changed
- fix: merge existing sourcekit-lsp config if it exists by @luispadron in #108
- feat: pretty print the lsp config.json file by @luispadron in #107
- Slightly improve the example debugging scripts by @rockbruno in #94
- Improve argument parsing for the BSP by @rockbruno in #106
- Slightly improve the docs by @rockbruno in #109
- Fix top-level-rule-to-discover not propagating downstream by @rockbruno in #110
- Further improve the debugger scripts by @rockbruno in #111
- Add base simulator handling logic to the Example app by @rockbruno in #112
Full Changelog: 0.4.0...0.4.1
Compatibility
This release was developed / tested for:
- Xcode 26
- Bazel:
8.4.1 - rules_swift:
3.3.0 - rules_apple:
4.3.2 - apple_support:
1.24.5 - sourcekit-lsp:
d449cb78be1a001ae4efd8dd023da8301eb2af0a
0.4.0
Notable Changes
- Jump to definition will now point to the correct location in most cases (previously, it would send you to Bazel's execroot).
- Target batching no longer requires using our separate sourcekit-lsp fork.
- Target batching now works for all cases (previously, this only worked when
compile-top-levelwas true). - You can now also pass Bazel target wildcards (e.g.
//foo/...) to the--targetflag. - The
setup_sourcekit_bsprule now also generates a.sourcekit-lsp/config.jsonfile containing important configs for sourcekit-lsp itself.
Breaking Changes
--index-build-batch-sizewas removed from the BSP as we're now configuring this via the new.sourcekit-lsp/config.json. The flag in the Bazel rule itself remains though and can handle this change automatically.
What's Changed
- Add support for passing wildcards to --targets by @rockbruno in #97
- PrepareHandler: Dedupe top-level labels by @rockbruno in #96
- Add support for jump to definition by @iMostfa in #95
- Add tests for the jump to definition mapping by @rockbruno in #99
- Use cquery when getting target information by @rockbruno in #98
- BazelTargetDiscover: Also use cquery by @rockbruno in #101
- Index batching: Use upstream version by @rockbruno in #100
- Make jump to definition work as early as possible by @rockbruno in #104
- Add support for batching even when compile_top_level is false by @rockbruno in #105
New Contributors
Full Changelog: 0.3.0...0.4.0
Compatibility
This release was developed / tested for:
- Xcode 26
- Bazel:
8.4.1 - rules_swift:
3.1.2 - rules_apple:
4.1.2 - apple_support:
1.23.1 - sourcekit-lsp:
d449cb78be1a001ae4efd8dd023da8301eb2af0a
0.3.0
Breaking Changes
- The requirement for providing
*_build_testtargets has been removed. All related CLI flags have been removed. The BSP is now able to compile individual libraries correctly without needing extra infra on the user's side. - Removed
--separate-aquery-output. This optimization is not necessary anymore. - Build batching related arguments will as of this release be ignored if not passing the new
--compile-top-levelflag. This is temporary and should go away soon.
New Args
- Added
--compile-top-levelto allow controlling whether the BSP should retain the old behavior of compiling top-level targets directly. Defaults to false.
What's Changed
- Adding support for Objective-C++ compilation by @martinez-karina in #79
- Add better logging for cli parsing errors by @luispadron in #81
- Add macOS CLI app example by @rockbruno in #83
- Make some logs publicly visible by @luispadron in #80
- Optimization: use a single query invocation to collect target information by @luispadron in #82
- Handle more edge cases when parsing targets by @rockbruno in #85
- Use --preemptible if using only one output base by @rockbruno in #72
- Delete existing binary before replacing by @rockbruno in #88
- Remove --separate-aquery-output by @rockbruno in #87
- Remove need for build_test targets by @rockbruno in #89
- Add .bcr/ config by @rockbruno in #86
- fix: add missing top-level rule types by @luispadron in #90
- Infer CPU details from the aquery by @rockbruno in #92
New Contributors
- @luispadron made their first contribution in #81
Full Changelog: 0.2.0...0.3.0
Compatibility
This release was developed / tested for:
- Xcode 26
- Bazel:
8.4.1 - rules_swift:
3.1.2 - rules_apple:
4.1.2 - apple_support:
1.23.1 - sourcekit-lsp: rockbruno/rochab/batchSize-forGen (fork)
0.2.0
Note that the compability list changed on this release!
Notable Changes
- If using the pre-built sourcekit-lsp binary provided with this release, you can now pass
--index-build-batch-sizeto indicate how many targets should be built in parallel during background indexing. - Added a new
--top-level-rule-to-discoverparameter that allows filtering which types of rules should be considered when not passing--targetsdirectly. - The BSP will now perform one aquery for the entire dependency graph, greatly improving the performance of background indexing.
- The BSP now can index C and C++ files in Obj-C targets.
What's Changed
- Log errors that are thrown in Serve.swift by @josh-arnold-1 in #59
- Update compiler working directory to run from execution root by @martinez-karina in #61
- Allow the build test suffix to be further customized by @rockbruno in #57
- Fix Bazel integration by @stephanecopin in #64
- Disable compiler param file for aquerying compiler args by @martinez-karina in #60
- Support for large stdout/stderr data in RunningProcess by @martinez-karina in #65
- RunningProcess: Return stderr on term handler by @rockbruno in #67
- Pre-calculate all sdkRoots by @rockbruno in #68
- BazelTargetStore: Store info about which targets match to which plats by @rockbruno in #69
- Pre-aggregate aquery results by @rockbruno in #70
- Support --top-level-rule flag to customize the top level rules used for target discovery. by @josh-arnold-1 in #66
- Parse top-level-rule-to-discover with ArgumentParser by @rockbruno in #71
- Run one big aquery for everything instead of one per target, base C++ support by @rockbruno in #62
- InitializeHandler: Add batch requests support by @rockbruno in #75
- Improve PrepareHandler logging by @rockbruno in #77
- Simplify Bazel integration, make example project use it by @rockbruno in #76
New Contributors
- @martinez-karina made their first contribution in #61
- @stephanecopin made their first contribution in #64
Full Changelog: 0.1.1...0.2.0
Compatibility
This release was developed / tested for:
- Xcode 26
- Bazel:
8.4.1 - rules_swift:
3.1.2 - rules_apple:
4.1.2 - apple_support:
1.23.1 - sourcekit-lsp: rockbruno/rochab/batchSize-forGen (fork)
0.1.1
Note that the compability list changed on this release!
This release improves the performance of the server by making most code run asynchronously and introducing a new --separate-aquery-output flag that further increases performance at the cost of more disk usage (default: false).
What's Changed
- Update TopLevelRuleType.swift to include 'macos_command_line_application' by @josh-arnold-1 in #50
- Optimize the dependency graph calculation by @rockbruno in #51
- Fix WatchedFiles misreporting target statuses by @rockbruno in #52
- Add base support for async requests by @rockbruno in #53
- Dispatch messages on the background by @rockbruno in #54
- Make the important requests run async by @rockbruno in #55
Full Changelog: 0.0.5...0.1.0
Compatibility
This release was developed / tested for:
- Xcode 16.4
- Bazel:
8.3.1 - rules_swift:
3.1.2 - rules_apple:
4.1.2 - apple_support:
1.23.1 - sourcekit-lsp:
1aae2a4c329035163db85d64ae7bc81ee80aaa3c
0.1.0
0.0.5
What's Changed
Full Changelog: 0.0.4...0.0.5
Compatibility
This release was developed / tested for:
- Xcode 16.4
- Bazel:
8.3.1 - rules_swift:
3.0.2 - rules_apple:
a9fcb1c3ae6382534d773d73c035035e9764eadb - apple_support:
1.22.1
0.0.4
What's Changed
- Clean-up some of the logic in DiscoverTargets and WatchedFileChange by @rockbruno in #39
- Remove custom symlink from the example proj by @rockbruno in #44
- Fix WatchedFileHandler overhandling changes by @rockbruno in #43
- Add base support for all Apple platforms by @rockbruno in #41
- Migrate action query from text to protobuf parsing by @sean7218 in #40
- Sets up setup executable rule for integrating into Bazel projects by @maxwellE in #45
- Build out makefile for making release archives by @maxwellE in #48
- Add base support for request cancelation by @rockbruno in #46
New Contributors
Full Changelog: 0.0.3...0.0.4
Compatibility
This release was developed / tested for:
- Xcode 16.4
- Bazel:
8.3.1 - rules_swift:
3.0.2 - rules_apple:
a9fcb1c3ae6382534d773d73c035035e9764eadb - apple_support:
1.22.1