Windows Installation Options
Dependencies
Swift has the following general dependencies:
- Git (used by Swift Package Manager)
- Python1 (used by the debugger — LLDB)
Swift on Windows has the following additional platform specific dependencies:
- Windows SDK (provides the Windows headers and import libraries)
- Visual Studio (provides the Visual C++ SDK/Build Tools for additional headers)
Developer Mode
In order to develop applications, particularly with the Swift Package Manager, you will need to enable developer mode. Please see Microsoft’s documentation for instructions about how to enable developer mode.
Installation via Windows Package Manager
Windows Package Manager (aka WinGet) comes pre-installed with Windows 11 (21H2 and later). It can also be found in the Microsoft Store or be installed directly.
-
Install required dependencies:
winget install --id Git.Git -e winget install --id Python.Python.3.9 -e winget install --id Microsoft.VisualStudio.2022.Community --exact --force --custom "--add Microsoft.VisualStudio.Component.Windows11SDK.22000 --add Microsoft.VisualStudio.Component.VC.Tools.x86.x64"
Start up a new command-line shell (eg. Command Prompt, Windows PowerShell) and install the Python library
six
. -
Install Swift:
winget install --id Swift.Toolchain -e
Installation via Scoop
Scoop is a command-line installer for Windows. It can be installed through the following PowerShell commands.
# Optional: Needed to run a remote script the first time
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
# Command for installing Scoop
Invoke-RestMethod get.scoop.sh | Invoke-Expression
-
Install general dependencies:
scoop bucket add versions scoop install python310
Start up a new command-line shell (eg. Command Prompt, Windows PowerShell) and install the Python library
six
. -
Install platform dependencies:
The platform dependencies cannot be installed through Scoop as the install rules cannot install all required components. They will be installed through the Visual Studio installer.
This code snippet must be run in a traditional Command Prompt (
cmd.exe
).curl -sOL https://aka.ms/vs/17/release/vs_community.exe start /w vs_community.exe --passive --wait --norestart --nocache --add Microsoft.VisualStudio.Component.Windows11SDK.22000 --add Microsoft.VisualStudio.Component.VC.Tools.x86.x64 del /q vs_community.exe
-
Install Swift:
Traditional Installation
The traditional installation process is required for Swift older than 5.4.2.
Swift has been tested with Visual Studio 2019. You will need to install Visual Studio with the following components. The installer for Swift is available in the Download section. The toolchain on Windows is typically installed to %SystemDrive%\Library\Developer\Toolchains
.
The following Visual Studio components are required:
Component | Visual Studio ID |
---|---|
MSVC v142 — VS 2019 C++ x64/x86 build tools (Latest) | Microsoft.VisualStudio.Component.VC.Tools.x86.x64 |
Windows 10 SDK (10.0.17763.0)2 | Microsoft.VisualStudio.Component.Windows10SDK.17763 |
The following additional Visual Studio components are recommended:
Component | Visual Studio ID |
---|---|
Git for Windows | Microsoft.VisualStudio.Component.Git |
Python 3 64-bit (3.7.8) | Component.CPython.x64 |
The following additional Visual Studio component is suggested:
Component | Visual Studio ID |
---|---|
C++ CMake tools for Windows | Microsoft.VisualStudio.Component.VC.CMake.Project |
After Visual Studio and the required components are installed:
-
Download a latest Swift release (5.9) or development snapshot installer.
-
Run the package installer.
Support Files
This is only required for versions older than 5.4.2.
You must run the following commands using x64 Native Tools for VS2019 Command Prompt
as administrator.
The x64 Native Tools for VS2019 Command Prompt
sets up the necessary environment variables to find the system headers.
Administrator permission is required to modify the Visual Studio installation.
In order to make the Windows SDK accessible to Swift, it is necessary to deploy a few files into the Windows SDK.
copy /Y %SDKROOT%\usr\share\ucrt.modulemap "%UniversalCRTSdkDir%\Include\%UCRTVersion%\ucrt\module.modulemap"
copy /Y %SDKROOT%\usr\share\visualc.modulemap "%VCToolsInstallDir%\include\module.modulemap"
copy /Y %SDKROOT%\usr\share\visualc.apinotes "%VCToolsInstallDir%\include\visualc.apinotes"
copy /Y %SDKROOT%\usr\share\winsdk.modulemap "%UniversalCRTSdkDir%\Include\%UCRTVersion%\um\module.modulemap"
Because it is installing the files into the Visual Studio image, the files will need to be copied each time Visual Studio is updated.
Repairing after Visual Studio Updates
This is only required for versions older than 5.9.0.
If Visual Studio is updated, you may have to repair the installation. For versions older than 5.4.2, reinstall support files as mentioned above. For newer versions, see Microsoft’s instructions for repairing installed programs.
Code Signing on Windows
The following commands must be run in PowerShell.
-
Install GPG from GnuPG.org
-
If you are downloading Swift packages for the first time, import the PGP keys into your keyring:
$ gpg.exe —keyserver hkp://keyserver.ubuntu.com ` —receive-keys ` 'A62A E125 BBBF BB96 A6E0 42EC 925C C1CC ED3D 1561' ` '8A74 9566 2C3C D4AE 18D9 5637 FAF6 989E 1BC1 6FEA'
or:
$ wget https://swift.org/keys/all-keys.asc -UseBasicParsing | Select-Object -Expand Content | gpg.exe —import -
Skip this step if you have imported the keys in the past.
-
Verify the PGP signature.
The
.exe
installer for Windows are signed using GnuPG with one of the keys of the Swift open source project. Everyone is strongly encouraged to verify the signatures before using the software.First, refresh the keys to download new key revocation certificates, if any are available:
$ gpg.exe —keyserver hkp://keyserver.ubuntu.com —refresh-keys Swift
Then, use the signature file to verify that the archive is intact:
$ gpg.exe —verify swift-<VERSION>-<PLATFORM>.exe.sig ... gpg: Good signature from "Swift Automatic Signing Key #3 <swift-infrastructure@swift.org>"
If
gpg
fails to verify because you don’t have the public key (gpg: Can’t check signature: No public key
), please follow the instructions in Active Signing Keys below to import the keys into your keyring.You might see a warning:
gpg: WARNING: This key is not certified with a trusted signature! gpg: There is no indication that the signature belongs to the owner.
This warning means that there is no path in the Web of Trust between this key and you. The warning is harmless as long as you have followed the steps above to retrieve the key from a trusted source.
If gpg
fails to verify and reports “BAD signature”, do not run the downloaded installer. Instead, please email swift-infrastructure@forums.swift.org with as much detail as possible, so that we can investigate the problem.
Уровень сложности
Простой
Время на прочтение
6 мин
Количество просмотров 2.9K
Привет, Хабр!
Сегодня я поделюсь своим опытом страданий установки языка программирования Swift под Windows в форме небольшого рассказа и постараюсь описать те проблемы, с которыми я столкнулся при попытке развернуть детище Apple на платформе конкурента.
Начну издалека. Я являюсь мобильным разработчиком под Андроид и периодически люблю развлекать себя различными экспериментами. Совсем недавно ко мне в руки попал Mac Mini на Apple Silicon — в офисе был бесхозный компьютер от яблочной корпорации и в один момент я захотел собрать свой пет-проект на KMP (бывш. КММ) под айос, посмотреть, как оно будет работать. (И будет ли работать вообще) Плюсом меня давно тянуло к макоси, было интересно за что ее кто-то обожает, а кто-то терпеть не может. Забавно, что нейтрального мнения я не встречал ни разу.
Установка Swift
В первую очередь, я решил зайти на официальный сайт Swift и посмотреть, поддерживает ли он ОС от Майкрософт. К моему счастью, добрые дяди (или тети) программисты уже попотели за меня и добавили поддержку ЯПа в винду, начиная с 10ки.
Переходим в инструкции для нужной нам ОС и видим это:
Нас просят изначально поставить некоторый список зависимостей. Ставим сначала Visual Studio (в моем случае 2022). При установке выбираем «Разработка классических приложений на С++». Как только поставилось, листаем чуть ниже.
И вот тут лично у меня было некоторое смятение. К чему относиться блок ниже? К scoop? winget? Почему он так оформлен, будто является частью большого заголовка? Может, я придираюсь, но, честно говоря, это совсем неочевидно.
Хорошо. Будем действовать одним из самых древних методов познания – методом тыка.
Пробуем сначала поставить winget и запустить указанные скрипты, предварительно немного их изменив:
winget install Git.Git
winget install Python.Python.3 --version 3.10.2150.0
winget install Python.Python.3.9
winget install Microsoft.VisualStudio.2022.Community --force --custom "--add Microsoft.VisualStudio.Component.Windows10SDK.19041 --add Microsoft.VisualStudio.Component.VC.Tools.x86.x64"
В чем разница? Сразу же можно заметить, что мы устанавливаем кроме Python 3.10 еще и Python 3.9. Это потребуется нам, когда мы будем собирать наш проект. Так же я просто поменял версию студии, так как скрипт написан для 2019, а у меня 2022.
Будем считать, что первый шаг сделан. Листаем инструкцию дальше.
Видим, что теперь нас просят установить сам свифт, я предпочитаю скачать exe-шник, поэтому поставлю его.
На этом казалось бы все. Свифт стоит у вас на компьютере и можно даже что нибудь написать и запустить. Ведь можно же, да? Нет. На самом деле компилятор и все тулзы у вас действительно установлены, но вот нет никакой инфраструктуры, чтобы можно было хоть что то написать и запустить. Сейчас кто-то может возразить, мол, есть же Swift REPL, интерактивный редактор кода, который идет в комплекте со свифтом, в нем же тоже можно писать код. Безусловно можно, но лично у меня возникла такая проблема:
Это вынудило меня искать обходной путь.
Установка инструментов разработки
Буквально сразу в мою голову закралась мысль: «А что, если мы будем использовать VS Code?». Иногда мне кажется, что в этом простеньком редакторе можно или вскоре будет можно даже программировать ядерные реакторы, достаточно будет лишь доставить необходимые плагины для работы. Конкретно сейчас мы ядерные реакторы не программируем, но гибкость VS Code нам так же очень пригодится.
Ставим сначала редактор, после того как поставили ставим плагин для свифта. В нем есть: подсветка кода, дебаггинг, автодополнение, запуск .swift файлов (об этой функции мы поговорим чуть позже) и много чего еще, полный список можно найти в карточке плагина.
После того как поставили, пробуем наконец таки запустить наш простенький код на свифте:
print(“Hello world!!!”)
Жмем Ctrl + Shift + P и выбираем «Swift: Run swift script». И тут лично меня ждало еще одно разочарование:
Пораскинув мозгами, я пришел к единственно верному решению – отобрать у VS Code его работу и собирать и компилировать скрипты самостоятельно, вводя команды в cmd. Не самый приятный исход, но вполне себе терпимый.
Создаем папку под на будущий проект, после чего, находясь внутри созданной нами директории, прописываем в cmd следущее:
swift package init
Далее переходим в папку Sources/<PROJECT NAME>
и создаем там файл с именем main и расширением .swift (Обязательно файл должен иметь имя main, так как пакету нужна входная точка для исполнения кода). Итого файл должен называться так: main.swift
.
После всего этого открываем наш main.swift
в VS Code и пробуем запустить все тот же код.
Кажется, что это все и теперь мы можем спокойно выполнить наш код, но не тут-то было:
Оказывается, у нас беды с конфигурацией пакета, поэтому, в первую очередь, необходимо устранить эту проблему. Поднимаемся наверх по директориям, пока не дойдем до корневой папки пакета, где лежит файл Package.swift
. Открываем его.
Меняем
let package = Package(
name: <PROJECT NAME>,
products: [
// Products define the executables and libraries a package produces, making them visible to other packages.
.library(
name: <PROJECT NAME>,
targets: [<PROJECT NAME>,])
],
targets: [
// Targets are the basic building blocks of a package, defining a module or a test suite.
// Targets can depend on other targets in this package and products from dependencies.
.target(
name: <PROJECT NAME>,),
.testTarget(
name: <PROJECT NAME TESTS>,
dependencies: ["<PROJECT NAME>,"])
]
)
На
let package = Package(
name: <PROJECT NAME>,
products: [
// Products define the executables and libraries a package produces, making them visible to other packages.
.executable(
name: "main",
targets: ["<PROJECT NAME>"])
],
targets: [
// Targets are the basic building blocks of a package, defining a module or a test suite.
// Targets can depend on other targets in this package and products from dependencies.
.target(
name: <PROJECT NAME>,
dependencies: []),
.testTarget(
name: <PROJECT NAME TESTS>,
dependencies: [<PROJECT NAME>])
]
)
Сохраняем изменения. Находясь в директории, где лежит файл main.swift
запускаем команду:
swift run
Вуаля, код заработал, можно открывать шампанское.
Стоит отметить, что, возможно вы столкнетесь с такой проблемой, когда компилятор просто соберет готовый исполняемый файл, но не запустит его. Чтобы это решить перейдите сначала в корневую директорию проекта (папка .build/x86_64-unknown-windows-msvc\debug
), там найдите файл main.exe и запустите его. Если он будет сразу же закрываться после запуска, то добавьте в конце всего кода функцию readLine()
и тогда консоль не будет закрываться сразу же, а будет ждать ввод любой клавиши.
Когда я устанавливал все это дело в первый раз, я столкнулся с проблемой, которую не мог решить, после нескольких дней своих изысканий было решено забить на установку свифта прямо на винду и сделать все через WSL. Я проследовал всем инструкциям, что были указаны на сайте для установки свифт под Линукс, но опять забрел в тупик и решил бросить это дело в принципе. Но в тот же день я заметил, что ни один из установленных компиляторв C++ не может собрать простейший проект. Каждый как под копирку твердил, что не может найти необходимые файлы при линковке, естественно я начал свое расследование, что же послужило причиной выхода из строя линковщика. Искал я очень упорно, но результатов все не было, я удалил свифт с винды, переустановил начисто Visual Studio 3 раза, но ничего не помогало. И, наконец, на третий день я вспомнил про wsl и снес все пакеты, что я поставил во время той злосчастной установки. Каково же было мое счастье, что после всех попыток разобраться, я в кой то веке нашел ответ. Как уже стало ясно из рассказа, установка свифта из под wsl ломает линковщик компиляторов С++ (в частности, MSVC и GCC). Поэтому, никогда ни за что, ни при каких обстоятельствах, не совершайте этой ошибки. Она может стоить слишком дорого.
После этого, на удивление, я снова захотел поставить свифт, только теперь более основательно подойти к процессу. Результатом этого желания стала данная статья.
Заключение
Напоследок, хочу сказать, что это был крайне незабываемый опыт. Можно отметить, что документация в некоторых местах оставляет желать лучшего и хотелось бы более понятной инструкции к установке, так же, конечно, сказывается отсутствие нормального инструментария.
Надеюсь, эта ситуация изменится в лучшую сторону.
Уважаемые читатели нашего блога. Вас приветствует команда Appfox.ru и в этой статье мы постараемся максимально дополнить ваше представление о языке программирования Swift.
По прочтении вы узнаете:
- Немного из истории
- “А что это такое?”
- Сколько сейчас получают Swift-разработчики различной квалификации
- Заключение
Историческая хроника
Основы языка Swift были заложены еще в платформе NeXT,выпускаемой компанией Apple в 1989-1995 годах. Разработка Swift, каким мы его знаем сейчас, началась в 2010 году, а выход первой версии пришелся на 2014-й. На сегодняшний день вышло уже 5 версий этого языка, последнее обновление имеет номер 5.1.
В процессе разработки было взято лучшее от языков Objective-C (можно сказать,это базовая основа Swift), Ruby, Python 3, Haskell и многих других.
Цели и задачи
О высокоуровневых языках
Swift относится классу высокоуровневых языков,но что это значит?
Высокоуровневый язык — это язык, разработанный для того, чтобы с ним было просто и удобно работать. Другими словами, конкретные задачи ставятся на нем гораздо проще, чем на средне- и низкоуровневых языках. Основное отличие высокоуровневых языков — это способность абстрактного введения таких смысловых конструкций, описание которых на машинном коде или другом низкоуровневом языке заняло бы гораздо больше времени и строчек кода.
Одна из особенностей высокоуровневых языков — независимость алгоритма от платформы. В этом случае, данную зависимость проявляют инструментальные программы, такие, как компиляторы, преобразующие высокоуровневые алгоритмы в простой аппаратный код. Поэтому, компилятор всегда разрабатывается под определенную платформу и определенный высокоуровневый язык.
Таким образом, благодаря высокоуровневым языкам, не только облегчается решение сложных программных задач, но и упрощается портирование, то есть перенос одной и той же программы на другую платформу. Используя различные трансляторы и интерпретаторы, программы, написанные на языке высокого уровня, легче связываются с различными операционными системами, и, в идеале от них не требуется изменение программного кода в зависимости от платформы.
Такая разобщенность высокоуровневых языков с машинной интерпретацией компьютера имеет свои плюсы и минусы. К примеру, нельзя задать конкретные инструкции к конкретному оборудованию. Код,написанный на высокоуровневом языке, более удобочитаемый человеком, но менее эффективен для исполнения, чем такой же, но написанный на языке низкого уровня. Как следствие, в современных профессиональных высокоуровневых языках появилась поддержка параллельного использования низкоуровневого (например, ассемблера).
А теперь конкретно, что касается Swift
Будучи продуктом Apple, Swift ориентирован на создание программного обеспечения для Mac OS X и iOS. Но освоить его может и любой пользователь Windows или Linux. Благодаря этому, разработка на swift на windows может осуществляться с любой IDE(Интегрированная среда разработки,которой может стать даже блокнот), а компилировать код мы будем, к примеру, в Swift for Windows.
Так было раньше. А с недавнего времени появилась возможность нативной разработки на “Винде”. Теперь компилятор и ключевые библиотеки имеются и под Windows. Язык Swift на windows пришел недавно, в конце сентября этого года. Это значит, что разработчики получили возможность перенести свои проекты на эту платформу. При чем, Swift Windows(или Windows Swift, без разницы) это не просто порт. Было обеспечено использование всего функционала на ОС — компилятора, стандартных и вспомогательных библиотек. Теперь Swift язык программирования на Windows и для него в том числе.
Преимущества:
- Безопасность, которую обеспечивает строгая типизация, то есть вы всегда знаете с объектом какого типа вы работаете.
- Будучи языком высокого уровня,он гораздо быстрее своих “предков”. Apple утверждает, что Swift до 2,6 раз быстрее, чем Objective-C и почти в 8.4 раз обогнал Python 2.7. Программа-максимум — превзойти по скорости С++.
- Перспективы. В ближайшее десятилетие у Apple нет мотива заменить Swift на другой язык. Прибавим 6 лет прогресса, как с точки зрения развития,так и популярности, коммерческий успех гаджетов Apple и расширение линейки. Взглянув на это все, можно небезосновательно утверждать, что спрос на Swift-разработчиков будет только повышаться.
- Простота в изучении. По всем канонам “эппловского” минимализма здесь несложный синтаксис,который легко читать и на котором не менее легко изъясняться. Swift понятен даже для разработчиков, которые используют другие языки. Это большое преимущество, когда одной из задач стоит кроссплатформенность.
- Автоуправление памятью. Swift осуществляет подсчет ссылок в автоматическом режиме и управляет памятью без вмешательства разработчика.
Недостатки
- Нехватка кадров. Swift недавно вышел в свет относительно своих аналогов, поэтому талантливых разработчиков достаточно мало. Но тем не менее, это играет на руку тем, кто хочет вести разработку на этом языке. Спрос на них только возрастает, а порог вхождения все еще на комфортном для новичков уровне.
- Нехватка библиотек. Swift достаточно молод, поэтому в нем относительно мало нативных функций, которые имели бы совместимость с другими версиями. Порой случается так, что библиотеки и фреймворки разработанные в прошлых релизах, абсолютно непригодны в новых.
- Дестабилизация. Довольно часто программисты сталкивались с одной и той же проблемой. Из-за корректив в новых версиях, Swift проявляет серьезную нестабильность. Вплоть до того, что при желании или необходимости воспользоваться новым релизом, разработчику придется начать писать код заново. Однако, все же есть решение в виде Swift Migration Tool в XCode, что упростило миграцию на четвертую версию этого языка.
Зарплата разработчиков
Особенности профессии
Разработка на Swift — очень перспективное занятие, но контингент, разрабатывающий ПО под iOS, OS X и другие популярные ОС, должен иметь отличный технический склад ума, обладать креативностью, способностью применять нестандартные решения, чему не всегда можно обучиться на курсах Swift . В процессе разработки может применяться как Swift, так и Objective C, поэтому необходимо иметь достойные навыки в каждом из этих языков.
Swift-разработчик может и должен:
- создавать программы;
- тестировать программы;
- заниматься размещением продукции в магазине, анализировать обратную связь от пользователей, которые пользуются приложением;
- вносить коррективы, заниматься отладкой;
- разрабатывать обновления, составлять инструкции;
- грамотно распоряжаться бюджетом и личным временем.
Но сколько же платят?
А теперь к самому интересному. К бухгалтерии. Пару лет назад мы стали свидетелями так называемого “IT-бума”. С появлением новых технологий, таких как AR, VR, нейронных сетей и прочих, индустрия начала расти небывалыми темпами. На фоне корпораций-гигантов вроде Гугл и Майкрософт, появляется значительное количество молодых, но перспективных компаний, которым требуются ценные кадры. И сфера Swift не является исключением. Язык молодой, конкуренция невысокая, но это временное явление. Рассмотрим же, какие расценки сейчас у Swift-разработчиков.
Средний доход разработчиков всех уровней — примерно 144 тыс. р.
Отправная точка — Junior Developer с зарплатой около 80 тыс.р. в зависимости от компании. Middle Developer может похвастаться зарплатой в 1.5 раз больше,чем у “джуна” — это примерно 120 тыс.р. Senior Developer обогнал “миддла” в полтора раза, а это в районе 190 тысяч рублей. И тут интересная неожиданность. Лид получает в среднем в 1.1 раза меньше “сеньора”, то есть около 183 тыс.р. Ниже будет предоставлена статистика из разных источников.
Заключение
Таким образом, мы постарались максимально охватить все, что касается данного языка программирования. Рассказали про его техническую составляющую, динамику развития, преимущества и недостатки. Как вы уже поняли, Swift молод, перспективен и достаточно широко востребован на рынке IT-услуг. Благодаря его простоте, он быстро осваивается, а также прекрасно подходит для широкого круга задач. Конечно, не обошлось и без участия маркетинга компании Apple в его продвижении. Но для рядового программиста, всеобщая известность этого языка будет являться только плюсом.
В студии AppFox можно подать заявку на программирование, создание игр или заказать разработку приложений https://appfox.ru/ и получить бесплатную консультацию по ценам и услугам.
I am wondering if I can write iOS applications on windows using runswiftlang.com. This website enables me to write Swift apps and run the apps on it. Can I write code like the following on the website and save it to a .swift file?
func anyMultipleOf(value: Int, numbers: [Int]) -> Bool {
return numbers.reduce(false) {
any, number in
return any || ((value % number) == 0)
}
}
let sum = [Int](1..<1000).filter() { anyMultipleOf($0, [3, 5]) }.reduce(0) { $0 + $1 }
println(sum)
If not I want to know what programming languages enable me to develop iOS apps.
asked Apr 28, 2015 at 12:18
No, you need a Mac machine to build (native or hybrid) iOS apps. Aside from Objective C or Swift, there are a couple of other options (mostly multi-platform solutions that target Android and/or Windows Phone as well), like Xamarin (based on C#), PhoneGap/Cordova (based on HTML/JavaScript) and Appcelerator (based on HTML/Javascript).
answered Apr 28, 2015 at 12:21
GlorfindelGlorfindel
22k13 gold badges81 silver badges109 bronze badges
Swift is apple only and so is Objective-C however there are a few tools that let you make Mobile Apps on windows I still think that the actual creation of the application package for iOS has to happen on a mac.
answered Apr 28, 2015 at 12:20
James CampbellJames Campbell
3,5214 gold badges33 silver badges51 bronze badges
0
Swift language is used for developing iOS/Mac apps. You can write small programs and execute it using online tools (such as http://www.runswiftlang.com/ as mentioned by you) but in order to create apps its mandatory to have a MacBook/Mac Mini/iMac. Since apps can only be developed in Xcode (IDE) using Swift/Objective-C language.
Also, in order to test your app you need simulator which is embedded with Xcode only. If you want to put an app on the App Store then you need to test app on real device (iPad or iPhone).
Conclusion : You can write small programs on Windows system using online tools but in order to develop full-fledged app you need to have the following:
- Apple developer account (Paid account)
- Workstation for writing code (MacBook/iMac/Mac mini etc)
- Apple device for testing app (iPhone/iPad etc)
answered Apr 28, 2015 at 12:37
Jayprakash DubeyJayprakash Dubey
35.8k18 gold badges170 silver badges177 bronze badges
2
As of 2020, yes!
There’s a swift toolchain and runtime for compiling Swift and running natively on Windows. At this point it is mature enough to provide all the expected types from standard, plus the core libraries including Foundation, dispatch, and XCTest. REPL works too.
Get the Windows toolchain and get started here: https://www.swift.org/getting-started/
There’s also some community driven efforts to extend Swift’s obj-C interoperability to a more generic C++ interface.
answered Aug 16, 2022 at 12:47
Learn how to get started with the Swift Programming Language in Windows.
To be honest, although may not want to work totally with this language on this environment to create applications or something like that, you may find very useful the fact of programming in this language in a Windows environment just for learning purposes of the language itself and its syntax. It’s worth to mention that not everyone can afford the purchase of an apple device to work with this language, so if you are one of those that work in a windows environment and you may like to introduce yourself to the Swift Language, then you have found the correct article to get started with.
The Swift Language is a high-performance system programming language with a very clean and modern syntax, that offers seamless access to existing C and Objective-C code and frameworks, being memory safe by default. Although inspired by Objective-C and many other languages, Swift is not itself a C-derived language. As a complete and independent language, Swift packages core features like flow control, data structures, and functions, with high-level constructs like objects, protocols, closures, and generics. Swift embraces modules, eliminating the need for headers and the code duplication they entail. The open source SwiftForWindows project provides an easy-to-use development environment for Swift programming for Windows applications. The project works with the Swift compiler for Cygwin, MSVC, MinGW.
In this article, we’ll show you an easy way to get started with the programming with the Swift Language in a Windows Environment.
1. Download SwiftForWindows compiler
As first step, you need to download the installer of Swift For Windows from the releases page of the project at Github here. The installer file size is around 110MB and you will be the one who decides where to install it. By default, it’s installation path is at C:/Swift. Now you need to understand how the project works, after installing Swift For Windows, you will basically have at your disposition an executable that works as a compiler, it offers a graphical user interface that allows you to select the swift source file that you want to compile:
You need to compile the file before running it, so if your code is valid and you click on Compile, you will be able to run it with the Run button, which normally will open a command prompt with the output of your code if there’s any of course. For more information about this project, please visit the official repository at Github here.
2. Testing the compiler
To get started with the compiler, let’s write some code ! Create a file somewhere on your system namely hello.swift
. This file will have the following code inside:
print("Hello World !")
To define the file that the compiler should compile, click on Select File. This will open the system filebrowser and will allow you to select a file, select the file we’ve just created. The steps to run your Swift code on this environment is the following:
- Click on Compile
- If the compilation succeeds, click on Run
With the code that we wrote on our hello.swift
file, the output will be:
Note that while the command prompt with the output of your Swift Code is opened, the compiler tool will be blocked, so be sure to close the cmd window before trying to compile again. However, not everything in the life is printing hello world on every new programming language that you learn! You may want to get started with more complex code, for example the fibonacci series. Create a new file namely fibonacci.swift
and paste the following code:
class FibIterator : IteratorProtocol {
var (a, b) = (0, 1)
func next() -> Int? {
(a, b) = (b, a + b)
return a
}
}
let fibs = AnySequence{FibIterator()}
print(Array(fibs.prefix(10)))
Compile it and run it. As expected, the output will be:
About the logs
During the compilation, the compiler will have a log that is displayed directly in the application. This log contains the warnings, notes or errors of the code that is being compiled. You will not always get a Successfully compiled message in the output, so you will need to pay attention to the other kind of messages in the log. Note that once you Run the compiled code (which means your application compiled succesfully, as long as there’s not an older version of your program), the log will be removed, so check it immediately after trying to compile. As on every sane compiler, you will get the line and character where the exception/warning occurs.
Errors
The compiler will be able to deal with errors during the compilation, for example with the following code that should display the date in the output:
let date = Date()
let calendar = Calendar.current
let components = calendar.dateComponents([.year, .month, .day], from: date)
let year = components.year
let month = components.month
let day = components.day
print(year)
print(month)
print(day)
Will throw the following errors (error: use of unresolved identifier 'Calendar' and 'Date'
):
This error in our code is cause by the missing import statement at the beginning of our code ‘import Foundation
‘, the functional snippet is shown in the warnings area.
Warnings
The compiler will display warnings as well, if we fix our previous snippet importing the Foundation namespace, our code will compile succesfully:
import Foundation
let date = Date()
let calendar = Calendar.current
let components = calendar.dateComponents([.year, .month, .day], from: date)
let year = components.year
let month = components.month
let day = components.day
print(year)
print(month)
print(day)
However, we’ll get some warnings and notes:
- warning: expression implicitly coerced from ‘Int?’ to Any. This warnings is triggered cause of the print function, that requires a set of Any parameters. String is a Any. In this case the compiler is telling you that it implicitly coerced the optional string into an Any object (by transforming the String value in Optional(value)).
- note: force-unwrap the value to avoid this warning. When an object is optional and you want to access one of its methods or properties, you will need to ‘unwrap’ it.
The output of our running code will be:
In conclusion, you can see how easily it is to get started with the Swift programming language or at least with its syntax in Windows. Notice that as there’s no official API that exposes how to do specific things in Windows, like opening a File browser, a program or related, this project is made entirely for strict learning purposes of the language in a different environment.
Happy coding !