feat(swift): scaffold the Swift SDK package and CI lanes - #4190
RustToMetal wants to merge 3 commits into
Conversation
|
Thanks for the PR. It is labeled Slash commands (own line, regular comment) move it around the queue:
See CONTRIBUTING.md for details. |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #4190 +/- ##
============================================
- Coverage 87.49% 87.49% -0.01%
- Complexity 1575 1576 +1
============================================
Files 1280 1280
Lines 223241 223241
Branches 186606 186605 -1
============================================
- Hits 195335 195315 -20
+ Misses 23196 23184 -12
- Partials 4710 4742 +32
🚀 New features to boost your workflow:
|
|
Thanks for splitting this into smaller pieces. Before review, CI needs to go green. foreign/swift/Package.swift is missing the licence header, and examples/swift/.build/ looks like build output that shouldn't be committed. The PR Title failure isn't yours: swift isn't an allowed scope yet, and I've raised a separate PR to add it. |
Starts the native Swift client for the VSR wire protocol with the smallest slice that exercises the toolchain end to end: the SwiftPM package, the error table generated from the server's codes, the little-endian byte codec every request is written with, and a 128-bit value type for message ids on platforms that predate UInt128. The CI wiring lands here so the lint, test, and build lanes are proven before the protocol layer, the client, and the producer and consumer follow in later changes. Relates to apache#4001
9ab3534 to
c3a8cf9
Compare
|
Thanks @justinmclean for the update. I've fixed the issues. |
|
The scope gate rejects
Adding Worth folding into this PR, since the rest of the stack hits the same gate. |
|
@numinnex it was added by @justinmclean in #4207, this PR just needs rebase. |
|
lets wait with merge till we release 0.9.0 (tomorrow evening CET) - i'm not sure how it would impact our CI machinery. |
Starts the native Swift client for the VSR wire protocol with the smallest slice that exercises the toolchain end to end: the SwiftPM package, the error table generated from the server's codes, the little-endian byte codec every request is written with, and a 128-bit value type for message ids on platforms that predate
UInt128.The CI wiring lands here so the lint, test, and build lanes are proven before the protocol layer, the client, and the producer and consumer follow in later changes.
First of nine stacked PRs for the Swift SDK; the others build on this one.
Which issue does this PR address?
Relates to #4001
Rationale
Iggy has no first-class Swift client, and reviewing the whole SDK in one PR is not workable. This lays the foundation the rest of the chain builds on and proves the CI lanes with as little code as possible.
What changed?
Swift code had nowhere to live in the repository and no CI to run under. This adds
foreign/swiftas a SwiftPM package (Swift 6 language mode, macOS 13, iOS 16, tvOS 16, watchOS 9, visionOS 1, and Linux), theIggyErrorandIggyErrorCodetypes covering every server error code, theByteWriterandByteReaderthe wire format is encoded with, andUInt128Valuefor message ids.The Swift lanes are wired into
components.yml,_detect.yml,_test.yml, andpre-merge.ymlthrough aswift/pre-mergecomposite action (format lint, build with warnings as errors, unit tests, release build) and asetup-swiftutility action.licenserc.tomllearns the.swiftextension.Local Execution
swift build -Xswiftc -warnings-as-errors,swift test(7 tests),swift format lint --strict, YAML parsed for every touched workflow,markdownlinton the READMEprekis not installed on this machine; the equivalent shellcheck, markdownlint, license-header, and whitespace checks were run by hand)AI Usage
core/binary_protocolas the reference, reviewed and directed by me.iggy-server, plain and over TLS, plus the examples runner and the BDD suite on macOS and Linux.