Skip to content

Releases: futamura/PunycodeSwift

Release list

4.0.1

Choose a tag to compare

@github-actions github-actions released this 18 Aug 06:52
3444734

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

Choose a tag to compare

@github-actions github-actions released this 18 Aug 00:09
a32282d

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.