Periphery, the unused-code detector for Swift projects, was archived in August 2026 when its author moved on to a commercial, closed-source successor (Periphery Pro, https://periphery.pro, distributed as a prebuilt `periphery-cli` binary via `periphery-pro/tap`).
The MIT-licensed code is still as useful as ever, so we are maintaining a fork:
What the fork is:
- the last open-source release (3.8.0) rebuilt and kept working with current toolchains: 3.8.1 builds unchanged with Xcode 27.1 / Swift 6.4;
- 3.8.2 fixes the non-deterministic DerivedData cache path (schemes were hashed from an unordered Set, so the cache was never reused and grew without bound);
- 3.8.3 fixes three false-positive classes: declarations referenced only inside `if os(...)`/`@available` platform-conditional blocks, the SwiftPM index store location with the Swift 6.4 `swiftbuild` backend, and Xcode 16 file system synchronized groups (target membership and exceptions);
- the 14 unresolved upstream bug reports (toolchain issues and false positives) re-opened as issues, with their origin credited;
- install: `brew install tiny-earth-moon/tap/periphery` (builds from source), or `swift build -c release --product periphery`.
- the fork is unrelated to Periphery Pro: nothing is taken from it, and both install a `periphery` executable, so install one or the other (the formulae conflict on purpose).
What it is not: there is no feature roadmap. The scope is to keep Periphery building and correct on current Xcode/Swift, fix regressions and review pull requests. Bug reports with a minimal project and PRs are welcome. Many thanks to Ian Leitch for years of work on the original.