Skip to content

lethen 3.9.0

Choose a tag to compare

@github-actions github-actions released this 26 Sep 06:21
· 104 commits to master since this release
878ea7c

lethen 3.9.0

Lethen 3.9.0 requires Swift 6.3 (Xcode 26.4) or later and is the first release with Linux tarballs. Signed, notarized Apple silicon binaries and Homebrew installation continue alongside source builds.

Lethen supports the current Xcode major and the final release of the previous major, the Swift toolchains they ship, the same Swift minors on Linux through the official containers, and the current and previous Bazel LTS. Swift 6.1 and 6.2 are no longer supported; use a source build of 3.8.1 with them.

Changes since 3.8.1

  • Breaking: the minimum supported Swift version is 6.3 (Xcode 26.4). macOS release binaries and the Homebrew formula are Apple silicon only; Intel Macs build from source within the supported Xcode 26 window.
  • Linux tarballs for x86_64 and aarch64, for glibc 2.35 or later and Swift 6.3 or newer. The tarball's bin/lethen loads the indexing library of the active swiftc, including swiftly installs.
  • The update check no longer crashes the process on Linux with Swift 6.4.
  • Xcode scans of two or more schemes reuse one DerivedData directory, so builds are incremental again and orphaned directories no longer accumulate. Caches left under the old names are not migrated; lethen clear-cache removes them.
  • The csv format quotes fields that contain commas, quotes, or line breaks, so every row keeps eight columns. The json, codeclimate, and gitlab-codequality formats write keys in sorted order, so identical scans produce byte-identical output.
  • The mise build task produces only a stripped arm64 binary, and the benchmark runs the executable the build task returns.

The full list is in CHANGELOG.md.

Verification and limits

The release commit must pass the Required checks gate, which includes the Swift 6.4 / Xcode 27 baseline (.github/scripts/verify-swift-6.4.sh: the full suite, clean, warm, and native fixture scan comparisons, and a strict self-scan), the macOS 6.3 / Xcode 26.4 job, Linux 6.3 and 6.4, Bazel 9.x on macOS and Linux, and the Linux release tarballs built with Swift 6.3 and smoke-tested with the Swift 6.3 and 6.4 images and a swiftly toolchain on x86_64 and aarch64. The GitHub release records the final commit and its CI run.

The verified combinations separate toolchain, project type, host, and evidence. Intel source builds are not tested in CI. Running a Swift 6.4-built binary or the release binary on macOS 15 is unverified; release binaries are built with Xcode 26.4. A Swift release that moves to a newer LLVM needs a new Lethen release for the Linux tarballs.

Platforms and installation

Platforms: macOS release binaries and Homebrew are Apple silicon only (macOS 15 or later). Intel Macs must build from source with supported Xcode 26.x; Xcode 27 cannot link lethen for Intel. See the platform policy for the support window. Linux x86_64 and aarch64 can use the release tarballs or build from source.

Install with brew install albovsky/tap/lethen, or download the arm64 zip and checksums. Xcode or the Command Line Tools must be installed. On Linux, download lethen-3.9.0-linux-x86_64.tar.gz or lethen-3.9.0-linux-aarch64.tar.gz. The installation guide includes checksum verification and zip installation commands; the README shows how to install a Linux tarball.

Source installation

Select a full Xcode installation on macOS, for example sudo xcode-select -s /Applications/Xcode.app/Contents/Developer, then:

git clone --branch 3.9.0 --depth 1 https://github.com/albovsky/lethen.git
cd lethen
swift build -c release --product lethen
lethen_bin_dir="$(swift build -c release --show-bin-path)"
"$lethen_bin_dir/lethen" version
mkdir -p "$HOME/.local/bin"
install -m 755 "$lethen_bin_dir/lethen" "$HOME/.local/bin/lethen"
export PATH="$HOME/.local/bin:$PATH"
lethen scan --project-root /path/to/your/project --disable-update-check

Keep the PATH export in your shell profile. Stable builds are offered stable releases by the optional update checker.