ABOUT SWIFT
o Features
o [Link] and Open Source
o Platform Support
BLOG
GETTING STARTED
DOWNLOAD
PLATFORM SUPPORT
DOCUMENTATION
COMMUNITY
COMMUNITY OVERVIEW
DIVERSITY
MENTORSHIP
CONTRIBUTING
CODE OF CONDUCT
OPEN SOURCE DEVELOPMENT
SWIFT EVOLUTION
SOURCE CODE
CONTINUOUS INTEGRATION
SOURCE COMPATIBILITY
SECURITY
OPEN SOURCE EFFORTS
SWIFT COMPILER
STANDARD LIBRARY
PACKAGE MANAGER
CORE LIBRARIES
REPL, DEBUGGER & PLAYGROUNDS
SWIFT ON SERVER
[Link] WEBSITE
LANGUAGE WORKGROUP
C++ INTEROPERABILITY
DOCUMENTATION WORKGROUP
About Swift
Swift is a general-purpose programming language built using a modern approach to safety,
performance, and software design patterns.
The goal of the Swift project is to create the best available language for uses ranging from
systems programming, to mobile and desktop apps, scaling up to cloud services. Most
importantly, Swift is designed to make writing and maintaining correct programs easier for
the developer. To achieve this goal, we believe that the most obvious way to write Swift code
must also be:
Safe. The most obvious way to write code should also behave in a safe manner. Undefined
behavior is the enemy of safety, and developer mistakes should be caught before software is
in production. Opting for safety sometimes means Swift will feel strict, but we believe that
clarity saves time in the long run.
Fast. Swift is intended as a replacement for C-based languages (C, C++, and Objective-C).
As such, Swift must be comparable to those languages in performance for most tasks.
Performance must also be predictable and consistent, not just fast in short bursts that require
clean-up later. There are lots of languages with novel features — being fast is rare.
Expressive. Swift benefits from decades of advancement in computer science to offer syntax
that is a joy to use, with modern features developers expect. But Swift is never done. We will
monitor language advancements and embrace what works, continually evolving to make
Swift even better.
Tools are a critical part of the Swift ecosystem. We strive to integrate well within a
developer’s toolset, to build quickly, to present excellent diagnostics, and to enable
interactive development experiences. Tools can make programming so much more powerful,
like Swift-based playgrounds do in Xcode, or a web-based REPL can when working with
Linux server-side code.
Features
Swift includes features that make code easier to read and write, while giving the developer
the control needed in a true systems programming language. Swift supports inferred types to
make code cleaner and less prone to mistakes, and modules eliminate headers and provide
namespaces. Memory is managed automatically, and you don’t even need to type semi-
colons. Swift also borrows from other languages, for instance named parameters brought
forward from Objective-C are expressed in a clean syntax that makes APIs in Swift easy to
read and maintain.
The features of Swift are designed to work together to create a language that is powerful, yet
fun to use. Some additional features of Swift include:
Closures unified with function pointers
Tuples and multiple return values
Generics
Fast and concise iteration over a range or collection
Structs that support methods, extensions, and protocols
Functional programming patterns, e.g., map and filter
Powerful error handling built-in
Advanced control flow with do, guard, defer, and repeat keywords
Safety
Swift was designed from the outset to be safer than C-based languages, and eliminates entire
classes of unsafe code. Variables are always initialized before use, arrays and integers are
checked for overflow, and memory is managed automatically. Syntax is tuned to make it easy
to define your intent — for example, simple three-character keywords define a variable (var)
or constant (let).
Another safety feature is that by default Swift objects can never be nil, and trying to make or
use a nil object results in a compile-time error. This makes writing code much cleaner and
safer, and prevents a common cause of runtime crashes. However, there are cases where nil is
appropriate, and for these situations Swift has an innovative feature known as optionals. An
optional may contain nil, but Swift syntax forces you to safely deal with it using ? to indicate
to the compiler you understand the behavior and will handle it safely.
[Link] and Open Source
On December 3, 2015, the Swift language, supporting libraries, debugger, and package
manager were published under the Apache 2.0 license with a Runtime Library Exception, and
[Link] was created to host the project. The source code is hosted on GitHub where it is
easy for anyone to get the code, build it themselves, and even create pull requests to
contribute code back to the project. Everyone is welcome, even just to file a bug report. There
are excellent Getting Started guides available here on the site as well.
The project is governed by a core team of engineers that drive the strategic direction by
working with the community, and a collection of code owners responsible for the day-to-day
project management. Technical leaders come from the community of contributors and anyone
can earn the right to lead an area of Swift. The Community Overview includes detailed
information on how the Swift community is managed.
Projects
The Swift language is managed as a collection of projects, each with its own repositories. The
current list of projects includes:
The Swift compiler command line tool
The standard library bundled as part of the language
Core libraries that provide higher-level functionality
The LLDB debugger which includes the Swift REPL
The Swift package manager for distributing and building Swift source code
Xcode playground support to enable playgrounds in Xcode.
Platform Support
One of the most exciting aspects of developing Swift in the open is knowing that it is now
free to be ported across a wide range of platforms, devices, and use cases.
Our goal is to provide source compatibility for Swift across all platforms, even though the
actual implementation mechanisms may differ from one platform to the next. The primary
example is that the Apple platforms include the Objective-C runtime, which is required to
access Apple platform frameworks such as UIKit and AppKit. On other platforms, such as
Linux, no Objective-C runtime is present, because it isn’t necessary.
The Swift core libraries project aims to extend the cross-platform capabilities of Swift by
providing portable implementations of fundamental Apple frameworks (such as Foundation)
without dependencies on the Objective-C runtime. Although the core libraries are in an early
stage of development, they will eventually provide improved source compatibility for Swift
code across all platforms.
Apple Platforms
Open-source Swift can be used on the Mac to target all of the Apple platforms: iOS, macOS,
watchOS, and tvOS. Moreover, binary builds of open-source Swift integrate with the Xcode
developer tools, including complete support for the Xcode build system, code completion in
the editor, and integrated debugging, allowing anyone to experiment with the latest Swift
developments in a familiar Cocoa and Cocoa Touch development environment.
Linux
Open-source Swift can be used on Linux to build Swift libraries and applications. The open-
source binary builds provide the Swift compiler and standard library, Swift REPL and
debugger (LLDB), and the core libraries, so one can jump right in to Swift development.
Windows
Open source Swift can be used on Windows to build Swift libraries and applications. The
open source binary builds provide C/C++/Swift toolchains, the standard library, and debugger
(LLDB), as well as the core libraries, so one can jump right in to Swift development.
SourceKit-LSP is bundled into the releases to enable developers to be quickly productive
with the IDE of their choice.
New Platforms
We can’t wait to see the new places we can bring Swift—together. We truly believe that this
language that we love can make software safer, faster, and easier to maintain. We’d love your
help to bring Swift to even more computing platforms.
Copyright © 2023 Apple Inc. All rights reserved.
Swift and the Swift logo are trademarks of Apple Inc.
Privacy Policy Cookies
Color scheme preferenceLightDarkAuto