You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+46Lines changed: 46 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -9,3 +9,49 @@ See [Declarative String Processing Overview][decl-string]
9
9
## Requirements
10
10
11
11
-[Swift Trunk Development Snapshot](https://www.swift.org/download/#snapshots) DEVELOPMENT-SNAPSHOT-2022-02-03 or later.
12
+
13
+
## Integration with Swift
14
+
15
+
`_MatchingEngine`, `_CUnicode` and `_StringProcessing` are specially integrated modules that are built as part of apple/swift.
16
+
17
+
Specifically, `_MatchingEngine` contains the parser for regular expression literals and is built both as part of the compiler and as a core library. `_CUnicode` and `_StringProcessing` are built together as a core library named `_StringProcessing`.
Pull requests are tested via Swift CI. Unlike other packages, sources from this package (the `_MatchingEngine` module) are used directly by the Swift compiler, so any change to these sources will be cross-tested with the compiler using `build-script` in addition to SwiftPM testing. Other sources are tested using SwiftPM only.
28
+
29
+
### Workflow
30
+
31
+
- Create pull requests.
32
+
- Create a pull request in apple/swift-experimental-string-processing from `main` to `swift/main`, e.g. "[Integration] main -> swift/main".
33
+
- If apple/swift needs to be modified together, create a pull request in apple/swift.
34
+
- Trigger CI.
35
+
- In the apple/swift-experimental-string-processing pull request, trigger CI using the following command (replacing `<PR NUMBER>` with the apple/swift pull request number, if any):
36
+
```
37
+
apple/swift#<PR NUMBER> # use this line only if there is an corresponding apple/swift PR
38
+
@swift-ci please test
39
+
```
40
+
- In the apple/swift pull request (if any), trigger CI using the following command (replacing `<PR NUMBER>` with the apple/swift-experimental-string-processing pull request number):
- Merge the pull request in apple/swift-experimental-string-processing as a **merge commit**.
47
+
- Merge the pull request in apple/swift, if any.
48
+
49
+
## Development notes
50
+
51
+
Compiler integration can be tricky. Use special caution when developing `_MatchingEngine`, `_CUnicode` and `_StringProcessing` modules.
52
+
53
+
- Do not change the names of these modules without due approval from compiler and infrastructure teams.
54
+
- Do not modify the existing ABI between the regular expression parser and the Swift compiler unless absolutely necessary.
55
+
- Always minimize the number of lockstep integrations, i.e. when apple/swift-experimental-string-processing and apple/swift have to change together.
56
+
- In `_StringProcessing`, do not write fully qualified references to symbols in `_CUnicode`, and always wrap `import _CUnicode` in a `#if canImport(_CUnicode)`. This is because `_CUnicode` is built as part of `_StringProcessing` with CMake.
57
+
- In `_MatchingEngine`, do not write fully qualified references to `_MatchingEngine` itself. This is because `_MatchingEngine` is built as `ExperimentalRegex` in `SwiftCompilerSources/` with CMake.
0 commit comments