Уровень сложности
Простой
Время на прочтение
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 является одним из самых популярных языков программирования, который широко используется для разработки мобильных приложений для платформы iOS. Однако, по умолчанию Swift поддерживает только macOS и Linux, что делает программирование на Windows невозможным. Но не стоит отчаиваться, потому что есть несколько способов, которые позволят вам все же создавать приложения на Swift на Windows.
Первый и самый простой способ — использовать виртуальную машину. Вы можете установить виртуальную машину, такую как VirtualBox или VMWare, на вашем компьютере под управлением Windows и настроить в ней экземпляр macOS. После этого вы сможете установить и использовать Xcode и Swift на этом виртуальном экземпляре macOS.
Второй способ — использовать онлайн-сервисы. Существуют сервисы, которые предоставляют виртуальные машины с предустановленным macOS, на которых вы можете создавать приложения на Swift. Вы можете получить доступ к этим сервисам через веб-браузер на своем компьютере под управлением Windows и использовать их для разработки и тестирования приложений.
Наконец, третий способ — использовать альтернативные среды разработки и фреймворки. Например, существуют инструменты, такие как Perfect, Kitura и Vapor, которые предоставляют среду разработки и фреймворк для создания приложений на Swift в среде Windows. Хотя эти инструменты не поддерживают все функции Swift и Xcode, они все же позволяют разрабатывать приложения на Swift на Windows.
Содержание
- Подготовка к программированию на Swift на Windows
- Установка необходимых инструментов
- Конфигурация окружения для работы с Swift на Windows
- 1. Установите LLVM и Clang
- 2. Скачайте Swift
- 3. Настройте переменные среды
- 4. Проверьте установку
- Основы программирования на Swift на Windows
- Разработка приложения на Swift на Windows
- Тестирование и отладка программы на Swift на Windows
- Вопрос-ответ
- Можно ли программировать на Swift на Windows?
- Какой инструмент нужен для программирования на Swift на Windows?
- Какие среды разработки подходят для программирования на Swift на Windows?
Подготовка к программированию на Swift на Windows
Программирование на Swift на Windows может показаться сложной задачей, так как Swift является языком, разработанным Apple и предназначенным для создания приложений для их операционных систем, таких как iOS, macOS и tvOS. Однако, с использованием некоторых инструментов и ресурсов, вы можете начать программировать на Swift на Windows.
Вот несколько шагов, которые помогут вам подготовиться к программированию на Swift на Windows:
- Установка виртуальной машины
- Установка Xcode
- Выбор среды разработки на Windows
- Изучение основ Swift
- Проекты и практика
Для запуска операционной системы macOS на Windows вам потребуется установить виртуальную машину. Некоторые популярные варианты включают Oracle VirtualBox и VMWare Workstation. После установки виртуальной машины, вам понадобится загрузить образ macOS.
После установки виртуальной машины с macOS, вам нужно будет загрузить и установить Xcode, интегрированную среду разработки (IDE) для создания приложений на Swift. Xcode доступен в Mac App Store.
Хотя невозможно напрямую разрабатывать на Swift на Windows, вы можете выбрать альтернативную среду разработки, которая поддерживает Swift, такую как Visual Studio Code или AppCode. Эти среды разработки могут предоставить вам функциональность для написания и отладки кода на Swift.
Прежде чем начать программирование на Swift, важно изучить основы языка. Существуют множество руководств, учебников и курсов в Интернете, которые помогут вам изучить основы Swift. Вы можете использовать онлайн-ресурсы, такие как Swift.org и Swift Playgrounds, чтобы получить доступ к материалам для обучения.
Начните с создания небольших проектов на Swift и постепенно углубляйтесь в язык. Практика играет важную роль в освоении программирования на Swift, поэтому старайтесь регулярно создавать новые проекты, решать задачи и разрабатывать свои навыки.
Следуя этим шагам и уделяя время изучению и практике, вы сможете приступить к программированию на Swift на Windows.
Установка необходимых инструментов
Для программирования на Swift в операционной системе Windows, вам потребуются следующие инструменты:
- Swift Toolchain: Это комплект инструментов, включающий компилятор Swift, библиотеки и другие необходимые файлы.
- IDE: Среда разработки интегрированная среда разработки (IDE) является неотъемлемой частью процесса разработки в Swift. Рекомендуется использовать Xcode, который является официальной IDE для разработки на Swift.
Шаг | Действие |
---|---|
1 | Загрузите Swift Toolchain с официального сайта Swift |
2 | Установите среду разработки Xcode с официального сайта Apple |
3 | После установки Xcode, откройте его и прочитайте и примите лицензионное соглашение |
4 | Настройте путь к файлам инструментов Swift в операционной системе Windows |
5 | Проверьте правильность установки и настройки, выполнив небольшую тестовую программу на Swift |
После успешной установки Swift Toolchain и настройки IDE, вы будете готовы начать программировать на Swift в операционной системе Windows.
Конфигурация окружения для работы с Swift на Windows
Swift — это язык программирования, который изначально был разработан для создания приложений под операционную систему iOS. Однако, с появлением Swift.org и открытым исходным кодом, стало возможным запускать Swift на различных платформах, в том числе и на Windows.
Для работы с Swift на Windows необходимо выполнить несколько шагов для конфигурации окружения:
1. Установите LLVM и Clang
LLVM (Low-Level Virtual Machine) — это семейство компиляторов с открытым исходным кодом, а Clang — это компилятор языка C++ совместимый с LLVM. Для работы с Swift на Windows вам нужно установить LLVM и Clang.
2. Скачайте Swift
Скачайте предварительно собранный компилятор Swift для Windows с официального сайта Swift.org. Загрузите архив с исполняемыми файлами и распакуйте его в любое удобное место.
3. Настройте переменные среды
Откройте «Системные свойства» на вашем компьютере, перейдя в «Панель управления» -> «Система» -> «Дополнительные параметры системы». Нажмите на кнопку «Переменные среды» и в разделе «Системные переменные» найдите переменную «Path». Нажмите на кнопку «Изменить» и добавьте путь к папке, где вы распаковали Swift.
4. Проверьте установку
Откройте командную строку и введите команду «swift —version». Если установка прошла успешно, то должна отобразиться версия Swift и соответствующая информация.
Действие | Команда |
---|---|
Сборка проекта | swift build |
Запуск проекта | swift run |
Тестирование проекта | swift test |
Теперь ваше окружение готово для работы с Swift на Windows. Вы можете начать создавать и запускать свои Swift-проекты!
Основы программирования на Swift на Windows
Swift — язык программирования, разработанный компанией Apple. Изначально предназначенный для создания приложений под операционные системы iOS, macOS, watchOS и tvOS, сейчас Swift используется также для разработки серверных приложений и программного обеспечения для Windows.
Для программирования на Swift на Windows вам потребуются следующие инструменты:
- Swift for Windows — это неофициальная среда разработки для языка Swift на операционной системе Windows. Вы можете найти его на официальном сайте проекта и загрузить последнюю версию.
- IDE (среда разработки) — для написания кода на Swift на Windows вы можете использовать любой текстовый редактор, такой как Sublime Text или Visual Studio Code. Однако рекомендуется использовать Xcode, официальную среду разработки от Apple, которая доступна только для macOS. Вы можете установить Xcode на виртуальную машину с macOS или использовать удаленный доступ к macOS.
После установки необходимых инструментов вы можете начать программировать на Swift на Windows. Вот некоторые основные понятия и конструкции языка, с которыми вам стоит ознакомиться:
- Переменные и константы — в Swift вы можете объявлять переменные с помощью ключевого слова
var
и константы с помощью ключевого словаlet
. Например:
var age = 25
let name = "John"
- Типы данных — Swift имеет несколько встроенных типов данных, таких как
Int
(целые числа),Double
(числа с плавающей запятой),String
(строки) и другие. Вы также можете создавать свои собственные типы данных. Например:
var age: Int = 25
var weight: Double = 70.5
var name: String = "John"
- Условные выражения — в Swift вы можете использовать условные выражения
if
,else if
иelse
для принятия решений в зависимости от значения переменной или условия. Например:
var isAdult = true
if isAdult {
print("Вы совершеннолетний")
} else {
print("Вы несовершеннолетний")
}
- Циклы — в Swift вы можете использовать циклы
for
иwhile
для многократного выполнения определенного блока кода. Например:
for i in 1...5 {
print(i)
}
var counter = 0
while counter < 5 {
print(counter)
counter += 1
}
Это лишь небольшой обзор основ программирования на Swift на Windows. Существуют и другие важные концепции, такие как функции, массивы, структуры и классы, с которыми вам будет полезно ознакомиться, чтобы успешно программировать на Swift. Удачи в изучении языка!
Разработка приложения на Swift на Windows
Создание приложений на языке Swift на платформе Windows может быть сложной задачей, так как Swift в первую очередь предназначен для разработки приложений на платформе macOS и iOS. Однако существуют некоторые способы, которые позволяют разрабатывать приложения на Swift на Windows:
- Использование онлайн-инструментов, таких как IBM Swift Sandbox или Repl.it.
- Установка виртуальной машины, на которой можно запустить macOS и затем использовать Xcode для разработки приложений на Swift.
- Использование сторонних рамок работы со Swift, таких как Perfect или Vapor.
Каждый из этих методов имеет свои преимущества и ограничения. Использование онлайн-инструментов позволяет быстро начать разработку приложения на Swift без необходимости устанавливать дополнительные программы или операционные системы. Однако онлайн-инструменты могут быть ограничены по функциональности и недоступны в офлайн-режиме.
Установка виртуальной машины может быть более сложным и требует больше времени и ресурсов, но позволяет разрабатывать приложения на Swift с использованием полноценной среды разработки Xcode. Этот метод также предоставляет доступ ко всем возможностям Swift и возможность запускать приложения на эмуляторе iOS.
Использование сторонних рамок работы со Swift, таких как Perfect или Vapor, позволяет разрабатывать серверные приложения на языке Swift, которые могут работать на платформе Windows. Эти рамки предоставляют средства для разработки и развертывания приложений на Swift на серверах Windows.
Метод | Преимущества | Ограничения |
---|---|---|
Использование онлайн-инструментов | Быстрый старт в разработке, не требуется установка дополнительных программ | Ограниченная функциональность, работает только в онлайн-режиме |
Установка виртуальной машины | Полноценная среда разработки Xcode, возможность запуска на эмуляторе iOS | Сложная установка, требуется дополнительное железо и ресурсы |
Использование сторонних рамок работы со Swift | Разработка серверных приложений на Swift на платформе Windows | Ограничен функциональностью, не позволяет создавать клиентские приложения для iOS |
В зависимости от ваших потребностей и возможностей выберите метод, который наилучшим образом соответствует вашим требованиям по разработке приложений на Swift на платформе Windows. Удачной разработки!
Тестирование и отладка программы на Swift на Windows
При разработке программы на Swift на Windows, важно уделять внимание тестированию и отладке, чтобы убедиться в корректности работы и обнаружить и исправить ошибки в программном коде. Существуют различные инструменты и подходы, которые помогут в проведении этих процессов.
Для тестирования программы на Swift можно использовать различные фреймворки, такие как XCTest или Quick/Nimble. Создание и запуск тестов позволяет проверить корректность работы отдельных частей программы, а также обнаружить и исправить ошибки и неполадки.
Для отладки программы на Swift на Windows можно использовать инструменты IDE (Integrated Development Environment), такие как Xcode или Visual Studio Code. Они обеспечивают удобную среду для пошагового выполнения кода, наблюдения за значениями переменных, анализа стека вызовов и других операций, которые помогают обнаружить и исправить ошибки.
Кроме того, для отладки программы на Swift на Windows можно использовать логирование. Вставка в код команды, которая выводит значения переменных или другую нужную информацию в консоль, помогает анализировать работу программы и выявлять проблемные моменты.
Важно также тестировать программу на разных вводных данных и с различными сценариями использования. Это поможет обнаружить возможные ошибки или ситуации, которые могут привести к некорректной работе программы. Тестирование на разных операционных системах и различных версиях Swift также является важным шагом для обеспечения корректности работы программы на Windows.
Итак, тестирование и отладка программы на Swift на Windows являются неотъемлемой частью разработки программного кода. Они позволяют проверить корректность работы программы, обнаружить и исправить ошибки, а также улучшить качество и надежность программы.
Вопрос-ответ
Можно ли программировать на Swift на Windows?
Да, можно программировать на Swift на Windows, но это не является официальной поддерживаемой платформой. Существует несколько способов запустить Swift на Windows, например, с помощью различных инструментов и сред разработки.
Какой инструмент нужен для программирования на Swift на Windows?
Для программирования на Swift на Windows вам понадобится компилятор Swift, такой как Swift for Windows. Этот инструмент позволяет вам запускать и тестировать код Swift на Windows без необходимости использовать macOS.
Какие среды разработки подходят для программирования на Swift на Windows?
Есть несколько сред разработки, которые подходят для программирования на Swift на Windows, например, Visual Studio Code, Atom и AppCode. Вы можете настроить эти среды разработки для работы с Swift и использовать их для создания, отладки и запуска кода на Windows.
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 !
Saleem Abdulrasool is a member of the Swift Core Team and a software engineer at Google Brain.
The Swift project is introducing new downloadable Swift toolchain images for Windows! These images contain development components needed to build and run Swift code on Windows.
For over a year now, there has been a significant endeavour to port Swift to Windows in conjunction with the developer community at swift.org. The Windows support is now at a point where early adopters can start using Swift to build real experiences on this platform.
Bringing Swift to Windows
Porting Swift to Windows is not about simply porting the compiler, but rather ensuring that the full ecosystem is available on the platform. This includes the compiler, the standard library, and the core libraries (dispatch, Foundation, XCTest). These libraries are part of what enables developers to write powerful applications with ease and without having to worry about many of the details of the underlying system. There are many technical details in the story of bringing Swift to a usable state on Windows, and if you are interested in them, I would recommend checking out my talk on the topic from the LLVM Developer Conference.
With these core libraries and the flexible interoperability of Swift with C, it is possible to develop applications on Windows purely in Swift while taking advantage of the existing corpus of libraries on the Windows platforms.
Example Application
This demo calculator is written entirely in Swift, with code seamlessly flipping between the application code written in Swift and the system libraries:
This project was built using:
-
The Swift toolchain on Windows
-
An installation of Visual Studio 2019 which delivers the other needed pieces in the form of CMake, Ninja, and the Windows SDK
Although the demo application is built with CMake, Swift Package Manager support on Windows is coming along. It will soon be possible to get the application building using swift build
without needing CMake or Ninja.
Here you can see stepping through the application using lldb
:
Cross-Platform Applications
Early adopters like Readdle are experimenting with cross-platform applications written in Swift, easily bringing many of the existing Swift libraries to Windows to support their applications.
I had been working with Alexander at Readdle about his team’s work, and he sent me this note:
We at Readdle started experimenting with Swift on Windows more than a year ago, in Q2 of 2019. By that time we already released Spark for Android which uses Swift to share core code with iOS/macOS, and the opportunity to extend to one more platform was really tempting.
Despite some functionality being unready as of yet, Swift on Windows turned out to be fully satisfying our needs. In fact, some third party C/C++ dependencies gave us more headaches than Swift did itself. All business logic of Spark is located in a separate Core module. A pack of modules, actually, but we refer to them as Core. This allows us to use any UI framework on the target platform: AppKit on macOS, UIKit on iOS, native UI Toolkit on Android. So, basically, we had to port Spark Core on Windows. After all initial concepts were proved, it was mostly routine day-to-day work to bring it alive on Windows.
What we have now:
- 9 Swift modules (255 739 SLOC, 2 133 source files)
- 3 third party swift modules
- 1452 tests (powered by XCTest)
- Windows-based CI to keep all tests green
- Heterogenous build system (partially CMake, partially custom scripts)
As a good example, pure Swift modules like CryptoSwift and OAuthSwift almost worked right out of the box. We did trivial imports adjustment, excluded a few AppKit/UIKit references and voilà!
Another challenge was to decide how to implement the user interface. After extensive discourse we ended up with Electron as the front-end part of future Spark for Windows. That meant we not only needed to be able to build Spark Core on Windows but also use it as a loadable addon for Node.js.
Node.js addon in pure Swift? That appeared to be surprisingly easy. Swift perfectly imports N-API headers. We still need three lines of C code plus one small C header to define addon entry point, but all logic is in Swift. Due to the crossplatform nature of Node.js, we were able to use macOS as a development platform with Xcode as IDE, and then use the agility of CMake to build the same code on Windows.
Since the first day we started, Swift on Windows did a giant step forward in terms of platform support and stability. I’d say, if you are thinking about extending your existing application codebase to platforms other than macOS/iOS – you absolutely can do it with Swift now, or, at least, soon. If you are maintaining a small Swift library – you could easily add Windows support already!
— Alexander Smarus; Product Engineering Lead at Spark Team, Readdle Inc
More details are available on Readdle’s blog.
Adding support for Windows to Swift is the beginning of a journey. The current support sets the first milestone where the language is usable. There is yet another even broader part of the ecosystem like lldb and the Swift Package Manager which still need more work to be as complete in their support for this different platform.
Getting Started and Getting Involved!
The Getting Started section has been updated with new information about using Swift on Windows! For the early adopters who are getting started and finding issues, please report them to the Swift Bug Tracker.
There are many opportunities for those interested in helping push Swift on Windows forward. One of the things that makes Swift easy to use is libraries: publishing new libraries and packages for Swift on Windows or porting existing ones is another way to get involved and help make working with Swift an ever greater delight.
For the ones interested in working on core tooling, there is plenty of work to be done to improve the debugger and to improve the Windows support in the Swift Package Manager. We invite you to check out the Swift Bug Tracker for the current issues and to send patches to the GitHub repositories. There is also a new section on the Swift forums to discuss the development of Swift on Windows. There the community can discuss issues or you can introduce yourself and let others know what area of the tooling you are focusing on. This is the perfect opportunity to become involved in the project and help it grow into a strong, vibrant, cross-platform ecosystem. We cannot wait to see what exciting things you build with Swift!
Think you can’t program in Swift without a Mac? Here’s how to create a simple Swift program and run it on Windows 10.
Swift is one of the hottest languages around right now, and for good reason. Mac and iOS apps take up a huge portion of the market. Being able to build iOS apps natively is a big deal for folks who don’t want to dip into the murky depths of Objective C.
Since Swift is native to Apple, you need a Mac, right? Wrong. While there is no «out of the box» method to compile Swift on Windows, that doesn’t mean that Windows users cannot learn Swift.
Here’s how to create a simple Swift program and compile and run it in Windows 10.
What Is Swift?
Before beginning, let’s look at what Swift actually is. Swift is a programming language designed by Apple. It takes ideas «from Objective-C, Rust, Haskell, Ruby, Python, C#, CLU, and far too many others to list» according to project originator Chris Lattner.
It’s a relatively young language which was released to the public in 2014, though it is already widely regarded. The TIOBE Index of top programming languages in 2017 placed Swift at number 11, making it one of the fastest growing languages of all time.
In short, if you’re programming for Mac or iOS, Swift is for you! For a more in-depth look at the uses for Swift, take a look at these reasons why Swift is worth learning.
Getting Started With Swift on Windows 10
Firstly, we are going to need an editor to write our code in. You can use any IDE you are comfortable with, though it isn’t strictly necessary to use one and any text editor will also suffice. It mostly comes down to personal preference, though if you need help deciding what to use this guide may help you.
Today we are going to use Notepad++ as it is free, simple, and extensible. Download Notepad++ and open it up. Lets get down to some coding!
A Simple Swift for Windows Program
For our test project today we are going to create a simple program which will run on the Windows command line. Start by opening a new Notepad++ file. We’ll begin by printing a question to the screen, wait for the user to type their response, and then use this response to provide an answer.
print("What is your name?")
This will display when the program runs. Now that we have asked a question, we should provide a way to let the user answer. For this, we use the readline() method and store the answer as a variable called response.
var response = readLine()
If you’re already familiar with other programming languages you may notice a few small differences here. Firstly, we can store the data acquired from readLine as a var instead of having to specify that it is going to be a string. Another change for those of you coming over from JavaScript or C# is the lack of semicolons to denote the end of lines.
Python users might already be more at home here!
Adding an Output
Now that we have this information stored in a variable, we want to use it and display it back to the user. What could be nicer than wishing them a great day?
print("Hello \(response!), I hope you are having a great day!")
Even if you have experience in other languages, you will see some differences here. Rather than using the + operator outside of the quotation marks to display your variable, you use \(variableName) within the quotation marks. Another feature of Swift is the use of Optional Values. These values are hard to understand at first glance, but add greater functionality to the use of variables within Swift.
In this instance, we simply want to display the value as it is, so we add an exclamation mark after the variable name response! to denote that it is not an Optional Value. An optional value is a variable that may or may not get assigned a value. It doesn’t require one. If it isn’t assigned a value, then it will be assigned nil.
A question mark (?) after the value type identifies it as optional, while an exclamation means that it isn’t.
Your code will look something like this:
To save your code, use File > Save As and select Swift file from the Save As Type menu. If your menu is missing the Swift file type, select all files instead, and add the .swift file extension after your chosen filename.
Compiling Swift in Windows 10
Now that we have a program, we need to be able to compile and run it. While there is no built in way to program Swift in Windows 10, there is a work around. Han Sangjin has created a compiler for Swift which is available for download from Github. Download and install the Swift for Windows application using the instructions provided in the link.
Once it is installed, open it up. Click on the Select File button and select your previously made program. Click Compile and wait for the program to compile.
For a program this tiny it should be nearly instant, though it can take time depending on how complex you made your code!
You should receive a «Successfully compiled» message in the dialog box. If not, go back and check through your code to make sure you haven’t made any errors. Once the code compile, click Run to run your program. The program will open in the Windows Command Line, and should look like this:
It is worth noting that you must use the Swift for Windows application to run your code, the EXE file that’s created will not work stand alone, even if the application is open.
Begin Coding Swift on Windows Today
If you decide that Swift is for you, there are a wealth of tools out there to help you. Once you’ve got a basic grasp of the environment, why not try a few beginner projects to bring your knowledge to life?
If you are a Linux user looking to code iOS apps, here’s how to code in Swift with Ubuntu.