Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

URL.init(string:) handling of empty strings has changed in Swift 6 #962

Open
rnro opened this issue Oct 3, 2024 · 1 comment
Open

URL.init(string:) handling of empty strings has changed in Swift 6 #962

rnro opened this issue Oct 3, 2024 · 1 comment

Comments

@rnro
Copy link

rnro commented Oct 3, 2024

Initializing a URL from an empty string in Swift 6 on Linux now returns a non-nil URL value. In earlier Swift versions and on macOS it returns nil.

On Linux Swift 5.10:

  1> import Foundation
  2> let u = Foundation.URL(string: "")
  [snip]
  3> print(u)
nil

On Linux Swift 6.0.1:

  1> import Foundation
  2> let u = Foundation.URL(string: "")
  [snip]
  3> print(u)
Optional()
rnro added a commit to swift-server/async-http-client that referenced this issue Oct 3, 2024
`Foundation.URL` has various behavior changes in Swift 6 to better match
RFC 3986 which impact AHC.

In particular it now no longer strips the square brackets in IPv6 hosts
which are not tolerated by `inet_pton` so these must be manually
stripped.

swiftlang/swift-foundation#957
swiftlang/swift-foundation#958
swiftlang/swift-foundation#962
@jrflat
Copy link
Contributor

jrflat commented Oct 3, 2024

This is an expected behavior change when updating URL to RFC 3986. A URL always contains a path, and it may be empty. "" is considered a valid relative path, and something that can be resolved against a base URL. The RFC lists resolving "" against a base URL as an example in section 5.4.1. We'll monitor bincompat from this change.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants