Skip to content

Commit 6384a3a

Browse files
authored
Merge branch 'swiftlang:main' into proposal/progress-reporter
2 parents 720cf0c + f53d198 commit 6384a3a

File tree

128 files changed

+10462
-3750
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

128 files changed

+10462
-3750
lines changed

Benchmarks/Benchmarks/AttributedString/BenchmarkAttributedString.swift

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -414,6 +414,11 @@ let benchmarks = {
414414
#endif
415415

416416
let manyAttributesString2 = createManyAttributesString()
417+
let manyAttributesString3 = {
418+
var str = createManyAttributesString()
419+
str.characters.append("a")
420+
return str
421+
}()
417422
let manyAttributesStringRange = manyAttributesString.characters.index(manyAttributesString.startIndex, offsetBy: manyAttributesString.characters.count / 2)...
418423
let manyAttributesSubstring = manyAttributesString[manyAttributesStringRange]
419424
let manyAttributes2Substring = manyAttributesString2[manyAttributesStringRange]
@@ -422,6 +427,10 @@ let benchmarks = {
422427
blackHole(manyAttributesString == manyAttributesString2)
423428
}
424429

430+
Benchmark("equalityDifferingCharacters") { benchmark in
431+
blackHole(manyAttributesString == manyAttributesString3)
432+
}
433+
425434
Benchmark("substringEquality") { benchmark in
426435
blackHole(manyAttributesSubstring == manyAttributes2Substring)
427436
}
@@ -455,6 +464,43 @@ let benchmarks = {
455464
blackHole(hasher.finalize())
456465
}
457466
#endif
467+
468+
let manyAttributesWithParagraph = {
469+
var str = createManyAttributesString()
470+
str.testParagraphConstrained = 2
471+
return str
472+
}()
473+
474+
Benchmark("paragraphBoundSliceEnumeration-shortRuns") { benchmark in
475+
for (value, range) in manyAttributesWithParagraph.runs[\.testParagraphConstrained] {
476+
blackHole(value)
477+
}
478+
}
479+
480+
Benchmark("paragraphBoundSliceEnumeration-shortRuns-reversed") { benchmark in
481+
for (value, range) in manyAttributesWithParagraph.runs[\.testParagraphConstrained].reversed() {
482+
blackHole(value)
483+
}
484+
}
485+
486+
let longParagraphsString = {
487+
var str = String(repeating: "a", count: 10000) + "\n"
488+
str += String(repeating: "b", count: 10000) + "\n"
489+
str += String(repeating: "c", count: 10000)
490+
return AttributedString(str, attributes: AttributeContainer.testParagraphConstrained(1).testInt(2))
491+
}()
492+
493+
Benchmark("paragraphBoundSliceEnumeration-longRuns") { benchmark in
494+
for (value, range) in longParagraphsString.runs[\.testParagraphConstrained] {
495+
blackHole(value)
496+
}
497+
}
498+
499+
Benchmark("paragraphBoundSliceEnumeration-longRuns-reversed") { benchmark in
500+
for (value, range) in longParagraphsString.runs[\.testParagraphConstrained].reversed() {
501+
blackHole(value)
502+
}
503+
}
458504
}
459505

460506

Benchmarks/Benchmarks/Base64/Base64.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ private func autoreleasepool<T>(_ block: () -> T) -> T { block() }
2424
#endif
2525

2626
#if canImport(Glibc)
27-
import Glibc
27+
@preconcurrency import Glibc
2828
#endif
2929
#if canImport(Darwin)
3030
import Darwin

Benchmarks/Benchmarks/DataIO/BenchmarkDataIO.swift

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ private func autoreleasepool<T>(_ block: () -> T) -> T { block() }
2424
#endif
2525

2626
#if canImport(Glibc)
27-
import Glibc
27+
@preconcurrency import Glibc
2828
#endif
2929
#if canImport(Darwin)
3030
import Darwin
@@ -88,9 +88,11 @@ let benchmarks = {
8888
try data.write(to: testPath)
8989
}
9090

91+
#if !os(WASI) // atomic writing is unavailable on WASI
9192
Benchmark("write-regularFile-atomic", configuration: .cleanupTestPathConfig) { benchmark in
9293
try data.write(to: testPath, options: .atomic)
9394
}
95+
#endif
9496

9597
Benchmark("write-regularFile-alreadyExists",
9698
configuration: .init(
@@ -103,6 +105,7 @@ let benchmarks = {
103105
try? data.write(to: testPath)
104106
}
105107

108+
#if !os(WASI) // atomic writing is unavailable on WASI
106109
Benchmark("write-regularFile-alreadyExists-atomic",
107110
configuration: .init(
108111
setup: {
@@ -113,6 +116,7 @@ let benchmarks = {
113116
) { benchmark in
114117
try? data.write(to: testPath, options: .atomic)
115118
}
119+
#endif
116120

117121
Benchmark("read-regularFile",
118122
configuration: .init(

Benchmarks/Benchmarks/Formatting/BenchmarkFormatting.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,15 +45,15 @@ let benchmarks = {
4545

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

48-
Benchmark("iso860-format", configuration: .init(scalingFactor: .kilo)) { benchmark in
48+
Benchmark("iso8601-format", configuration: .init(scalingFactor: .kilo)) { benchmark in
4949
for _ in benchmark.scaledIterations {
5050
for fmt in formats {
5151
blackHole(fmt.format(date))
5252
}
5353
}
5454
}
5555

56-
Benchmark("iso860-parse", configuration: .init(scalingFactor: .kilo)) { benchmark in
56+
Benchmark("iso8601-parse", configuration: .init(scalingFactor: .kilo)) { benchmark in
5757
for _ in benchmark.scaledIterations {
5858
for fmt in preformatted {
5959
let result = try? fmt.0.parse(fmt.1)

Benchmarks/Benchmarks/URL/BenchmarkURL.swift

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -231,4 +231,50 @@ let benchmarks = {
231231
}
232232
}
233233

234+
Benchmark("URL-Template-parsing") { benchmark in
235+
for _ in benchmark.scaledIterations {
236+
blackHole(URL.Template("/api/{version}/accounts/{accountId}/transactions/{transactionId}{?expand*,fields*,embed*,format}")!)
237+
blackHole(URL.Template("/special/{+a}/details")!)
238+
blackHole(URL.Template("/documents/{documentId}{#section,paragraph}")!)
239+
}
240+
}
241+
242+
let templates = [
243+
URL.Template("/var/{var}/who/{who}/x/{x}{?keys*,count*,list*,y}")!,
244+
URL.Template("/special/{+keys}/details")!,
245+
URL.Template("x/y/{#path:6}/here")!,
246+
URL.Template("a/b{/var,x}/here")!,
247+
URL.Template("a{?var,y}")!,
248+
]
249+
250+
var variables: [URL.Template.VariableName: URL.Template.Value] = [
251+
"count": ["one", "two", "three"],
252+
"dom": ["example", "com"],
253+
"dub": "me/too",
254+
"hello": "Hello World!",
255+
"half": "50%",
256+
"var": "value",
257+
"who": "fred",
258+
"base": "http://example.com/home/",
259+
"path": "/foo/bar",
260+
"list": ["red", "green", "blue"],
261+
"keys": [
262+
"semi": ";",
263+
"dot": ".",
264+
"comma": ",",
265+
],
266+
"v": "6",
267+
"x": "1024",
268+
"y": "768",
269+
"empty": "",
270+
"empty_keys": [:],
271+
]
272+
273+
Benchmark("URL-Template-expansion") { benchmark in
274+
for _ in benchmark.scaledIterations {
275+
for t in templates {
276+
blackHole(URL(template: t, variables: variables))
277+
}
278+
}
279+
}
234280
}

CMakeLists.txt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,13 @@ if(NOT CMAKE_HOST_SYSTEM_NAME STREQUAL Windows)
4646
endif()
4747
endif()
4848

49+
if(CMAKE_SYSTEM_NAME STREQUAL Linux)
50+
# Pass -fno-omit-frame-pointer while compiling for better backtraces
51+
add_compile_options(
52+
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-Xcc -fno-omit-frame-pointer>"
53+
"$<$<COMPILE_LANGUAGE:C,CXX>:-fno-omit-frame-pointer>")
54+
endif()
55+
4956
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
5057
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
5158
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)

0 commit comments

Comments
 (0)