Уровень сложности
Простой
Время на прочтение
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). Поэтому, никогда ни за что, ни при каких обстоятельствах, не совершайте этой ошибки. Она может стоить слишком дорого.
После этого, на удивление, я снова захотел поставить свифт, только теперь более основательно подойти к процессу. Результатом этого желания стала данная статья.
Заключение
Напоследок, хочу сказать, что это был крайне незабываемый опыт. Можно отметить, что документация в некоторых местах оставляет желать лучшего и хотелось бы более понятной инструкции к установке, так же, конечно, сказывается отсутствие нормального инструментария.
Надеюсь, эта ситуация изменится в лучшую сторону.
Swift — это мощный и интуитивно понятный язык программирования, разработанный компанией Apple для создания приложений для iOS, macOS, watchOS и tvOS. В то же время у разработчиков Windows может возникнуть вопрос — можно ли программировать на Swift на операционной системе Windows?
Эта статья предлагает подробное руководство по программированию на Swift на Windows. В ней будут рассмотрены различные способы установки и настройки среды разработки Swift на Windows, а также основные концепции и инструменты, необходимые для разработки приложений на Swift в Windows-среде.
Несмотря на то, что Apple официально не поддерживает разработку на Swift на Windows, существует несколько альтернативных способов, которые позволяют программировать на Swift в Windows-среде. В данной статье мы рассмотрим наиболее популярные из них и покажем, как установить и настроить эти инструменты, чтобы вы смогли начать разрабатывать приложения на Swift прямо в Windows.
Содержание
- Установка и настройка Swift на Windows
- Использование Swift Playgrounds для разработки на Windows
- Работа с интегрированными средами разработки (IDE) на Windows
- Основы программирования на Swift на Windows
Установка и настройка Swift на Windows
Вот шаги, которые нужно выполнить для установки Swift на Windows:
- Получите последнюю версию Swift для Windows с официального сайта https://swift.org/download/.
- Разархивируйте скачанный файл в удобное место на вашем компьютере.
- Добавьте путь к бинарным файлам Swift в переменную среды PATH на вашем компьютере. Для этого откройте «Свойства системы» -> «Дополнительные параметры системы» -> «Переменные среды» и найдите переменную PATH. Нажмите «Изменить» и добавьте путь к папке с бинарными файлами Swift.
- Установите зависимости для работы Swift на Windows. Библиотеку CMake можно скачать и установить с официального сайта https://cmake.org/download/. Также, установите Visual Studio (предпочтительно версию 2019) с поддержкой разработки на C++.
- Запустите командную строку и выполните команду swift —version, чтобы проверить, что Swift был успешно установлен и настроен на вашем компьютере.
После выполнения этих шагов, вы сможете программировать на языке Swift на вашем компьютере с Windows. Однако, учитывайте, что установка и настройка Swift на Windows не является официальным или поддерживаемым способом разработки на этом языке, и возможны некоторые ограничения и проблемы при работе.
Использование Swift Playgrounds для разработки на Windows
Swift Playgrounds представляет собой интерактивную среду разработки, созданную Apple для обучения и экспериментов с языком программирования Swift. Хотя Swift Playgrounds изначально разработан для использования на устройствах с операционной системой iOS или iPadOS, его также можно использовать для разработки на Windows.
Для использования Swift Playgrounds на Windows необходимо выполнить следующие шаги:
Шаг 1: Установите Xcode на виртуальную машину | Установите виртуальную машину, совместимую с операционной системой Windows, и установите на нее Xcode — среду разработки Apple для создания приложений под iOS и macOS. |
Шаг 2: Запустите Xcode в виртуальной машине | Запустите Xcode в виртуальной машине и создайте новый проект Swift Playgrounds. |
Шаг 3: Начните программировать | Используйте Swift Playgrounds для создания и запуска своего кода на языке Swift. Вы можете экспериментировать с различными конструкциями языка, тестировать и проверять свои идеи прямо в Playgrounds. |
Хотя использование Swift Playgrounds на Windows может быть не так удобным, как на устройствах Apple, это отличный способ начать изучение языка Swift и пробовать различные концепции программирования. Когда вы столкнетесь с ограничениями и возможными проблемами при использовании Swift Playgrounds на Windows, вы также можете изучить альтернативные среды разработки и инструменты, такие как REPL или онлайн-редакторы, чтобы продолжить свой путь в изучении и разработке на Swift.
Важно отметить, что хотя вы можете использовать Swift Playgrounds на Windows для экспериментов и обучения, для создания полноценных приложений под iOS или macOS вам всегда потребуется физическое устройство от Apple с установленной операционной системой iOS или macOS.
Работа с интегрированными средами разработки (IDE) на Windows
1. Xcode
Официальная IDE от Apple, Xcode, является наиболее широко используемой средой разработки для Swift. Однако, поскольку Xcode доступен только для macOS, пользователи Windows не могут установить его напрямую. В этот случае можно использовать виртуальные машины или удаленные рабочие столы для запуска Xcode на Windows.
2. Visual Studio Code
Visual Studio Code (VS Code) — бесплатная и легковесная IDE от Microsoft, которая поддерживает множество языков программирования, включая Swift. Для работы с Swift в VS Code требуется установить некоторые расширения, такие как «Swift for Visual Studio Code». Эти расширения позволяют получить функции, такие как подсветка синтаксиса, автодополнение кода и отладка.
3. AppCode
AppCode — это коммерческая IDE от компании JetBrains, которая предназначена специально для разработки на языках программирования Objective-C, Swift и C++. AppCode предлагает множество функций, таких как интеллектуальное автодополнение, рефакторинг кода и поддержку инструментов отладки.
4. Atom
Atom — это бесплатная и открытая среда разработки, разработанная GitHub. Она поддерживает язык Swift с помощью установки соответствующих пакетов и расширений. Atom обладает настраиваемым интерфейсом и возможностью расширения функциональности с помощью плагинов.
5. Visual Studio
Visual Studio — это одна из самых популярных IDE, разработанная Microsoft, которая поддерживает множество языков программирования, включая Swift. Для работы с Swift на Visual Studio требуется установка пакета «Silver» от RemObjects Software. Этот пакет предоставляет интеграцию Swift и C#.
Выбор IDE для разработки на Swift на операционной системе Windows зависит от индивидуальных предпочтений и требований разработчика. Каждая из перечисленных IDE имеет свои преимущества и недостатки, и их использование может быть адаптировано под конкретные проекты и задачи.
Основы программирования на Swift на Windows
Для начала разработки на Swift в среде Windows потребуется скачать и установить Swift Development Environment. Для этого можно воспользоваться пакетом установки, предоставленным компанией Apple, или воспользоваться сторонними системами установки, такими как Swift for Windows или Cygwin.
Swift Development Environment включает в себя компилятор Swift, редактор кода и средства для отладки. Основным инструментом для написания кода на Swift на Windows является Swift Playgrounds. Он представляет собой среду разработки, которая позволяет создавать и тестировать код на Swift в интерактивном режиме.
При программировании на Swift необходимо ознакомиться с базовыми понятиями, такими как переменные, константы, типы данных, условные операторы, циклы и функции. Переменные в Swift используются для хранения и изменения значений, а константы — для хранения неизменяемых значений.
В Swift имеется несколько типов данных — числовые, символьные, строковые, логические и другие. Они определяют, какие значения можно хранить в переменной или константе.
Для выполнения различных действий в программе используются условные операторы и циклы. Условные операторы позволяют выполнять различные действия в зависимости от значения условия, а циклы позволяют выполнять определенные действия несколько раз.
Также важным понятием в Swift являются функции. Они позволяют группировать определенные действия в отдельные блоки кода и вызывать их по необходимости. Функции могут принимать параметры и возвращать значения.
Это основные концепции, которые необходимо изучить для начала программирования на Swift на Windows. После изучения этих основ вы сможете создавать простые приложения, понимать и изменять существующий код и продолжать развиваться в программировании на Swift.
Уважаемые читатели нашего блога. Вас приветствует команда 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/ и получить бесплатную консультацию по ценам и услугам.
- Download book.zip (book.swift source) — 348 B
- Download 1st.zip (first.swift source) — 212 B
Introduction
Recently, I was quite desperate for a way to write some Swift code without being required to have a Mac available. Swift is an open source language so I hoped and then I Googled.
Somehow I stumbled upon an Infoworld article (Swift for Windows arrives at last, but as an unofficial port | InfoWorld[^]) which had a link to GitHub repo that had pre-built binaries that supposedly would help me compile, build and run Swift code. I figured it was worth a try.
I Was Shocked It Actually Worked
I followed the cryptic steps at the GitHub link, wrote the most basic Swift test code, compiled, built it and ran it. I couldn’t believe that it had actually turned my Swift code into a honest-to-goodness Windows EXE!!!
Prerequisites & Caveats
The information at the GitHub link mentions a few things that are required to build Swift on Windows and I want to mention those and a few other things here so you don’t get your hopes up that you are going to be able to build an iOS app on Windows. This will not allow you to do that. It will allow you to learn Swift syntax and some Swift API, but you will not be able to write iOS apps. The end result is a Windows binary that runs your limited Swift code.
- Using the binaries whichi allow you to compile and build your Swift code requires your machine to be running a 64 bit processor
- You’re going to need the C++ Redistributable for Visual Studio 2015
- You must have the Visual Studio 2015 SDK installed.
What Do All of Those Requirements Really Mean?
- Be running a 64 bit machine.
- Make sure you install Visual Studio 2015 Community Edition
I am running Windows 2012 R2 in a VM and I’ve installed Visual Studio 2015 Community Edition and I followed the steps (we’ll talk about in a moment) and I got this working in about 15 minutes.
The Caveats
What do you really get from this process?
Once you do this, you will be able to compile and build Swift code. However, you need to know there are some limitations:
- The process is able to compile Swift 2.x code. Does not seem to support Swift 3.x syntax and commands
- Not all libraries are available. Things like UIKit and Foundation libraries are not fully available.
- This builds a console application. This does not build any graphic UI representation. This is purely so you can learn basic Swift syntax and methods etc.
What are the benefits?
There are numerous benefits but admittedly they are mostly for those who simply want to learn some Swift code but don’t want to buy a Mac yet.
- Learn Swift syntax
- Learn to write pure Swift as you concentrate only on Swift — As you’re learning it’s actually nice to only focus on the language itself first. This will keep the noise of learning Cocoa (iOS UI library) and other items seperate.
- The syntax and skills you learn will directly apply to code you will write when you build your iOS apps.
How Building Swift Code On Windows Was Helpful To Me
Swift (and iOS) development is quite different from Windows development. I’ve been developing software on Windows for over 25 years now, but I just started learning iOS dev. I have a headless Mac Mini that isn’t always available to me, but I’m in the middle of developing an iOS app (iPhone, iPad).
I had a couple of pure methods I was need to write and they were based upon parsing a Swift String and manipulating it. You will see that indexing through a String in Swift is far different than most libraries on Windows (JavaScript, C#, C++, VisualBasic).
I Needed A REPL
This code was entirely seperate from what I was doing in the app and I knew if I could just get a playground I could write these pure functions and then add them back into my XCode project.
I just needed a way to REPL through some pure Swift code and this environment will give it to you. It’s also quite cool to build Swift and then run an actual Windows EXE. I find it interesting and geek-exciting.
Read more about what REPL means at : Read–eval–print loop — Wikipedia[^]
That’s what you’ll get out of this. Now, let’s see how to get it set up.
My Assumptions For Setup
I am assuming that you have a 64 bit machine running a modern version of Windows and that you have installed Visual Studio Community 2015 and everything associated with it (C++ Redistributable and SDKs). If you just choose the full install, you’ll get it. I was unsure if I had those too since I had installed Community a while back, but it was all there.
GitHub — Main Location
The GitHub site where you want to get the binaries we will use is at:
Release Swift for Windows (MSVC) · tinysun212/swift-windows · GitHub[^]
That link also provides the simple steps for what you need to do to set up the Swift Compiler.
I’ll copy those steps here as an image so we can talk about them:
Here’s the direct link to pull the zip from GitHub : https://github.com/tinysun212/swift-windows/releases/download/swift-msvc-20160418/swift-msvc-20160418-bin.zip
After you get that and unzip it, simply follow each step exactly as it tells you to.
Also, notice that the last one says «Copy swift.exe
to swiftc.exe
in C:/Program Files/Swift/bin
.»
That really means rename it from swift.exe to swiftc.exe This is the swift compiler executable.
Importance of Updating Your Path Environment Variable
That is also why you want to make sure your path (when at a console) points to this swift\bin directory.
If it does not, then when you go to compile a swift file the system will fail to find the Swiftc.exe (Swift Compiler) and your will get a command line error.
I’ll let you look up how to update your path variable. I suggest you do it at Control Panel….Sytem… (as shown in the following image):
Finally, Ready To Compile
If you’ve successfully followed those few steps, then you are ready to compile some swift code.
Here’s a first sample that will get you started:
let message : String = "Compiling and running Swift code on Windows is easy." print(message)
Note: There is no choice for Swift in the CodeProject editor so I set this code to Objective-C.
Some of the Swift syntax does follow C fairly closely. However, other syntax is unique to Swift.
Steps To Compile
- Save the code above to a file named
1st.swift
(or download the sample file from this article). It’s best if you drop it in its own folder somewhere so files don’t get mixed up with other things. - Open a Visual Studio x64 Native Tools command prompt (see sidebar and next image below) at the location where you’ve saved the
1st.swift
file. - type the following command to compile the code: c:\> swiftc -c 1st.swift -o 1st.obj <ENTER>
- If everything works properly when you hit <ENTER> you will simply see the command prompt appear again.
- Do a directory listing and you’ll see that a file was created. That file will be named :
1st.obj
- That file is the binary machine code that represents your Swift code. However, it has not been linked to the machine code that will tell Windows that this is an executable. Now, we need to run the linker.
- The linker is available via the Visual Studio x64 Native Tools comamnd prompt. Now you need to run the following command to turn 1st.obj into 1st.exe which will run our code.
link /out:1st.exe 1st.obj libswiftCore.lib libswiftSwiftOnoneSupport.lib /LIBPATH:"C:/Program Files/Swift/lib/swift_static/windows" /MERGE:.rdata=.rodata /FORCE:MULTIPLE /IGNORE:4006,4049,4217
Copy that command, paste it into your command prompt and hit <ENTER>.
If everything went the way it should you will see something like:
And, you will now have a new file named 1st.exe
.
#########################################################################
Sidebar : Visual Studio x64 Native Tools Command Prompt
You have to open this specific command prompt so that the associated Visual Studio tools are available to you. In this case, it is the Linker that we need.
Notice that there are many Visual Studio command prompts. Make sure you pick the correct one.
#########################################################################
Run 1st.Exe
Type 1st <ENTER> and the code will run. You will see something like:
If all of that went well, you are redy to write, compile, link and run any of your Swift files.
Closer Look At Compile Command
Now that you have this all set up, let’s take a closer look at the compile command so we understand what we did and how to use it for other Swift files.
For compiling you simply start the Swift compiler which is the executable named swiftc
to take a file as input and product an obj file.
You indicate the input file
that you want to compile by providing a -c
to swiftc and you tell it the output file by giving a -o.
Another Example Including a Swift Class
Here’s some sample code (also attached to this article) where I create a Book
class.
class Book{ let author : String let title : String let pageCount : Int init (_ author : String, _ title : String, _ pageCount : Int){ self.author = author self.title = title self.pageCount = pageCount print ("\(author) wrote \(title) which is \(pageCount) pages long") } } let b = Book("Matt Neuburg", "iOS 9 Programming Fundamentals with Swift", 604)
So, if we wanted to compile the attached book.swift
file you would provide the following to the command line:
swiftc -c book.swift -o book.obj
Linker
That will produce the book.obj file which needs to be linked and then we would run the linker with the following command:
c:\swiftCode>link /out:book.exe book.obj libswiftCore.lib libswiftSwiftOnoneSupport.lib /LIBPATH:"C:/Program Files/Swift/lib/swift_static/windows" /MERGE:.rdata=.rodata /FORCE:MULTIPLE /IGNORE:4006,4049,4217
Notice that this time I changed the /out:
parameter to the linker to be book.exe so that my executable would be named book.exe. I also had to provide the input obj file which I am linking and is named book.obj
.
With these two samples you should be well on your way to writing your own Swift and compiling on Windows.
Additional Resources
If you’re going to be learning pure Swift as you being learning to build iOS apps I highly suggest the following book:
iOS 9 Programming Fundamentals with Swift: Swift, Xcode, and Cocoa Basics: Matt Neuburg — Amazon.com: Books[^]
You can use that book to learn core Swift syntax and coding. It has a lot of good samples in the small that are perfect for use with this console compiler.
The Swift for Developers book is also a good one: Swift for Programmers (Deitel Developer Series): Paul Deitel, Harvey Deitel — Amazon.com: Books[^]
History
First publication of this article and sample code: 2016-10-26
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 !