- Notifications
You must be signed in to change notification settings - Fork 10.6k
Integrate experimental string processing modules and enable end-to-end regex. #40531
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
Conversation
7aad9ae to 71c0778 Compare | @swift-ci please test |
| Build failed |
| Build failed |
milseman left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
@hamishknight and I can take over Regex.swift after this gets merged.
71c0778 to d2bed95 Compare | @swift-ci please test |
| Build failed |
| @swift-ci please test macOS |
| @milseman It might better to just drop Regex.swift altogether (though not in this PR) and define all compiler interfaces in the package. This way we can get everything mock-tested within the package, and prevent any internal symbol conflicts with Regex.swift (since it's not included in the package build). |
| @swift-ci please test windows platform |
| Build failed |
| @swift-ci please clean test Linux |
| Build failed |
| @swift-ci please clean test macos |
| @swift-ci please clean test windows |
d2bed95 to bb38679 Compare | @swift-ci please test |
| Build failed |
bb38679 to 79beb25 Compare | @swift-ci please test |
| @swift-ci please test Windows platform |
| @swift-ci please test macOS platform |
| @swift-ci please test Linux platform |
c3b9ccf to b34d2dd Compare | @swift-ci please test |
| @compnerd suggested that we add cmake support to the string processing package itself so that we can avoid globbing in this repo. We plan to do this as a follow-up patch. |
porglezomp left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have some questions about being able to disable this feature in builds.
b34d2dd to bd6b81f Compare | I've added conditional import of |
| @swift-ci please test |
fe54614 to b5bfd71 Compare | @swift-ci please test |
…d regex. - Checkout apple/swift-experimental-string-processing using a tag. - Build `_MatchingEngine` as part of libswift (`ExperimentalRegex`) using sources from the package. - Parse regex literals using the parser from `_MatchingEngine`. - Build both `_MatchingEngine` and `_StringProcessing` as part of core libs using sources from the package. - Use `Regex<DynamicCaptures>` as the default regex type until we finalize swiftlang/swift-experimental-string-processing#68.
b5bfd71 to a4b99ce Compare | @swift-ci please test |
| This looks like it broke the incremental builder: https://ci.swift.org/job/oss-swift-incremental-RA-macos/14501/ |
…les" This reverts commit a67a043, reversing changes made to 9965df7. This commit or the earlier commit this commit is based on (swiftlang#40531) broke the incremental bot.
_MatchingEngineas part of libswift (ExperimentalRegex) using sources from the package._MatchingEngine._MatchingEngineand_StringProcessingas part of core libs using sources from the package.Regex<DynamicCaptures>as the default regex type until we finalize 'Regex<Captures>' -> 'Regex<Match>' swift-experimental-string-processing#68.Rationale for out-of-tree development:
At this point we are interested in faster development iterations, and a Swift package makes it significantly quicker for us to come up with a prototype. We integrate into the compiler based on tags, which means that our daily development will stay at high speed on the main branch of apple/swift-experimental-string-processing without breaking Swift CI. Long term maybe we can use a bot to clone the code into the Swift repo, so that Swift no longer depends on the package.
Testing is done first in our repo via XCTests. Then we create a PR to apple/swift to update the tag and run CI. There’s also parser, type checker, SILGen and validation tests on the compiler side for this feature. Those tests link against the modules built using sources from the string processing package, and will reflect any failures from the integration PR.