Frequently Asked Questions
Why does Plain Swift install Microsoft Visual Studio?
Some Microsoft Visual Studio components are required for the Swift Compiler. Plain Swift only installs the required minimum components of Visual Studio:
Component | Visual Studio ID |
---|---|
MSVC v143 - VS 2022 C++ x64/x86 build tools (Latest) | Microsoft.VisualStudio.Component.VC.Tools.x86.x64 |
Windows 11 SDK (10.0.22621.0) | Microsoft.VisualStudio.Component.Windows11SDK.22621 |
Plain Swift installs Windows 11 SDK. Can I use it under Windows 10?
Yes. The Windows App SDK provides a unified set of APIs and tools that are decoupled from the OS. These APIs and tools can be used in a consistent way by any desktop app on Windows 11 and downlevel to Windows 10, version 1809.
What version of Swift Compiler is installed by the Plain Swift installer?
Swift 5.9, as of Plain Swift 1.9.1.
Does Plain Swift use the Swift Package Manager?
No. Plain Swift uses the Swift Compiler (swiftc.exe) for compilation. Though you can see the Package.swift file in your project folder, it is considered a temporary helper file, required only for Language Server (sourcekit-lsp.exe) to work. Language Server provides inline code suggestions.
Can I modify the Package.swift file in my project?
No. Plain Swift does not use the Swift Package Manager, and your modifications won't work. See previous question.
Why doesn't Plain Swift use the Swift Package Manager?
There are several reasons:
- Work on Plain Swift began at the time when the Swift Package Manager was buggy and limited on Windows platform, if worked at all.
- The Swift Package Manager adds unnecessary complexity, while Plain Swift is designed with the KISS principle in mind.
- Using Swift Compiler (swiftc.exe) as opposed to Package Manager allows more fine grained tuning for the resulting executable, e.g. linking resource files (app icon, version info, and other resources), or creating a Windows GUI app (and not a console app), etc. All this may be implemented in the future, provided there is sufficient support for the project.