Releases: futamura/PunycodeSwift
Releases · futamura/PunycodeSwift
Release list
4.0.1
Removed
- CocoaPods publishing: 3.0.0 is the last version available as the
Punycodepod. 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
Added
idnaEncodedURL/idnaDecodedURLonStringandSubstring: 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 applyingidnaEncodedto a full URL.- Linux support, verified by CI (
swift build/swift teston the official Swift container). - GitHub Releases are now created automatically when a version tag is pushed.
CI Successaggregate check for branch protection.- Community files:
CHANGELOG.md,CONTRIBUTING.md,SECURITY.md, issue and PR templates.
Changed
- Breaking:
Package.swiftrequires 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.*todev.futamura.*, completing the account rename. - CI runs on pushes and pull requests to
mainanddevelop, 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
punycodeDecodedreturned 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/punycodeEncodedcould crash on adversarial input due to unchecked integer overflow; the RFC 3492 overflow checks are now implemented and such inputs return nil (#78).idnaDecodednow accepts an uppercaseXN--ACE prefix (RFC 5890 defines it as case-insensitive).
Changed
- Breaking:
idnaEncodednow 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.punycodeEncodedremains 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.