Skip to content

Latest commit

 

History

History
145 lines (87 loc) · 7.59 KB

File metadata and controls

145 lines (87 loc) · 7.59 KB

Changelog

All notable changes to this project are documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Fixed

  • Maintainer tooling: the simulator test jobs retry once when xcodebuild aborts with exit code 134, which the simulator does during teardown after every test has already run. Any other non-zero status still fails the job immediately.

4.0.3 - 2026-08-22

Added

  • Maintainer tooling: CLAUDE.md describes how the two simulator CI flakes present and how to tell them apart, and gains a Swift Package Index section covering what each .spi.yml key controls and why changes to the file take up to a day to show on the package page. The lint job gains the timeout-minutes every other job already had.

Removed

  • The hardcoded "Language: Swift 5.9" README badge. It duplicated the Swift Package Index Swift version badge, which reports the versions the package actually builds against instead of a number kept up to date by hand.

Fixed

  • The author line on the Swift Package Index page reads as a sentence again. SPI renders metadata.authors from .spi.yml verbatim, without the "Written by" prefix and full stop it adds to the line it derives from the commit history, so the value now carries them itself.

4.0.2 - 2026-08-21

Added

  • Swift Package Index listing, with an .spi.yml that has SPI build and host the DocC documentation alongside the GitHub Pages site and sets the author line shown on the package page. The README gains the SPI Swift version and platform compatibility badges.

Removed

  • The dead "Public Suffix List" entry in the ./run.sh menu, left over from TLDExtractSwift's copy of the script; it called an update-psl.py that does not exist in this repository.

Fixed

  • Maintainer tooling: the set_version / bump_version fastlane lanes accept version: / type: arguments and fail loudly without a TTY, instead of reporting success while leaving the version unchanged. Version strings are now validated against an anchored pattern, so malformed input such as 1a2b3 is rejected rather than written to the project.

4.0.1 - 2026-08-18

Removed

  • CocoaPods publishing: 3.0.0 is the last version available as the Punycode pod. 4.0.0 and later are distributed via Swift Package Manager (and Carthage on a best-effort basis). The podspec, the pod lint CI job, and the trunk push in the release workflow are removed.
  • Leftover linter configs (.swiftlint.yml, .hound.yml) and .swift-version; linting is enforced by swift-format via CI and fastlane.
  • The swift-format script build phase in the Xcode project: it rewrote sources on every build and is incompatible with Xcode's user script sandboxing.

Changed

  • Codecov project status now allows a 1% threshold, so coverage noise no longer fails CI.

Fixed

  • The framework target now sets APPLICATION_EXTENSION_API_ONLY, so linking the Xcode-built framework (e.g. via Carthage) from an app extension no longer emits a "not safe for use in application extensions" warning (#2). Not applicable to SPM consumers.

4.0.0 - 2026-08-18

Added

  • idnaEncodedURL / idnaDecodedURL on String and Substring: URL-aware variants that transform only the host of a URL-shaped string ([scheme://][userinfo@]host[:port][/path?query#fragment]), leaving every other component unchanged. Use these instead of applying idnaEncoded to a full URL.
  • Linux support, verified by CI (swift build / swift test on the official Swift container).
  • GitHub Releases are now created automatically when a version tag is pushed.
  • CI Success aggregate check for branch protection.
  • Community files: CHANGELOG.md, CONTRIBUTING.md, SECURITY.md, issue and PR templates.

Changed

  • Breaking: Package.swift requires swift-tools 5.9 (Xcode 15 or later for SPM consumers) and declares explicit platforms: macOS 10.13, iOS 12, tvOS 12, watchOS 4, visionOS 1.
  • Product bundle identifiers renamed from com.gumob.* to dev.futamura.*, completing the account rename.
  • CI runs on pushes and pull requests to main and develop, on current macOS runner images, resolving simulator destinations at runtime.
  • API documentation migrated from jazzy to DocC, built and deployed to GitHub Pages by CI; the generated site is no longer tracked in the repository. New URL: https://futamura.github.io/PunycodeSwift/documentation/punycode/.
  • Releasing is now a separate tag-triggered workflow that verifies the tag against the project version before publishing. Version tags are immutable.
  • Development tooling: Ruby 3.4 / Bundler 2.7, gems updated to clear all outstanding Dependabot alerts.

Fixed

  • punycodeDecoded returned garbage characters for malformed input instead of nil: inputs ending mid-digit-sequence (e.g. "y-z") and inputs decoding to C1 control characters (e.g. "abcd") now return nil (#78).
  • punycodeDecoded / punycodeEncoded could crash on adversarial input due to unchecked integer overflow; the RFC 3492 overflow checks are now implemented and such inputs return nil (#78).
  • idnaDecoded now accepts an uppercase XN-- ACE prefix (RFC 5890 defines it as case-insensitive).

Changed

  • Breaking: idnaEncoded now maps the hostname before encoding — NFKC compatibility folding (full-width forms, alternate dots), lowercasing, and NFC — so inputs like "GOO.GL" encode to "goo.gl" (#4). The full UTS #46 mapping table is intentionally not implemented. punycodeEncoded remains the raw RFC 3492 single-label transformation, now documented as such.

Deprecated

  • CocoaPods distribution ends when the trunk becomes read-only on 2026-12-02. Migrate to Swift Package Manager.
  • Carthage support is best-effort and no longer CI-verified.

3.0.0 - 2024-08-28

Added

  • watchOS and visionOS support.
  • Generated API documentation (jazzy), published via GitHub Pages.

Changed

  • Raised deployment targets: macOS 10.13, iOS 12.0, tvOS 12.0.
  • Renamed the source directory from Source to Sources.

2.1.1 - 2024-08-22

Changed

  • Renamed the SPM test target for consistent naming.
  • Project maintenance: CI and dependency updates.

2.1.0 - 2020-06-24

Changed

  • Tooling and CI maintenance (SwiftLint, gems, CocoaPods lint settings).

2.0.0 - 2019-08-09

Added

  • tvOS support (tvOS 11 and earlier included).

1.0.1 - 2019-02-08

Fixed

  • Packaging and CI fixes.

1.0.0 - 2018-11-19

Added

  • Initial release: Punycode (RFC 3492) encode/decode and IDNA encode/decode via String / Substring extensions.