-
Notifications
You must be signed in to change notification settings - Fork 10.4k
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
Integrate experimental string processing modules and enable end-to-end regex. #40531
Conversation
7aad9ae
to
71c0778
Compare
@swift-ci please test |
Build failed |
Build failed |
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. |
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.
_MatchingEngine
as part of libswift (ExperimentalRegex
) using sources from the package._MatchingEngine
._MatchingEngine
and_StringProcessing
as 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.