mrkeyoor.com_
Tue 01 Sept 17:41 UTC
Dev Toolsevaluationupdated 25 Aug 2026

swift review

Swift is a memory-safe systems programming language with modern syntax and direct access to C and Objective-C code. This repository contains the compiler and standard library, while ordinary application developers can install a released toolchain instead of building this source tree.

+30stars / 7d
Verdict

Our run of Swift's cmpcodesize utility installed 36 packages and passed 3 of 3 tests, but that small success should not be mistaken for building the 3.5-million-line compiler. Choose Swift when Apple-platform integration or Swift's language model is the deciding factor. Use a released toolchain for application work, and approach this repository only if you can budget the disk, memory, sibling checkouts, and build time of compiler development.

We ran it

Lab card: what happened when we ran swiftScreenshot of swift (swift.org)
Install✓ · 38s36 packages · 37 MB
Build✓ · 6s
Tests✓ · 4s3 passed · 0 failed of 3 (pytest)
Known vulns0(pip-audit)
Repo32419 files~3,536,940 lines of source · 209.5 MB · 0 CI workflows · tests dir

Answers from our run

Does swift build from source?

Dependencies installed in 38 seconds (36 packages), and the build succeeded in 6 seconds. We cloned commit 1e483e8 into a clean Debian container with 3 CPUs and no project-specific setup.

Do swift's tests pass?

Yes: 3 of 3 passed when we ran the project's own test command (pytest). Some failures need services or credentials a bare container does not have.

Does swift have known vulnerabilities in its dependencies?

pip-audit found none in the dependency tree at the time of our run.

Who should not use swift?

Contributors with a small development machine: the official guide recommends 150 GB free, at least 8 GB of RAM for a toolchain build, and 16 GB for development.

What are the alternatives to swift?

Rust, Go, Kotlin. Our run of Swift's cmpcodesize utility installed 36 packages and passed 3 of 3 tests, but that small success should not be mistaken for building the 3.

Setup2/5Toolchains are easy; compiler development asks for 150 GB
Docs5/5Deep guides cover setup, internals, ABI, testing, and debugging
Community5/5Current development, forums, releases, and a huge work queue
Maturity5/5Released language with stable tooling and documented compatibility

Discussed on

  1. hnNew GitHub Organization for the Swift Project154 points
  2. hnSwift/Java interoperability tools and libraries83 points
  3. hnSwift Developers Community45 points
  4. hnParallel Scripting in Swift16 points
  5. hnFoundation is being rewritten with Swift and will be developed as an open source16 points

Who it’s for

Apple-platform developers who want the language and toolchain designed to work with Xcode and Objective-C frameworks.
Server and systems programmers who value native binaries, static typing, generics, protocols, and memory safety.
Compiler engineers prepared to work across Swift, LLVM, Clang, SwiftPM, and related repositories.
Library authors who need documented ABI, module, interoperability, and library-evolution behavior.

Who it’s NOT for

Contributors with a small development machine: the official guide recommends 150 GB free, at least 8 GB of RAM for a toolchain build, and 16 GB for development.
Windows developers seeking the documented main contributor path: the guide supports macOS and Ubuntu hosts and labels Windows host development experimental.
Teams expecting this single checkout to build the whole toolchain: utils/update-checkout pulls sibling projects such as LLVM and SwiftPM, and matching branches or tags matter.
Beginners who only want to write an app: compiling this repository can take minutes to hours, while prebuilt toolchains avoid the compiler-development setup.
Projects that need painless binary interchange with every ecosystem: the docs go deep on C, Objective-C, and developing C++ interop, but that work has platform and toolchain constraints.

Setup reality

Our measured target was the Python project in utils/cmpcodesize, not a full Swift compiler build. It installed in 38 seconds with 36 packages and 37 MB on disk, built in 6 seconds, and passed all 3 pytest cases in 4 seconds. The dependency audit found 0 known vulnerabilities.

A full compiler checkout needs Git 2.x, Python, a released Swift toolchain, CMake, Ninja, platform development tools, and several sibling repositories fetched by utils/update-checkout. The guide recommends 150 GB of free disk and at least 16 GB of RAM for development.

Supported contributor hosts are macOS and Ubuntu Linux; Windows instructions are experimental. Paths with spaces or non-ASCII characters can break checkout or build steps, branches must match across repositories, and Xcode requirements can change frequently.

Swift 6.3.3 is a language release, not a starter repository

Swift describes itself as a high-performance systems language that is memory-safe by default. It has value types, objects, protocols, closures, generics, modules, and direct access to existing C and Objective-C code. Those traits make the language attractive for native applications and libraries where runtime cost and interface safety both matter. Most developers should begin with the released toolchain and the language documentation. This repository is the machinery under that experience: compiler front end, standard library, optimizer, interoperability layers, tests, and developer utilities.

The distinction matters because cloning swiftlang/swift is not equivalent to installing Swift. A normal user can download a toolchain and run Swift Package Manager. A compiler contributor needs matching copies of LLVM, Clang, SwiftPM, and other sibling projects. The repository's utils/update-checkout script coordinates those revisions, while utils/build-script drives CMake and Ninja. Changing only the Swift branch can leave the related repositories in an unsupported combination, a failure mode the contributor guide calls out directly.

A contributor machine needs 150 GB free

The official setup guide recommends at least 150 GB of available disk. Full source history across the project is about 3.5 GB, while build artifacts can range from 5 GB to 100 GB depending on settings. It suggests at least 8 GB of RAM for a toolchain build and 16 GB for development, with virtual machines sometimes needing more than 32 GB. A clean build may take anywhere from minutes to hours. That is a compiler workstation, not a casual package checkout.

Host support narrows the path further. The main development loop covers macOS and Ubuntu Linux; Windows host development is experimental. Linux builders must install a prebuilt Swift release because parts of the compiler are written in Swift. macOS builders need the currently required Xcode, which may be a beta. The guide warns against spaces and non-ASCII characters in the checkout path, and Apple Silicon users must avoid running x86_64 dependencies through Rosetta. Each warning is specific enough to save a failed afternoon.

What happened when we ran it

Our sandbox did not build the Swift compiler. The measured Python target was utils/cmpcodesize at commit 1e483e8, a small utility for comparing sizes of old and new compiler build products. Its environment installed in 38 seconds, pulling 36 packages and using 37 MB on disk. The package build succeeded in 6 seconds. All 3 pytest cases passed in 4 seconds, and the dependency audit reported 0 known vulnerabilities.

That clean result says cmpcodesize can be packaged and its small unit suite works in our Debian container. It says nothing about whether a full Swift toolchain compiles on 3 CPUs and 8 GB of RAM. The checked-out repository itself contained 32,419 files, about 3,536,940 lines of source, and occupied 209.5 MB without full Git history or sibling projects. Our scanner found a tests directory but 0 GitHub Actions workflow files and no Dockerfile; Swift uses project-specific CI machinery documented elsewhere.

cmpcodesize is useful only after two builds exist

The utility we tested compares Mach-O sections, segments, and function sizes between old and new build products. It can read two explicit files, matched file lists, or old and new Swift build directories. CSV output supports automation, while flags can group functions into compiler-oriented categories. Its default shortcuts point to benchmark binaries and libswiftCore.dylib. In other words, a 37 MB Python environment installs easily, but the useful inputs come from the much larger compiler build process that our run did not perform.

Its implementation also calls Apple's otool and contains macOS-specific paths and symbol categories. That is appropriate for tracking Swift compiler output on Apple platforms, yet it is a narrow utility rather than a general cross-platform binary-size analyzer. The 3 tests cover sorting and empty-input behavior for one helper; they do not exercise parsing a real library or comparing complete toolchain products. Passing them is reassuring at their actual scope and should not be stretched into a claim about compiler correctness.

9,234 open issues and PRs show scale, not neglect

GitHub reported 9,234 open issues and pull requests combined and a latest push on 2026-08-25. The newest activity included concurrency fixes, C++ interoperability, SourceKit work, standard-library proposals, and test changes. Release swift-6.3.3-RELEASE was published on 2026-06-30. A queue that large would be alarming for a small application, but here it spans a programming language, compiler, standard library, runtime, debugger-facing behavior, and several platforms. Judge it alongside the same-day push and release cadence.

The internal documentation is unusually extensive. Separate guides explain the compiler development loop, testing, debugging, the Swift intermediate language, ABI layouts, library evolution, optimization, dependency analysis, Objective-C imports, C++ interop, and driver output. Some index entries openly mark documents as outdated or unfinished, which is more useful than pretending every subsystem has a polished manual. Swift is an easy recommendation for its home ecosystem and a credible choice elsewhere, but contributing to the compiler requires serious hardware and patience.

Alternatives

ProjectWhat it isPick it when
Rust gh↗A memory-safe systems language built around ownership and explicit control.pick this instead when portable systems work and a larger non-Apple package base matter more than Xcode integration.
Go gh↗A garbage-collected compiled language with a small language surface and fast tooling.pick this instead when simple server deployment and quick team onboarding outweigh Swift's richer type system.
Kotlin gh↗A statically typed language with first-class JVM and Android adoption.pick this instead when Android or JVM interoperability is the fixed center of the project.

What people are saying

  1. [velocity-scout] swiftlang/swift
  2. [theverge] NASA gives up on trying to rescue the Swift telescope

Sources

  1. Swift repository README
  2. Swift contributor setup guide
  3. Swift compiler documentation index
  4. Swift 6.3.3 release
  5. cmpcodesize source

More dev tools reviews

workmux · v2rayNG · SecLists · hashcat · eslint · fastfetch · the whole board →