The major changes:
* **Cleans up/unifies logic that was previously duplicated for each build platform and target platform.** (Pull request 291)
Due to the structure of Theos’s multi-platform support, a fix made, for instance, to building for iOS on a Mac might not have been applied to all the other platform combinations (say, building for iOS on Linux, or building for macOS on a Mac). This logic has all been merged into a few central scripts to prevent discrepancies in future.
* **Updates Swift support for Swift 4 and the new libswift packages.** (Pull request 278)
Due to sandbox issues with iOS 11, the libswift package has moved to /usr/lib/libswift. The `${LIBSWIFT}` magic word can be used in a `control` file to expand to the correct Swift package name/version dependency, and `${LIBSWIFT_VERSION}` expands to the version on its own.
* **Works around permission issues on Windows Subsystem for Linux.** (Pull request 258)
We recommend using Windows 10 build 17063 or newer (currently Insider build; stable release rumored to be soonish) which resolves the permission issues. We [still support](https://github.com/theos/theos/wiki/Installation) back to 14393 (Anniversary Update) but will slowly be increasing this minimum requirement to encourage you to upgrade to the latest, which has substantially improved since the initial Anniversary Update release of WSL.
* **Cleans up `Prefix.pch`.**
We are discouraging dependency on Theos’s [prefix header](https://github.com/theos/theos/blob/master/Prefix.pch). Using `ADDITIONAL_CFLAGS += -DTHEOS_LEAN_AND_MEAN` will disable almost all of Prefix.pch. This requires you to import Foundation and/or UIKit yourself, as well as other fixes that were automatically imported by the prefix header. HBLog macros have been moved to `<HBLog.h>`. The imports for AppKit and Cocoa on macOS were removed entirely. Prefix.pch is no longer imported at all for Swift.
The minor-ish changes:
* **Adds a `libgcc_s.1.tbd` file, resolving an “undefined symbols” error when building for ARMv6 with the Xcode 9 toolchain.** (Pull request 291)
* **Fixes the Logos internal generator using `_disused` in one place, causing a build error as this macro comes from substrate.h.**
* **Fixes the Logos internal generator not being able to hook `-dealloc`.**
* **Re-introduces Makedeps support.** (Pull request 291)
This makes Make aware of the dependencies of your source files, such as headers. This allows you to, for instance, write a rule in your Makefile that generates a header just before it’s required.
* **Splits Logos and NIC into their own separate Git repositories.** (Issue 247)
This has no noticeable difference to Theos users, but it allows Logos and NIC to be tracked separately from Theos itself, and also makes it easier for Logos to be integrated with other build systems such as Xcode.
* **Moves the Theos update script to `$THEOS/bin/update-theos`.**
`make update-theos` now calls this script, so both will work.
* **Adds a `COLOR=0` option to disable ANSI escapes (color) in output, including in output from Clang.**
* **Various other cleanup derived from rpetrich’s fork.** (Pull request 291)