feat(swift): scaffold the Swift SDK package and CI lanes - #4190
Open
RustToMetal wants to merge 2 commits into
Open
RustToMetal wants to merge 2 commits into
RustToMetal wants to merge 2 commits into
Conversation
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
|
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.42% 87.42% -0.01%
Complexity 1575 1575
============================================
Files 1280 1280
Lines 222704 222704
Branches 186067 186067
============================================
- Hits 194706 194691 -15
+ Misses 23287 23268 -19
- Partials 4711 4745 +34
🚀 New features to boost your workflow:
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.