Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* 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]>
- Loading branch information