-
Notifications
You must be signed in to change notification settings - Fork 255
[GSoC-2025] Blog post 1: Swiftly in VS Code #1210
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from 2 commits
Commits
Show all changes
7 commits
Select commit
Hold shift + click to select a range
066a9de
Prepare 1st blog post for summer of code summary posts (2025)
ktoso eb5291c
Apply suggestions from code review
ktoso 3760ad8
Apply suggestions from code review
ktoso 8592285
Update _posts/2025-11-NN-swift-gsoc-2025-highlight-1-vscode-swiftly.md
ktoso 77ee5da
Rename 2025-11-NN-swift-gsoc-2025-highlight-1-vscode-swiftly.md to 20…
ktoso a32b748
apply last round of changes from review
ktoso f1b2ee3
Update _posts/2025-11-05-gsoc-2025-showcase-swiftly-support-in-vscode.md
ktoso File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
82 changes: 82 additions & 0 deletions
82
_posts/2025-11-NN-swift-gsoc-2025-highlight-1-vscode-swiftly.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,82 @@ | ||
| --- | ||
| layout: new-layouts/post | ||
| published: true | ||
| date: 2025-11-05 17:00:00 | ||
| title: 'GSoC 2025 Showcase: Swiftly support in Visual Studio Code | ||
ktoso marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| author: [priyambada, ktoso] | ||
| category: "Community" | ||
ktoso marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| --- | ||
| Another year of successful Swift participation in [Google Summer of Code](https://summerofcode.withgoogle.com) 2025 came to an end recently, and this year we'd like to shine some light on the projects and work accomplished during the summer! | ||
ktoso marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| Summer of Code is an annual program, organized by Google, which provides hands-on experience for newcomers contributing | ||
| to open source projects. Participants usually are students, but do not have to be. | ||
ktoso marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| In this series of four posts, we'll highlight each of the Summer of Code contributors and their projects. | ||
ktoso marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| You can navigate between the posts using these convenient links: | ||
|
|
||
| - Bringing Swiftly support to VS Code (this post) | ||
| - JNI mode for swift-java’s source jextract tool _(coming soon)_ | ||
| - Improved display of documentation during code completion in SourceKit-LSP _(coming soon)_ | ||
| - Improved console output for Swift Testing _(coming soon)_ | ||
|
|
||
| Each GSoC contributor has shared a writeup about their project and experience in the program. | ||
ktoso marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| To learn more, you can read the [full post on the Swift forums](https://forums.swift.org/t/gsoc-2025-bringing-swiftly-support-to-vs-code/81886). | ||
|
|
||
| --- | ||
|
|
||
| ## Bringing Swiftly support to VS Code | ||
|
|
||
| I am Priyambada Roul. I'm incredibly excited to share what I've been working on over the past three months as part of Google Summer of Code 2025 with Swift.org, alongside my mentors, @cmcgee1024 @matthewbastien | ||
|
|
||
| My project focused on integrating **Swiftly** (Swift's toolchain manager) into the **VS Code Swift extension.** | ||
|
|
||
| ## The Problem We Solved | ||
|
|
||
| We've made switching toolchains easier with Swiftly, allowing you to install and switch between Swift versions without leaving VS Code. | ||
ktoso marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| 1. **Switch Swift versions** with a single click | ||
| 2. **Install new toolchains** without leaving VS Code | ||
| 3. **See real-time progress** during installations | ||
| 4. **Automatically sync** with project-specific Swift versions | ||
|
|
||
| ## What's New for Swift Developers | ||
|
|
||
| ### Swiftly VS Code Integration | ||
|
|
||
| The VS Code extension now provides an entirely **seamless toolchain management experience**: | ||
|
|
||
| * We now support macOS too! | ||
| * See your current Swift version in the VS Code status bar. | ||
ktoso marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| * Click the version to switch between installed toolchains instantly. | ||
ktoso marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| * Install any Swift version directly from VS Code with real-time progress. | ||
ktoso marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| * Automatic detection of .swift-version files with prompts to switch | ||
|
|
||
| ### Enhanced Swiftly CLI | ||
|
|
||
| * Swiftly now supports a machine-readable JSON output format. | ||
ktoso marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| * Swiftly now reports toolchain installation progress updates in **JSONL format** | ||
| * We have polished error reporting. | ||
ktoso marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
|  | ||
|
|
||
|  | ||
|
|
||
|  | ||
|
|
||
| This experience is already shipping in the latest update of the VS Code extension, so you can try it yourself now! | ||
|
|
||
| ### Things I learnt | ||
|
|
||
| * Making a VS Code extension. While I have experience with TypeScript from web development, the VS Code extension API and its development workflow are different from what I'm used to. | ||
| * I understood the structure and distribution of Swift toolchains, as well as how different versions can coexist on the same system using symlinks, environment variables, and PATH manipulation, across both macOS and Linux. | ||
| * The extension spawns Swiftly processes and reads their JSON output streams in real-time. This involved learning about IPC mechanisms, stdin/stdout buffering and process lifecycle management. | ||
ktoso marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
|
||
| Want to see what we built? Check out the repositories: | ||
|
|
||
| * **VS Code Swift Extension**: [github.com/swiftlang/vscode-swift](https://github.com/swiftlang/vscode-swift) | ||
| * **Swiftly CLI**: [github.com/swiftlang/swiftly](https://github.com/swiftlang/swiftly) | ||
|
|
||
| I have linked all pull requests and technical details in my **[detailed project report](https://docs.google.com/document/d/1Mnb9ybmVkpL6pAgrpMbSg6EV3owA2rz_FgltvAXdnUE/edit?tab=t.0)**, which provides an in-depth look into the specific changes. | ||
|
|
||
| This GSoC experience has been transformative. I came in as someone intimidated by large codebases, and I'm leaving with the confidence to tackle complex, multi-tool integrations. I'm excited to continue contributing to Swift community! | ||
ktoso marked this conversation as resolved.
Show resolved
Hide resolved
|
||
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.