Установка и настройка Swift на Linux: полное руководство для разработчиков
Для кого эта статья:
- Разработчики, интересующиеся кросс-платформенной разработкой на Swift
- Начинающие и опытные программисты, желающие установить и использовать Swift в Linux
Специалисты по DevOps, стремящиеся оптимизировать процессы разработки и развертывания приложений на Swift
Swift больше не привязан к экосистеме Apple — Linux открывает новые горизонты для разработчиков, жаждущих кросс-платформенной свободы. Установка этого мощного языка на Linux может показаться сложной задачей, особенно для тех, кто привык к комфорту macOS. Я прошел этот путь лично и готов поделиться четкой, проверенной инструкцией, которая избавит вас от часов блуждания по форумам и документации. Следуя этому руководству, вы настроите полноценную среду для Swift-разработки на Linux быстрее, чем успеете выпить чашку кофе ☕.
Осваивая Swift на Linux, вы расширяете свои навыки в кросс-платформенной разработке — важнейшем тренде в IT. Но знание одного языка не сделает вас универсальным специалистом. Обучение веб-разработке от Skypro даёт фундаментальную базу по всему спектру современных технологий: от фронтенда до бэкенда. Вы изучите не только языки программирования, но и получите практические навыки работы в команде на реальных проектах — то, чего не хватает самоучкам.
Почему Swift на Linux: преимущества и возможности
Swift на Linux — это не просто эксперимент, а полноценная стратегия для разработчиков, стремящихся выйти за пределы экосистемы Apple. После того как Swift стал проектом с открытым исходным кодом в 2015 году, его возможности значительно расширились. Работа с этим языком в Linux-окружении открывает ряд существенных преимуществ, которые невозможно игнорировать 🚀.
Прежде всего, Swift на Linux демонстрирует впечатляющую производительность. Тесты показывают, что в некоторых задачах он превосходит даже C++ и Go. Это делает его идеальным выбором для серверных приложений, где каждая миллисекунда на счету. Язык сохраняет все свои преимущества: сильную типизацию, современный синтаксис и безопасность работы с памятью — независимо от платформы.
Алексей Воронов, DevOps-инженер
Мой переход на Swift в Linux-окружении начался с необходимости унифицировать стек разработки. Команда писала iOS-приложение на Swift, а бэкенд обслуживался на Python. Разрыв в скорости работы становился всё очевиднее с ростом нагрузки.
Мы решили перенести бэкенд на Swift, используя фреймворк Vapor. Первые дни были непростыми — настройка среды на Ubuntu требовала терпения. Однако уже через неделю мы увидели результаты: время отклика сократилось на 40%, а потребление ресурсов снизилось почти вдвое.
Самое ценное приобретение — возможность совместного использования кода между iOS-клиентом и сервером. Модели данных, валидация, даже некоторые бизнес-логики теперь существуют в виде общих Swift-пакетов. Это радикально сократило дублирование кода и количество ошибок на стыке клиент-сервер.
Кросс-платформенная разработка становится реальностью с Swift на Linux. Вы можете писать код один раз и запускать его как на macOS и iOS, так и на серверах под управлением различных дистрибутивов Linux. Это особенно ценно для команд, разрабатывающих полный стек приложений, где единый язык программирования существенно упрощает коммуникацию и поддержку кода.
Серверная разработка — еще одна область, где Swift на Linux раскрывает свой потенциал. Фреймворки вроде Vapor, Kitura и Perfect позволяют создавать высокопроизводительные API и микросервисы. Swift Package Manager обеспечивает удобное управление зависимостями, делая процесс разработки более гладким.
| Характеристика | Swift на macOS | Swift на Linux |
|---|---|---|
| Производительность | Высокая | Сопоставимая или выше |
| Доступность GUI-инструментов | Xcode и полная экосистема | VSCode, Sublime, vim плагины |
| Серверная разработка | Возможна, но rarely применяется | Активно развивается |
| Стоимость инфраструктуры | Высокая (оборудование Apple) | Низкая (любое совместимое оборудование) |
| Интеграция с DevOps | Ограниченная | Полная, нативная |
Важно отметить экономическую выгоду: разработка на Swift в Linux-окружении не требует дорогостоящего оборудования Apple. Это значительно снижает барьер входа для новых разработчиков и уменьшает затраты на инфраструктуру для компаний. А интеграция с контейнерными технологиями вроде Docker делает процесс развертывания Swift-приложений максимально гибким и масштабируемым.

Подготовка Linux-системы для установки Swift
Перед погружением в мир Swift на Linux необходимо правильно подготовить систему. Этот процесс напоминает закладку фундамента — чем тщательнее вы всё сделаете на этом этапе, тем меньше проблем возникнет в дальнейшем. Начнем с проверки совместимости вашего дистрибутива 🔍.
Swift официально поддерживается на нескольких дистрибуциях Linux, включая Ubuntu, CentOS и Amazon Linux 2. Однако сообщество энтузиастов создало неофициальные сборки практически для всех популярных дистрибутивов. Рекомендую использовать Ubuntu 20.04 LTS или новее, поскольку для этой системы доступна наиболее стабильная и актуальная версия Swift.
Прежде всего, обновите систему до последней версии:
- Для Ubuntu/Debian: sudo apt update && sudo apt upgrade -y
- Для CentOS/RHEL: sudo yum update -y
- Для Fedora: sudo dnf update -y
Далее необходимо установить зависимости, которые требуются для работы Swift. Для Ubuntu 20.04 список выглядит следующим образом:
- sudo apt install clang libicu-dev libatomic1 build-essential pkg-config
Эти пакеты предоставляют компилятор LLVM, библиотеки для интернационализации, атомарные операции и основные инструменты для сборки, необходимые Swift.
Для CentOS и Fedora список зависимостей немного отличается:
- CentOS: sudo yum install clang libicu-devel gcc-c++ tar
- Fedora: sudo dnf install clang libicu-devel gcc-c++ glibc-devel
Проверьте, что ваша система соответствует минимальным требованиям для Swift:
- Современный процессор x86_64 (поддержка ARM64 также доступна)
- Минимум 2 ГБ оперативной памяти (рекомендуется 4 ГБ и более)
- Не менее 1 ГБ свободного места на диске
| Дистрибутив | Минимальная версия | Рекомендуемая версия | Статус поддержки |
|---|---|---|---|
| Ubuntu | 18.04 | 22.04 | Официальная |
| Debian | 10 | 11 | Сообщество |
| CentOS | 8 | Stream 9 | Официальная |
| Fedora | 34 | 36 | Сообщество |
| Amazon Linux | 2 | 2 | Официальная |
Для безопасной и изолированной работы рекомендую использовать docker-контейнер. Это позволит избежать конфликтов с другими инструментами разработки и упростит процесс обновления Swift в будущем:
- sudo apt install docker.io (для Ubuntu)
- sudo systemctl enable --now docker (активация сервиса)
Михаил Савченко, Backend-разработчик
Когда я впервые пытался установить Swift на Arch Linux, это превратилось в настоящий квест. Официальных пакетов не было, а инструкции сообщества оказались устаревшими.
После нескольких неудачных попыток прямой установки, я решил использовать другой подход — изолированную среду через docker. Создал простой Dockerfile:
FROM swift:latest WORKDIR /app VOLUME /app CMD ["swift", "repl"]Запустив этот контейнер с привязкой к локальной директории, я получил полностью функциональную среду Swift. Самое удивительное — это сработало на всех машинах, которые я использовал: старый ноутбук с Ubuntu, рабочая станция с Arch и даже Raspberry Pi с Raspbian.
Теперь я поддерживаю коллекцию Docker-образов для различных версий Swift и дистрибутивов. Это значительно упростило мой рабочий процесс и сделало разработку действительно кросс-платформенной.
Если вы планируете интенсивную разработку, настройте системные лимиты для улучшения производительности. Добавьте следующие строки в файл /etc/security/limits.conf:
- * soft nofile 16384
- * hard nofile 65536
Это увеличит максимальное количество открытых файловых дескрипторов, что критично для компиляции больших проектов на Swift.
Наконец, рекомендую настроить swap-файл, особенно если у вас ограничено количество оперативной памяти:
- sudo fallocate -l 4G /swapfile
- sudo chmod 600 /swapfile
- sudo mkswap /swapfile
- sudo swapon /swapfile
Для постоянного монтирования добавьте строку в /etc/fstab:
- /swapfile swap swap defaults 0 0
Теперь ваша Linux-система полностью готова к установке Swift 🚀.
Установка Swift на различных дистрибутивах Linux
Процесс установки Swift варьируется в зависимости от дистрибутива Linux, но общая логика остается неизменной. Рассмотрим наиболее распространенные сценарии, начиная с официально поддерживаемых систем 🛠️.
Установка на Ubuntu
Ubuntu предлагает наиболее прямой путь для установки Swift, поскольку поддерживается официально. Начнем с загрузки последней версии Swift с официального сайта:
- Перейдите на swift.org/download и выберите последнюю стабильную версию для вашей версии Ubuntu
- Или используйте командную строку: wget https://download.swift.org/swift-5.7-release/ubuntu2204/swift-5.7-RELEASE/swift-5.7-RELEASE-ubuntu22.04.tar.gz (замените URL на актуальный для вашей версии)
После загрузки выполните следующие команды:
- tar xzf swift-5.7-RELEASE-ubuntu22.04.tar.gz (распаковка архива)
- sudo mv swift-5.7-RELEASE-ubuntu22.04 /usr/share/swift (перемещение в системную директорию)
- echo 'export PATH=/usr/share/swift/usr/bin:$PATH' >> ~/.bashrc (добавление Swift в PATH)
- source ~/.bashrc (применение изменений)
Проверьте установку, выполнив команду:
- swift --version
Вы должны увидеть информацию о версии Swift, что подтверждает успешную установку.
Установка на CentOS/RHEL
Для CentOS или RHEL процесс аналогичен, но требует некоторых специфических зависимостей:
- sudo yum install libedit-devel libxml2-devel libsqlite3x-devel
- Загрузите соответствующий пакет: wget https://download.swift.org/swift-5.7-release/centos8/swift-5.7-RELEASE/swift-5.7-RELEASE-centos8.tar.gz
- Распакуйте и установите как в примере для Ubuntu
Установка через Snapcraft
Для многих дистрибутивов, включая Ubuntu, доступен альтернативный метод установки через Snap:
- sudo snap install swift --classic
Это самый простой способ, хотя производительность может быть немного ниже по сравнению с нативной установкой.
Docker-контейнеры
Для универсальной и изолированной установки рекомендую использовать официальный Docker-образ:
- docker pull swift (загрузка последней версии)
- docker run -it --name swift-container swift (запуск контейнера с интерактивной оболочкой)
Для разработки удобнее привязать локальную директорию:
- docker run -it -v $(pwd):/app -w /app swift
Установка из исходников
Для энтузиастов или для дистрибутивов без официальной поддержки доступна компиляция Swift из исходного кода. Это сложный процесс, требующий времени и ресурсов:
- Клонируйте репозиторий: git clone https://github.com/apple/swift.git
- Инициализируйте подмодули: ./swift/utils/update-checkout --clone
- Скомпилируйте: ./swift/utils/build-script
Сравнение методов установки Swift на Linux:
| Метод установки | Преимущества | Недостатки | Рекомендуется для |
|---|---|---|---|
| Официальный tarball | Полный контроль, максимальная производительность | Ручное обновление | Продакшн-среды |
| Snapcraft | Простота, автоматические обновления | Некоторые ограничения sandboxing | Быстрое тестирование |
| Docker | Изоляция, воспроизводимость | Накладные расходы контейнеризации | CI/CD, командная разработка |
| Из исходников | Максимальная кастомизация | Сложность, время компиляции | Разработка самого Swift |
После успешной установки рекомендую настроить периодическое обновление Swift, особенно если вы используете официальный tarball. Создайте простой скрипт обновления:
- Создайте файл update-swift.sh
- Добавьте в него логику загрузки последней версии и обновления
- Настройте выполнение через crontab для автоматических проверок
Независимо от выбранного метода установки, убедитесь, что у вас есть доступ к инструментам командной строки Swift: swift, swiftc и swift package. Это подтвердит корректность установки и готовность к следующему шагу — настройке среды разработки.
Настройка среды разработки для Swift на Linux
После успешной установки Swift следующим логическим шагом становится создание удобной среды разработки. В отличие от экосистемы Apple, где Xcode предоставляет всё необходимое, в Linux нам придется собрать инструментарий самостоятельно. Но не волнуйтесь — я проведу вас через этот процесс шаг за шагом 🧰.
Выбор редактора кода
Самым популярным редактором для Swift на Linux заслуженно является Visual Studio Code. Он предлагает отличную поддержку Swift через расширения:
- Swift для Visual Studio Code — базовая поддержка синтаксиса и форматирования
- SourceKit-LSP — расширенная поддержка языка, включая автодополнение и навигацию по коду
- Swift Lint — интеграция с инструментом для проверки стиля кода
Установка VS Code на Ubuntu проста:
- sudo apt install software-properties-common apt-transport-https
- wget -q https://packages.microsoft.com/keys/microsoft.asc -O- | sudo apt-key add -
- sudo add-apt-repository "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main"
- sudo apt update && sudo apt install code
После установки VS Code настройте расширение SourceKit-LSP для полноценной поддержки Swift:
- Установите расширение Swift через магазин расширений VS Code
- Добавьте в settings.json: "sourcekit-lsp.serverPath": "/usr/share/swift/usr/bin/sourcekit-lsp"
Другие популярные варианты редакторов включают:
- Sublime Text с пакетом Swift
- Atom с языковым пакетом Swift
- Vim/Neovim с плагинами для Swift
Настройка Swift Package Manager
Swift Package Manager (SPM) — это встроенный инструмент для управления зависимостями и сборки проектов. Он автоматически устанавливается вместе с Swift и не требует дополнительной настройки. Однако стоит освоить базовые команды:
- swift package init — инициализация нового пакета
- swift build — сборка проекта
- swift test — запуск тестов
- swift run — компиляция и запуск исполняемого файла
- swift package update — обновление зависимостей
Для интеграции SPM с VS Code существует расширение Swift Package Manager, которое добавляет поддержку Package.swift файлов и удобные команды.
Установка и настройка SourceKit-LSP
SourceKit-LSP — это Language Server Protocol реализация для Swift, обеспечивающая интеллектуальные возможности редактирования кода. Обычно он устанавливается вместе с Swift, но иногда требует дополнительной настройки:
- sudo ln -s /usr/share/swift/usr/bin/sourcekit-lsp /usr/local/bin/ (создание символической ссылки для удобства)
Проверьте работу SourceKit-LSP командой:
- sourcekit-lsp --help
Инструменты отладки
Для отладки Swift-приложений на Linux используется LLDB. Он обычно устанавливается вместе со Swift, но может потребоваться отдельная установка:
- sudo apt install lldb
Интеграция LLDB с VS Code осуществляется через расширение CodeLLDB. Добавьте следующую конфигурацию в launch.json для отладки Swift-приложения:
{
"type": "lldb",
"request": "launch",
"name": "Debug",
"program": "${workspaceFolder}/.build/debug/YourAppName",
"args": [],
"cwd": "${workspaceFolder}"
}
Дополнительные инструменты
Для создания профессиональных Swift-проектов на Linux пригодятся следующие инструменты:
- SwiftLint:
brew install swiftlint(требует установки Homebrew на Linux) - SwiftFormat:
brew install swiftformat - Jazzy:
gem install jazzy(для генерации документации)
Сравнение сред разработки для Swift на Linux:
| Редактор/IDE | Интеграция Swift | Отладка | Тестирование | Подходит для |
|---|---|---|---|---|
| VS Code | Отличная (с SourceKit-LSP) | Хорошая (с CodeLLDB) | Встроенная поддержка | Большинство проектов |
| CLion | Хорошая (с плагином) | Отличная | Встроенная поддержка | Крупные проекты |
| Vim/Neovim | Средняя | Через терминал | Через терминал | Опытные разработчики |
| Eclipse | Базовая | Ограниченная | Через плагины | Существующие Java-проекты |
Наконец, настройте интеграцию с системой контроля версий. Git интегрирован практически со всеми редакторами, но стоит настроить Git-hooks для автоматического форматирования и линтинга Swift-кода перед коммитом:
- Создайте файл .git/hooks/pre-commit
- Добавьте вызов SwiftLint и SwiftFormat
- Сделайте файл исполняемым: chmod +x .git/hooks/pre-commit
Правильно настроенная среда разработки существенно повысит вашу продуктивность при работе со Swift на Linux. Уделите этому время сейчас, и оно окупится многократно в процессе работы над проектами 🚀.
Запуск первого проекта на Swift в Linux-окружении
Теперь, когда Swift установлен и среда разработки настроена, пришло время запустить первый проект и убедиться, что всё работает корректно. Мы создадим простое приложение, демонстрирующее основные возможности Swift в Linux-окружении 🚀.
Начнем с создания нового проекта с помощью Swift Package Manager:
- mkdir SwiftLinuxDemo (создание директории проекта)
- cd SwiftLinuxDemo (переход в директорию)
- swift package init --type executable (инициализация исполняемого проекта)
Эта команда создаст базовую структуру проекта:
- Sources/ — директория с исходным кодом
- Tests/ — директория для тестов
- Package.swift — манифест проекта, описывающий зависимости и настройки сборки
- .gitignore — список файлов, игнорируемых системой контроля версий
Открываем файл Sources/SwiftLinuxDemo/main.swift в выбранном редакторе и заменяем его содержимое на следующий код:
import Foundation
// Демонстрация работы с файловой системой
func fileSystemDemo() {
print("📂 Демонстрация работы с файловой системой:")
let fileManager = FileManager.default
let currentDirectory = fileManager.currentDirectoryPath
print("Текущая директория: \(currentDirectory)")
do {
let files = try fileManager.contentsOfDirectory(atPath: currentDirectory)
print("Содержимое директории:")
for file in files {
print("- \(file)")
}
} catch {
print("Ошибка чтения директории: \(error)")
}
print()
}
// Демонстрация многопоточности
func concurrencyDemo() {
print("🧵 Демонстрация многопоточности:")
let group = DispatchGroup()
let queue = DispatchQueue(label: "com.example.concurrent", attributes: .concurrent)
for i in 1...5 {
group.enter()
queue.async {
print("Задача \(i) запущена в потоке: \(Thread.current)")
sleep(UInt32.random(in: 1...3))
print("Задача \(i) завершена")
group.leave()
}
}
group.wait()
print()
}
// Демонстрация работы с сетью
func networkDemo() {
print("🌐 Демонстрация работы с сетью:")
let semaphore = DispatchSemaphore(value: 0)
let url = URL(string: "https://api.github.com/repos/apple/swift")!
let task = URLSession.shared.dataTask(with: url) { data, response, error in
if let error = error {
print("Ошибка запроса: \(error)")
} else if let data = data {
if let json = try? JSONSerialization.jsonObject(with: data) as? [String: Any],
let name = json["name"] as? String,
let stars = json["stargazers_count"] as? Int {
print("Репозиторий: \(name)")
print("Количество звезд: \(stars)")
}
}
semaphore.signal()
}
task.resume()
semaphore.wait()
print()
}
// Основная функция
func main() {
print("👋 Привет, Swift на Linux!\n")
fileSystemDemo()
concurrencyDemo()
networkDemo()
print("✅ Демонстрация завершена успешно!")
}
main()
Теперь соберем и запустим наш проект:
- swift build (сборка проекта)
- swift run (запуск приложения)
Вы должны увидеть результаты выполнения трех демонстрационных функций, показывающих работу с файловой системой, многопоточностью и сетью в Swift на Linux.
Добавление зависимостей
Расширим наш проект, добавив внешнюю зависимость. Отредактируем файл Package.swift:
// swift-tools-version:5.5
import PackageDescription
let package = Package(
name: "SwiftLinuxDemo",
dependencies: [
.package(url: "https://github.com/apple/swift-argument-parser", from: "1.0.0"),
],
targets: [
.executableTarget(
name: "SwiftLinuxDemo",
dependencies: [
.product(name: "ArgumentParser", package: "swift-argument-parser"),
]),
.testTarget(
name: "SwiftLinuxDemoTests",
dependencies: ["SwiftLinuxDemo"]),
]
)
Обновим main.swift для использования ArgumentParser:
import Foundation
import ArgumentParser
struct SwiftLinuxDemo: ParsableCommand {
@Flag(name: .shortAndLong, help: "Запустить демонстрацию файловой системы")
var filesystem = false
@Flag(name: .shortAndLong, help: "Запустить демонстрацию многопоточности")
var concurrency = false
@Flag(name: .shortAndLong, help: "Запустить демонстрацию сетевых функций")
var network = false
@Flag(name: .shortAndLong, help: "Запустить все демонстрации")
var all = false
func run() throws {
print("👋 Привет, Swift на Linux!\n")
if filesystem || all {
fileSystemDemo()
}
if concurrency || all {
concurrencyDemo()
}
if network || all {
networkDemo()
}
if !filesystem && !concurrency && !network && !all {
print("Укажите флаги демонстраций. Используйте --help для справки.")
}
if filesystem || concurrency || network || all {
print("✅ Демонстрация завершена успешно!")
}
}
// ... оставляем те же функции fileSystemDemo(), concurrencyDemo() и networkDemo()
}
SwiftLinuxDemo.main()
Обновите зависимости и соберите проект заново:
- swift package resolve (загрузка зависимостей)
- swift build (пересборка проекта)
Теперь вы можете запустить приложение с различными флагами:
- swift run SwiftLinuxDemo --help (вывод справки)
- swift run SwiftLinuxDemo --all (запуск всех демонстраций)
- swift run SwiftLinuxDemo --filesystem --network (выборочный запуск демонстраций)
Создание и запуск тестов
Добавим тесты к нашему приложению. Откройте файл Tests/SwiftLinuxDemoTests/SwiftLinuxDemoTests.swift и замените его содержимое:
import XCTest
import class Foundation.Bundle
final class SwiftLinuxDemoTests: XCTestCase {
func testApplicationRunsWithHelp() throws {
let binary = productsDirectory.appendingPathComponent("SwiftLinuxDemo")
let process = Process()
process.executableURL = binary
process.arguments = ["--help"]
let pipe = Pipe()
process.standardOutput = pipe
try process.run()
process.waitUntilExit()
let data = pipe.fileHandleForReading.readDataToEndOfFile()
let output = String(data: data, encoding: .utf8)
XCTAssertEqual(process.terminationStatus, 0)
XCTAssertTrue(output?.contains("USAGE") ?? false)
}
// Вспомогательное свойство для получения пути к скомпилированному продукту
private var productsDirectory: URL {
#if os(macOS)
for bundle in Bundle.allBundles where bundle.bundlePath.hasSuffix(".xctest") {
return bundle.bundleURL.deletingLastPathComponent()
}
fatalError("couldn't find the products directory")
#else
return Bundle.main.bundleURL.deletingLastPathComponent()
#endif
}
}
Запустите тесты командой:
- swift test
Вы должны увидеть сообщение об успешном прохождении теста.
Упаковка приложения
Для создания готового к распространению бинарного файла соберите проект в режиме релиза:
- swift build -c release
Скомпилированное приложение будет доступно по пути .build/release/SwiftLinuxDemo. Его можно скопировать на любую совместимую Linux-систему с установленными необходимыми библиотеками.
Для более сложной упаковки можно использовать Docker:
FROM swift:5.7 as builder
WORKDIR /app
COPY . .
RUN swift build -c release
FROM ubuntu:22.04
RUN apt-get update && apt-get install -y libcurl4 libxml2
WORKDIR /app
COPY --from=builder /app/.build/release/SwiftLinuxDemo .
CMD ["./SwiftLinuxDemo", "--all"]
Создайте образ и запустите контейнер:
- docker build -t swift-linux-demo .
- docker run swift-linux-demo
Поздравляю! Вы успешно создали, протестировали и упаковали своё первое приложение на Swift в Linux-окружении. Этот базовый проект демонстрирует ключевые возможности Swift, включая работу с файловой системой, многопоточность и сетевые функции, а также интеграцию с экосистемой Swift Package Manager 🎉.
Swift на Linux — это не просто технический эксперимент, а полноценная стратегия разработки, открывающая новые горизонты для всего сообщества. Следуя этому руководству, вы получили все необходимые инструменты для создания высокопроизводительных приложений в Linux-среде — от установки компилятора до настройки современной среды разработки. Теперь у вас есть выбор: остаться в комфортной экосистеме Apple или вырваться за её пределы, используя Swift там, где раньше доминировали другие языки. Будущее Swift как универсального языка программирования зависит от таких разработчиков, как вы, готовых исследовать новые территории и создавать кросс-платформенные решения.
Читайте также
- Swift на Windows: возможности разработки, ограничения и решения
- 10 практических проектов Swift для разработки приложений macOS
- Установка и настройка Swift на Linux: полное руководство для разработчиков
- Как установить Swift на Windows: 5 рабочих методов без Mac
- Swift-разработка вне macOS: миф или реальность, полный обзор


