Skip to content

Commit 3be47af

Browse files
authored
Add SwiftPM System Executables project proposal (#1316)
Added a new project proposal for SwiftPM system executables, detailing project size, difficulty, recommended skills, description, and expected outcomes.
1 parent 611cabc commit 3be47af

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed

gsoc2026/index.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,34 @@ Live preview could be further improved by providing language features such as go
207207

208208
- [Matthew Bastien](https://github.com/matthewbastien)
209209

210+
### SwiftPM System Executables for Enhanced Plugin User Experience
211+
212+
**Project size**: 200 hours
213+
214+
**Estimated difficulty**: Intermediate
215+
216+
**Recommended skills**
217+
218+
- Basic proficiency in Swift
219+
- Basic proficiency in SwiftPM packages
220+
221+
**Description**
222+
223+
SwiftPM is somewhat unique as a package manager because it supports marking dependencies on packages from foreign package managers, such as apt, yum, and homebrew. Today this is mainly used for libraries to be linked into SwiftPM products.
224+
225+
SwiftPM plugins can depend on executable tools, built from source, to help generate code and resources. If a tool cannot be built from source using SwiftPM then the plugin can invoke it using an absolute path. But, how will it know if the tool is present at that path? Also, how will the user be guided to install the package if it is missing?
226+
227+
The idea is to implement a system executable target, similar to system library targets where package names can be specified based on different package managers. Plugins can then depend on system executable targets so that warnings are emitted if the tool cannot be found on the path, along with the recommended remedy (e.g. "apt-get install foo") for any build errors. Since package manager may place tools in different locations based on the platform, there would be a SwiftPM plugin API for a plugin to specify the tool name and then it can discover the full path location. Add in some popular language-specific package manager support to gain access to many more tools (e.g. npm, and pip).
228+
229+
**Expected outcomes/benefits/deliverables**
230+
231+
- Complete SwiftPM proposal and working pull request
232+
233+
234+
**Potential mentors**
235+
236+
- [Chris McGee](https://github.com/cmcgee1024)
237+
210238
---
211239

212240

0 commit comments

Comments
 (0)