Skip to content

Modernization#4

Open
pauljohanneskraft wants to merge 4 commits into
mainfrom
modernization
Open

Modernization#4
pauljohanneskraft wants to merge 4 commits into
mainfrom
modernization

Conversation

@pauljohanneskraft
Copy link
Copy Markdown
Collaborator

No description provided.

Copilot AI review requested due to automatic review settings May 28, 2026 12:36
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

A sweeping modernization pass: the package floor moves to Swift 5.9 with platform declarations and strict-concurrency / existential-any upcoming features, every source file gets DocC-style header documentation, a Sendable.swift central conformance file is added (mostly @unchecked), checksum verification gains an EnvironmentValues.skipChecksumVerification escape hatch in ChecksumProperty, the README is rewritten, a DocC catalog and .spi.yml are introduced, and a CI workflow is added.

Changes:

  • Package: Swift 5.9 tools, platforms, upcoming-feature settings; CI on macOS 14 + Ubuntu with a Swift version matrix; new .spi.yml.
  • Concurrency: blanket Sendable conformances for containers, formats, properties, conversions, environment, and supporting types (mostly @unchecked).
  • Functional: ChecksumProperty now honors skipChecksumVerification on all four read/read-write paths; bare-checksum builder expressions still verify unconditionally.

Reviewed changes

Copilot reviewed 56 out of 58 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
Package.swift Swift 5.9 tools, platforms, strict concurrency / existential-any.
.github/workflows/ci.yml New macOS + Linux CI with Swift 5.9 / 5.10 matrix (macOS matrix label is decorative).
.spi.yml Swift Package Index DocC build config.
.gitignore Ignore .swiftpm/, keep .build/, ignore *.doccarchive/.
.swiftpm/.../contents.xcworkspacedata Removed (now gitignored).
README.md Full rewrite: install, concepts, weather-station example, requirements.
NOTES.md New ideas log (feature drafts, out of scope for this PR).
Sources/DataKit/DataKit.docc/DataKit.md New DocC overview + Topics index.
Sources/DataKit/Sendable.swift Central @unchecked Sendable conformances.
Sources/DataKit/Property/Checksum.swift Respect skipChecksumVerification on all 4 read paths; doc comments.
Sources/DataKit/Environment/SkipChecksumVerification.swift Docs only.
Sources/DataKit/Environment/Environment+Endianness.swift Endianness: Sendable, docs.
Sources/DataKit/Environment/Environment+Suffix.swift Suffix: Sendable, docs.
Sources/DataKit/Environment/EnvironmentValues.swift Docs only.
Sources/DataKit/Readable/ReadContainer.swift LengthExceededError: Sendable, docs.
Sources/DataKit/Readable/ReadContext.swift Nested error structs gain @unchecked Sendable; docs.
Sources/DataKit/Readable/Readable.swift, ReadableProperty.swift Docs only.
Sources/DataKit/Writable/*.swift Docs only.
Sources/DataKit/ReadWritable/*.swift Docs only.
Sources/DataKit/Builder/*.swift Docs only.
Sources/DataKit/Property/.swift (Property, Convert, Custom, Using, Scope, OnRead, OnWrite, Environment, EnvironmentProperty, KeyPath, Property+) Docs only.
Sources/DataKit/Conversions/*.swift Docs; PrefixCountArray/DynamicCountArray gain conditional Sendable.
Sources/DataKit/Values/*.swift Docs only.
Sources/DataKit/Error.swift ConversionError / UnexpectedValueError @unchecked Sendable; docs.
Sources/DataKit/Exports.swift Header replaced with one-line file comment.
Files not reviewed (1)
  • .swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread .github/workflows/ci.yml Outdated
Comment thread README.md Outdated
Comment thread README.md Outdated
[![Swift Package Manager](https://img.shields.io/badge/SwiftPM-compatible-brightgreen.svg)](https://swift.org/package-manager)
[![Swift](https://img.shields.io/badge/Swift-5.9%2B-orange.svg)](https://swift.org)
[![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
[![Documentation](https://swiftpackageindex.com/QuickBirdEng/DataKit/documentation)](https://swiftpackageindex.com/QuickBirdEng/DataKit/documentation)
Comment thread Sources/DataKit/Property/Custom.swift Outdated
Comment on lines +8 to +11
/// primitives or with a ``Convert`` + ``Conversion``. The `read` closure is not annotated
/// `throws` in its signature, but it is invoked inside a throwing context — call sites can
/// throw via `try` inside the closure body using `try!`/`try?` patterns or by lifting the
/// logic into a helper that throws.
Comment thread README.md Outdated
}
}
That's everything: one `format` declaration drives both directions. Key paths in
`format` and `init(from:)` must match — see the [reading footgun](#-heads-up-keypath-mismatch-is-a-runtime-error)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants