Skip to content

Commit 645c688

Browse files
Swift 5.7 Improvements (#261)
* Swift 5.7 Improvements While we have some ideas to take Swift 5.7 even further, we need more time to let the details bake. Till then, we can still offer a quality-of-life improvement for folks using Swift 5.7, especially those working on Advent of Code 2022! Improving Parsing's builder limits ---------------------------------- This is perhaps the most notable improvement for now. Currently, Parsing's builders limits the number of parsers allowed in a block because of how many overloads need to be maintained and generated. Using Swift 5.7's new [`buildPartialBlock`][se-0348], we can greatly improve upon this limit: | Builder | Block limit `swift(<5.7)` | Block limit `swift(>=5.7)` | | ---------------- | ------------------------- | -------------------------- | | `OneOfBuilder` | 10 | ∞ | | `ParserBuilder` | 6 | 10–∞* | \* Up to 10 non-`Void` captures in a block, plus unlimited `Void` captures. This should make working with larger builders much easier. The limit of 10 captures is arbitrary and could be expanded. If you hit it, please [let us know][discussions]! [se-0348]: https://github.com/apple/swift-evolution/blob/main/proposals/0348-buildpartialblock.md [discussions]: https://github.com/pointfreeco/swift-parsing/discussions Adding primary associated types ------------------------------- We've added primary associated types to a number of protocols: * `Parser<Input, Output>` * `ParserPrinter<Intput, Output>` * `Conversion<Input, Output>` * `PrependableCollection<Element>` This will allow you to express and constrain these protocols in a more lightweight, natural manner. Formatter parser-printer support -------------------------------- We've added support for using formatters directly in your parser printers with the `Formatted` parser-printer: ```swift let total = ParsePrint { "TOTAL: " Formatted(.currency(code: "USD")) } try total.parse("TOTAL: $42.42") // 42.42 try total.print(99.95) // "TOTAL: $99.95" ``` `Formatted` takes any of the many formatters shipping in iOS 15 and more recently. --- We have more plans for Parsing in the coming months to take even greater advantage of modern Swift features, and we hope to explore them soon! * Fix * wip * Clean up schemes * wip * remove 5.6 docs Co-authored-by: Brandon Williams <[email protected]>
1 parent 3a0affb commit 645c688

25 files changed

+9887
-9661
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
.DS_Store
22
/.build
3+
/.swiftpm
34
/Packages
45
/*.xcodeproj
56
xcuserdata/

.spi.yml

Lines changed: 0 additions & 10 deletions
This file was deleted.

.swiftpm/xcode/xcshareddata/xcschemes/Parsing_watchOS.xcscheme

Lines changed: 0 additions & 67 deletions
This file was deleted.

.swiftpm/xcode/xcshareddata/xcschemes/_URLRouting.xcscheme

Lines changed: 0 additions & 77 deletions
This file was deleted.

.swiftpm/xcode/xcshareddata/xcschemes/swift-parsing-Package.xcscheme

Lines changed: 0 additions & 163 deletions
This file was deleted.

Makefile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,15 @@ benchmarks:
99

1010
test:
1111
xcodebuild test \
12+
-workspace Parsing.xcworkspace \
1213
-scheme Parsing \
1314
-destination platform="$(PLATFORM_IOS)"
1415
xcodebuild test \
16+
-workspace Parsing.xcworkspace \
1517
-scheme Parsing \
1618
-destination platform="$(PLATFORM_MACOS)"
1719
xcodebuild test \
20+
-workspace Parsing.xcworkspace \
1821
-scheme Parsing \
1922
-destination platform="$(PLATFORM_TVOS)"
2023

.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata renamed to Parsing.xcworkspace/contents.xcworkspacedata

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3+
<plist version="1.0">
4+
<dict>
5+
<key>IDEDidComputeMac32BitWarning</key>
6+
<true/>
7+
</dict>
8+
</plist>

0 commit comments

Comments
 (0)