Skip to content

Merge main into release/6.2 #1300

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

Merged
merged 40 commits into from
May 19, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
63cfcb9
ISO8601 DateComponents format style (#1209)
parkera Apr 4, 2025
7690819
build: Fix CMake build by adding missing source file (#1239)
kateinoigakukun Apr 5, 2025
03fe46f
OpenBSD support. (#1126)
3405691582 Apr 7, 2025
201a45b
Lazily compute whether attribute changed in _attributeModified(_:old:…
jmschonfeld Apr 7, 2025
78a0395
Writing Direction Attribute Implementation (#1245)
theMomax Apr 11, 2025
c16e0d9
Fix FileManager.isExecutableFile for emulated x86 processes on ARM sy…
jakepetroules Apr 11, 2025
914b9f7
Support NS/CFURL re-core in Swift (#1238)
jrflat Apr 12, 2025
99c5c0c
[wasm] Stop requiring `TZDIR` and `TZDEFAULT` on WASI (#1248)
kateinoigakukun Apr 14, 2025
edcf9ac
[Proposal] Writing Direction Attribute (#1234)
theMomax Apr 16, 2025
655dd5e
AttributedString character insertion doesn't invalidate text dependen…
jmschonfeld Apr 21, 2025
a169ceb
URI Templating (#1198)
danieleggert Apr 21, 2025
f53d198
Update `CMakeLists.txt` with missing `URLTemplate_Expression.swift` (…
bnbarham Apr 22, 2025
8d63523
Follow up for #1198: Fix test build for FOUNDATION_FRAMEWORK (#1261)
itingliu Apr 22, 2025
a63c901
[FoundationInternationalization] Avoid implicitly linking RegexBuilde…
jmschonfeld Apr 22, 2025
5156883
Make URL template regex dependency framework-only for now (#1268)
jmschonfeld Apr 22, 2025
a842db4
(149532884) Revert strict IPv6 validation in URL (#1258)
jrflat Apr 23, 2025
27476f9
(149316573) Remove URL workaround for Linux crash once SCL-F is rebui…
jrflat Apr 23, 2025
a3e9949
[Proposal] Progress Reporting in Swift Concurrency (#1192)
chloe-yeo Apr 23, 2025
90953df
Transparently add the \\?\ prefix to Win32 calls for extended length …
jakepetroules Apr 23, 2025
80588e9
[CI] Add support for GitHub Actions (#1241)
shahmishal Apr 24, 2025
ff0f955
Implementation of #bundle (#1274)
Tantalum73 Apr 26, 2025
f405ad1
[Proposal]: `#bundle` macro (#1251)
Tantalum73 Apr 28, 2025
7ae9160
upgrade AttributedStringWritingDirection SPI to API (#1275)
jmschonfeld Apr 29, 2025
e8ce4a6
[SF-0025] Markdown List Delimiters (#1244)
jmschonfeld May 2, 2025
e6fc85a
(150128868) Restore selective nil path behavior for bridged NSURLs (#…
jrflat May 2, 2025
876aa1f
(150308689) Fix URL.Template availability annotations (#1279)
jrflat May 2, 2025
3f661c1
Enable MemberImportVisibility upcoming feature in Foundation (#1280)
parkera May 2, 2025
435a2bb
Switch to a safer technique for obtaining the working directory on Wi…
jakepetroules May 3, 2025
bd7483e
Fix @preconcurrency import Android (#1281)
marcprux May 3, 2025
f057ef4
Implement list item delimiter attribute (#1272)
jmschonfeld May 5, 2025
eb28f8f
(150389961) Don't add a slash when appending an empty string to an em…
jrflat May 5, 2025
ab71445
Fix FileManager directories warning (#1288)
jmschonfeld May 10, 2025
eb7f240
(151038900) Fix URL.Template benchmark variable initialization (#1289)
jrflat May 12, 2025
9f3a180
Improve performance AttributedString Equatable conformance (#1287)
jmschonfeld May 13, 2025
88f6454
Move off of RegexBuilder for URL.Template (#1273)
danieleggert May 13, 2025
5164280
(151258374) Retrieving attributed string attribute values should not …
jmschonfeld May 14, 2025
2b26846
Update concurrency-safe notifications proposal (v4) (#1295)
cthielen May 15, 2025
26391c9
Reapply #1160, Add fix to allow more padding characters than necessar…
fabianfett May 15, 2025
6116cdf
[Data] Fix build issue with Static SDK for Linux. (#1293)
al45tair May 16, 2025
7002497
Add main --> release/6.2 automerger (#1297)
jmschonfeld May 16, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions .github/workflows/automerge.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
name: Create PR to merge main into release branch
# In the first period after branching the release branch, we typically want to include many changes from `main` in the release branch. This workflow automatically creates a PR every Monday to merge main into the release branch.
# Later in the release cycle we should stop this practice to avoid landing risky changes by disabling this workflow. To do so, disable the workflow as described in https://docs.github.com/en/actions/managing-workflow-runs-and-deployments/managing-workflow-runs/disabling-and-enabling-a-workflow
on:
schedule:
- cron: '0 9 * * MON'
workflow_dispatch:
jobs:
create_merge_pr:
name: Create PR to merge main into release branch
uses: swiftlang/github-workflows/.github/workflows/create_automerge_pr.yml@main
with:
base_branch: release/6.2
permissions:
contents: write
pull-requests: write
if: (github.event_name == 'schedule' && github.repository == 'swiftlang/swift-foundation') || (github.event_name != 'schedule') # Ensure that we don't run this on a schedule in a fork
24 changes: 24 additions & 0 deletions .github/workflows/pull_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
name: Pull request

on:
pull_request:
types: [opened, reopened, synchronize]

jobs:
tests:
name: Test
uses: swiftlang/github-workflows/.github/workflows/swift_package_test.yml@main
with:
linux_swift_versions: '["nightly-main"]'
windows_swift_versions: '["nightly-main"]'

soundness:
name: Soundness
uses: swiftlang/github-workflows/.github/workflows/soundness.yml@main
with:
license_header_check_project_name: "Swift.org"
license_header_check_enabled: false
docs_check_enabled: false
format_check_enabled: false
unacceptable_language_check_enabled: false
api_breakage_check_enabled: false
4 changes: 2 additions & 2 deletions Benchmarks/Benchmarks/Formatting/BenchmarkFormatting.swift
Original file line number Diff line number Diff line change
Expand Up @@ -45,15 +45,15 @@ let benchmarks = {

let preformatted = formats.map { ($0, $0.format(date)) }

Benchmark("iso860-format", configuration: .init(scalingFactor: .kilo)) { benchmark in
Benchmark("iso8601-format", configuration: .init(scalingFactor: .kilo)) { benchmark in
for _ in benchmark.scaledIterations {
for fmt in formats {
blackHole(fmt.format(date))
}
}
}

Benchmark("iso860-parse", configuration: .init(scalingFactor: .kilo)) { benchmark in
Benchmark("iso8601-parse", configuration: .init(scalingFactor: .kilo)) { benchmark in
for _ in benchmark.scaledIterations {
for fmt in preformatted {
let result = try? fmt.0.parse(fmt.1)
Expand Down
46 changes: 46 additions & 0 deletions Benchmarks/Benchmarks/URL/BenchmarkURL.swift
Original file line number Diff line number Diff line change
Expand Up @@ -231,4 +231,50 @@ let benchmarks = {
}
}

Benchmark("URL-Template-parsing") { benchmark in
for _ in benchmark.scaledIterations {
blackHole(URL.Template("/api/{version}/accounts/{accountId}/transactions/{transactionId}{?expand*,fields*,embed*,format}")!)
blackHole(URL.Template("/special/{+a}/details")!)
blackHole(URL.Template("/documents/{documentId}{#section,paragraph}")!)
}
}

let templates = [
URL.Template("/var/{var}/who/{who}/x/{x}{?keys*,count*,list*,y}")!,
URL.Template("/special/{+keys}/details")!,
URL.Template("x/y/{#path:6}/here")!,
URL.Template("a/b{/var,x}/here")!,
URL.Template("a{?var,y}")!,
]

var variables: [URL.Template.VariableName: URL.Template.Value] = [
.init("count"): ["one", "two", "three"],
.init("dom"): ["example", "com"],
.init("dub"): "me/too",
.init("hello"): "Hello World!",
.init("half"): "50%",
.init("var"): "value",
.init("who"): "fred",
.init("base"): "http://example.com/home/",
.init("path"): "/foo/bar",
.init("list"): ["red", "green", "blue"],
.init("keys"): [
"semi": ";",
"dot": ".",
"comma": ",",
],
.init("v"): "6",
.init("x"): "1024",
.init("y"): "768",
.init("empty"): "",
.init("empty_keys"): [:],
]

Benchmark("URL-Template-expansion") { benchmark in
for _ in benchmark.scaledIterations {
for t in templates {
blackHole(URL(template: t, variables: variables))
}
}
}
}
19 changes: 10 additions & 9 deletions Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,10 @@ let availabilityMacros: [SwiftSetting] = versionNumbers.flatMap { version in
}
}

let concurrencyChecking: [SwiftSetting] = [
let featureSettings: [SwiftSetting] = [
.enableExperimentalFeature("StrictConcurrency"),
.enableUpcomingFeature("InferSendableFromCaptures")
.enableUpcomingFeature("InferSendableFromCaptures"),
.enableUpcomingFeature("MemberImportVisibility")
]

var dependencies: [Package.Dependency] {
Expand Down Expand Up @@ -98,7 +99,7 @@ let package = Package(
"FoundationInternationalization",
],
cSettings: wasiLibcCSettings,
swiftSettings: availabilityMacros + concurrencyChecking
swiftSettings: availabilityMacros + featureSettings
),

// FoundationEssentials
Expand Down Expand Up @@ -134,7 +135,7 @@ let package = Package(
swiftSettings: [
.enableExperimentalFeature("VariadicGenerics"),
.enableExperimentalFeature("AccessLevelOnImport")
] + availabilityMacros + concurrencyChecking,
] + availabilityMacros + featureSettings,
linkerSettings: [
.linkedLibrary("wasi-emulated-getpid", .when(platforms: [.wasi])),
]
Expand All @@ -148,7 +149,7 @@ let package = Package(
resources: [
.copy("Resources")
],
swiftSettings: availabilityMacros + concurrencyChecking
swiftSettings: availabilityMacros + featureSettings
),

// FoundationInternationalization
Expand All @@ -172,7 +173,7 @@ let package = Package(
cSettings: wasiLibcCSettings,
swiftSettings: [
.enableExperimentalFeature("AccessLevelOnImport")
] + availabilityMacros + concurrencyChecking
] + availabilityMacros + featureSettings
),

.testTarget(
Expand All @@ -181,7 +182,7 @@ let package = Package(
"TestSupport",
"FoundationInternationalization",
],
swiftSettings: availabilityMacros + concurrencyChecking
swiftSettings: availabilityMacros + featureSettings
),

// FoundationMacros
Expand All @@ -198,7 +199,7 @@ let package = Package(
exclude: ["CMakeLists.txt"],
swiftSettings: [
.enableExperimentalFeature("AccessLevelOnImport")
] + availabilityMacros + concurrencyChecking
] + availabilityMacros + featureSettings
),
]
)
Expand All @@ -213,7 +214,7 @@ package.targets.append(contentsOf: [
"FoundationMacros",
"TestSupport"
],
swiftSettings: availabilityMacros + concurrencyChecking
swiftSettings: availabilityMacros + featureSettings
)
])
#endif
Loading