Skip to content
This repository has been archived by the owner. It is now read-only.
Cross-Platform, Protocol-Oriented Programming base library to complement the Swift Standard Library. (Pure Swift, Supports Linux)
Swift Objective-C
Branch: develop
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
Sources/SwiftFoundation Updated for Swift 3.1 Apr 6, 2017
Tests Updated for Swift 3.1 Apr 6, 2017
Xcode Restored HTTP Client and URL Dec 19, 2016
.gitignore ignore .DS_Store Sep 16, 2016
Cartfile switched JSON engine to JSONC Jan 11, 2016
Cartfile.resolved Updated for Xcode 8 beta 2 Jul 15, 2016
LICENSE Initial commit Jun 22, 2015
Package.pins Updated for Swift 3.1 Apr 6, 2017
Package.swift Moved test source files to "Tests" folder Jul 31, 2016


Swift Platforms Release License Build Status Join the chat at

SPM compatible Carthage compatible

Cross-Platform, Protocol-Oriented Programming base library to complement the Swift Standard Library.


  • Provide a cross-platform interface that mimics Apple's Foundation framework.
  • Provide a POSIX-based implementation for maximum portability.
  • Rewrite Foundation with Protocol-Oriented Programming principals.
  • Long-term Pure Swift replacement for the Cocoa frameworks.

Problems with Apple's Foundation

  • Objective-C - Apple's Foundation is an old API designed for Objective-C. While it works great (on Apple's platforms) and has a nice API for Objective-C programming, when imported into Swift, you can see the shortcomings of its 20+ year old API.
  • Unimplemented - The open source version of Apple's Foundation is severly lacking implementation. Most methods are marked with NSUnimplemented(). Only a small subset of Foundation based on CoreFoundation is implemented (e.g. NSArray, NSString, NSDictionary). Basic Functionality like JSON, Base64, and even HTTP requests are not implemented.
  • Portability - Since Apple's Foundation is backed by CoreFoundation, the only supported platforms are currently Linux, Darwin, and (potentially) Windows. Supporting other platforms (e.g. ARM Linux, BSD, SunOS) would require changes to the CoreFoundation codebase, written in C, which is not good for a long term Swift base library. We want all of our code to be understood by any Swift programmer.
  • Protocol Oriented Programming - Perhaps the biggest reason to use this library, is to break free from the old Object-Oriented Programming paradigms. Swift structures and protocols free you from pointers and memory management, along with bugs related to multithreaded environments. Creating structs for basic types like Date and UUID allows you to use let and var correctly. Structs also bring huge performance improvements since the compiler can perform more optimizations and doesn't have to create all the metadata needed for the Swift class runtime.

Targeted Platforms

  • LLVM Compiler
    • Darwin (OS X, iOS, WatchOS)
    • Linux

Compiling on Ubuntu

sudo apt-get install uuid-dev libjson-c-dev
swift build


To see what parts of Foundation are implemented, just look at the unit tests. Completed functionality will be fully unit tested. Note that there is some functionality that is written as a protocol only, that will not be included on this list.

  • Base64
  • Data
  • Date
  • FileManager
  • JSON
  • Null
  • Order (equivalent to NSComparisonResult)
  • RegularExpression (POSIX, not ICU)
  • SortDescriptor
  • Thread
  • URL
  • UUID


This program is free software; you can redistribute it and/or modify it under the terms of the MIT License.

You can’t perform that action at this time.