Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
835dc26
Added global actor isolation support
NSFatalError Aug 24, 2025
f28a7e4
-
NSFatalError Nov 13, 2025
944eb6b
[SwiftFormat] Applied formatting
NSFatalError Nov 13, 2025
376961e
-
NSFatalError Nov 13, 2025
90e125b
[SwiftFormat] Applied formatting
NSFatalError Nov 13, 2025
2fd6d69
-
NSFatalError Nov 13, 2025
b06e67f
-
NSFatalError Nov 13, 2025
90a9f9e
-
NSFatalError Nov 14, 2025
3b76e94
Rename
NSFatalError Nov 14, 2025
694b3c6
Added Memoized macro
NSFatalError Nov 15, 2025
5e42749
[SwiftFormat] Applied formatting
NSFatalError Nov 15, 2025
d7e3322
-
NSFatalError Nov 16, 2025
9d3fe44
Added docs
NSFatalError Nov 16, 2025
50d83c1
-
NSFatalError Nov 16, 2025
360409f
-
NSFatalError Nov 16, 2025
82dd94a
-
NSFatalError Nov 16, 2025
bf1555f
-
NSFatalError Nov 16, 2025
09670b1
-
NSFatalError Nov 16, 2025
467140a
-
NSFatalError Nov 16, 2025
cf3c166
-
NSFatalError Nov 16, 2025
2f05ba1
-
NSFatalError Nov 16, 2025
db0a724
-
NSFatalError Nov 16, 2025
1ca38ac
-
NSFatalError Nov 16, 2025
2b6fde7
-
NSFatalError Nov 16, 2025
532b9d6
-
NSFatalError Nov 16, 2025
1b22e1b
-
NSFatalError Nov 16, 2025
b14451d
[SwiftFormat] Applied formatting
NSFatalError Nov 16, 2025
51ac958
-
NSFatalError Nov 16, 2025
6ac2184
-
NSFatalError Nov 16, 2025
e565fb9
[SwiftFormat] Applied formatting
NSFatalError Nov 16, 2025
8538785
-
NSFatalError Nov 16, 2025
7d7bc88
-
NSFatalError Nov 16, 2025
88030ba
-
NSFatalError Nov 16, 2025
d00a016
-
NSFatalError Nov 16, 2025
88e207a
-
NSFatalError Nov 16, 2025
1cb17e7
Code review
NSFatalError Nov 16, 2025
8170717
-
NSFatalError Nov 16, 2025
b7e8bf8
-
NSFatalError Nov 16, 2025
dad6708
-
NSFatalError Nov 16, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 21 additions & 12 deletions .github/workflows/pull-request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,16 +12,19 @@ concurrency:
cancel-in-progress: true

env:
XCODE_VERSION: "16.3"
XCODE_VERSION: "26.1"

jobs:
prepare:
runs-on: macos-15
runs-on: macos-26
outputs:
platforms: ${{ steps.platforms.outputs.platforms }}
scheme: ${{ steps.scheme.outputs.scheme }}
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5
with:
submodules: true

- name: Setup Xcode
run: sudo xcode-select -s /Applications/Xcode_$XCODE_VERSION.app

Expand All @@ -31,6 +34,7 @@ jobs:
run: |
curl https://mise.run | sh
mise install

- name: Run linters
run: mise lint

Expand Down Expand Up @@ -62,13 +66,16 @@ jobs:

build-and-test:
needs: prepare
runs-on: macos-15
runs-on: macos-26
strategy:
fail-fast: false
matrix:
platform: ${{ fromJSON(needs.prepare.outputs.platforms) }}
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5
with:
submodules: true

- name: Setup Xcode
run: sudo xcode-select -s /Applications/Xcode_$XCODE_VERSION.app

Expand All @@ -81,16 +88,16 @@ jobs:
destination="platform=macOS,variant=Mac Catalyst"
;;
ios)
destination="platform=iOS Simulator,name=iPhone 16 Pro Max,OS=latest"
destination="platform=iOS Simulator,name=iPhone 17 Pro Max,OS=26.1"
;;
tvos)
destination="platform=tvOS Simulator,name=Apple TV 4K (3rd generation),OS=latest"
destination="platform=tvOS Simulator,name=Apple TV 4K (3rd generation),OS=26.1"
;;
watchos)
destination="platform=watchOS Simulator,name=Apple Watch Series 10 (46mm),OS=latest"
destination="platform=watchOS Simulator,name=Apple Watch Series 11 (46mm),OS=26.1"
;;
visionos)
destination="platform=visionOS Simulator,name=Apple Vision Pro,OS=latest"
destination="platform=visionOS Simulator,name=Apple Vision Pro,OS=26.1"
;;
*)
echo "Unknown platform: ${{ matrix.platform }}"
Expand All @@ -109,7 +116,8 @@ jobs:
set -o pipefail
xcodebuild build \
-scheme ${{ needs.prepare.outputs.scheme }} \
-destination "${{ steps.destination.outputs.destination }}" | \
-destination "${{ steps.destination.outputs.destination }}" \
-IDEPackageEnablePrebuilts=NO | \
xcbeautify --renderer github-actions

- name: Test (SPM)
Expand All @@ -129,11 +137,12 @@ jobs:
set -o pipefail
xcodebuild test \
-scheme ${{ needs.prepare.outputs.scheme }} \
-destination "${{ steps.destination.outputs.destination }}" | \
-destination "${{ steps.destination.outputs.destination }}" \
-IDEPackageEnablePrebuilts=NO | \
xcbeautify --renderer github-actions

- name: Check coverage (SPM)
if: ${{ matrix.platform == 'macos' }}
uses: codecov/codecov-action@v5
with:
fail_ci_if_error: true
fail_ci_if_error: true
8 changes: 5 additions & 3 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,17 @@ on:
- '*'

env:
XCODE_VERSION: "16.3"
XCODE_VERSION: "26.1"

jobs:
release:
runs-on: macos-15
runs-on: macos-26
Comment on lines +9 to +13
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

Verify Xcode 26.1 and macOS-26 runner availability.

The workflow references Xcode 26.1 and the macOS-26 runner. Please confirm these are available on GitHub Actions to prevent CI failures.


🌐 Web query:

Is Xcode 26.1 available? What macOS runners are available on GitHub Actions?

💡 Result:

Short answer:

  • Xcode 26.1 is not yet generally available on GitHub-hosted runners (there are open issues/requests to add it and reports of missing iOS 26.1 platform). [1][2][3]

Which macOS runners are (publicly) available on GitHub Actions:

  • macos-14 (macOS 14 Sonoma) — current stable image. [1]
  • macos-15 (macOS 15) — available (Intel/arm variants). [1]
  • macos-26 (macOS 26 Tahoe) — available as a public beta image (arm64 and related tags). [1][4]

Notes:

  • macOS 13 (Ventura) images were announced for deprecation (scheduled removal/unsupported dates noted in the runner-images repo). [1]
  • For the latest/image-by-image tool versions (exact Xcode builds, installed iOS platforms/sims), check the actions/runner-images releases and related issues — those pages show per-image tool lists and active issues about Xcode 26.1. [1][2][3]

Sources:
[1] actions/runner-images — releases & image notes.
[2] Issue: "Update to Xcode 26.1" (actions/runner-images).
[3] Issue: "macOS 15 / Xcode 26.1: iOS 26.1 platform not installed" (actions/runner-images).
[4] macOS 26 image release notes (public beta) (actions/runner-images).


Use an available Xcode version; macOS-26 runner is available.

Xcode 26.1 is not yet generally available on GitHub Actions, and the workflow will fail when attempting to use it. macOS-26 (macOS 26 Tahoe) is available as a public beta image.

Update XCODE_VERSION to an available version (e.g., "26.0" or the latest stable release). Check the actions/runner-images releases for the current toolset and available Xcode versions on the macOS-26 image.

🤖 Prompt for AI Agents
.github/workflows/release.yml lines 9-13: XCODE_VERSION is set to "26.1" which
is not available on the macOS-26 runner and will cause the workflow to fail;
change XCODE_VERSION to a supported value (for example "26.0" or the latest
stable Xcode listed for macOS-26 in actions/runner-images releases) and verify
the chosen version exists on the macOS-26 image before committing.

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5
with:
submodules: true
fetch-depth: 0

- name: Setup Xcode
run: sudo xcode-select -s /Applications/Xcode_$XCODE_VERSION.app

Expand Down
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[submodule "Macros/Dependencies/PrincipleMacros"]
path = Macros/Dependencies/PrincipleMacros
url = https://github.com/NSFatalError/PrincipleMacros
10 changes: 4 additions & 6 deletions .mise.toml
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
[vars]
sources = "Sources"
tests = "Tests"
swiftlint = '~/.local/bin/mise x -- swiftlint'
swiftformat = '~/.local/bin/mise x -- swiftformat'

[tools]
swiftlint = "0.58.2"
swiftformat = "0.55.5"
swiftlint = "0.62.2"
swiftformat = "0.58.5"

[tasks.lint]
description = 'Run all linters'
Expand All @@ -19,7 +17,7 @@ run = """
{{ vars.swiftlint }} lint \
--config .swiftlint.yml \
--strict \
{{ vars.sources }}
Sources Macros
"""

[tasks."swiftlint:tests"]
Expand All @@ -30,7 +28,7 @@ run = """
--config .swiftlint.yml \
--config .swiftlint.tests.yml \
--strict \
{{ vars.tests }}
Tests
"""

[tasks.swiftformat]
Expand Down
2 changes: 1 addition & 1 deletion .spi.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@ version: 1
builder:
configs:
- documentation_targets:
- Publishable
- Relay
2 changes: 1 addition & 1 deletion .swift-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
6.0
6.2
209 changes: 114 additions & 95 deletions .swiftformat
Original file line number Diff line number Diff line change
@@ -1,106 +1,125 @@
--acronyms ID,URL,UUID
--allman false
--anonymousforeach convert
--assetliterals visual-width
--asynccapturing
--beforemarks
--binarygrouping 4,8
--callsiteparen default
--categorymark "MARK: %c"
--classthreshold 0
--closingparen default
--closurevoid remove
--commas inline
--complexattrs prev-line
--computedvarattrs prev-line
--condassignment always
--conflictmarkers reject
--dateformat system
--decimalgrouping 3,6
--doccomments before-declarations
--elseposition same-line
--emptybraces no-space
--enumnamespaces always
--enumthreshold 0
--exponentcase lowercase
--exponentgrouping disabled
--extensionacl on-declarations
--extensionlength 0
--extensionmark "MARK: - %t + %c"
--fractiongrouping disabled
--allow-partial-wrapping true
--anonymous-for-each convert
--asset-literals visual-width
--async-capturing
--before-marks
--binary-grouping 4,8
--blank-line-after-switch-case multiline-only
--call-site-paren default
--category-mark "MARK: %c"
--class-threshold 0
--closing-paren default
--closure-void remove
--complex-attributes prev-line
--computed-var-attributes prev-line
--conditional-assignment always
--conflict-markers reject
--date-format system
--decimal-grouping 3,6
--default-test-suite-attributes
--doc-comments before-declarations
--else-position same-line
--empty-braces no-space
--enum-namespaces always
--enum-threshold 0
--equatable-macro none
--exponent-case lowercase
--exponent-grouping disabled
--extension-acl on-declarations
--extension-mark "MARK: - %t + %c"
--extension-threshold 0
--file-macro "#file"
--fraction-grouping disabled
--fragment false
--funcattributes prev-line
--generictypes
--groupblanklines true
--groupedextension "MARK: %c"
--guardelse next-line
--func-attributes prev-line
--generic-types
--group-blank-lines true
--grouped-extension "MARK: %c"
--guard-else next-line
--header ignore
--hexgrouping 4,8
--hexliteralcase uppercase
--hex-grouping 4,8
--hex-literal-case uppercase
--ifdef indent
--importgrouping testable-first
--import-grouping testable-first
--indent 4
--indentcase false
--indentstrings false
--inferredtypes always
--initcodernil false
--inlinedforeach ignore
--indent-case false
--indent-strings false
--inferred-types always
--init-coder-nil false
--lifecycle
--lineaftermarks true
--line-after-marks true
--line-between-guards false
--linebreaks lf
--markcategories true
--markextensions always
--marktypes always
--maxwidth none
--modifierorder
--nevertrailing
--nilinit remove
--noncomplexattrs
--nospaceoperators
--nowrapoperators
--octalgrouping 4,8
--operatorfunc spaced
--organizationmode visibility
--organizetypes actor,class,enum,struct
--patternlet hoist
--preservedecls
--preservedsymbols Package
--propertytypes inferred
--mark-categories true
--mark-class-threshold 0
--mark-enum-threshold 0
--mark-extension-threshold 0
--mark-extensions always
--mark-struct-threshold 0
--mark-types always
--markdown-files ignore
--max-width none
--modifier-order
--never-trailing
--nil-init remove
--no-space-operators
--no-wrap-operators
--non-complex-attributes
--octal-grouping 4,8
--operator-func spaced
--organization-mode visibility
--organize-types actor,class,enum,struct
--pattern-let hoist
--preserve-acronyms
--preserve-decls
--preserved-property-types Package
--property-types inferred
--ranges spaced
--redundant-async always
--redundant-throws always
--self init-only
--selfrequired
--semicolons inline
--shortoptionals always
--smarttabs enabled
--someany true
--sortedpatterns
--storedvarattrs prev-line
--stripunusedargs always
--structthreshold 0
--tabwidth unspecified
--throwcapturing
--self-required
--semicolons inline-only
--short-optionals always
--single-line-for-each ignore
--smart-tabs enabled
--some-any true
--sort-swiftui-properties none
--sorted-patterns
--stored-var-attributes prev-line
--strip-unused-args always
--struct-threshold 0
--tab-width unspecified
--throw-capturing
--timezone system
--trailingclosures
--trimwhitespace always
--typeattributes prev-line
--typeblanklines preserve
--typedelimiter space-after
--typemark "MARK: - %t"
--typemarks
--typeorder
--visibilitymarks
--visibilityorder
--voidtype void
--wraparguments before-first
--wrapcollections before-first
--wrapconditions after-first
--wrapeffects preserve
--wrapenumcases always
--wrapparameters before-first
--wrapreturntype preserve
--wrapternary before-operators
--wraptypealiases after-first
--xcodeindentation enabled
--yodaswap always
--disable enumNamespaces,fileHeader,headerFileName,redundantInternal,wrap,wrapMultilineStatementBraces,wrapSingleLineComments
--enable acronyms,blankLinesBetweenImports,blockComments,docComments,isEmpty,propertyTypes,redundantProperty,sortSwitchCases,unusedPrivateDeclarations,wrapConditionalBodies,wrapEnumCases
--trailing-closures
--trailing-commas never
--trim-whitespace always
--type-attributes prev-line
--type-blank-lines preserve
--type-body-marks preserve
--type-delimiter space-after
--type-mark "MARK: - %t"
--type-marks
--type-order
--url-macro none
--visibility-marks
--visibility-order
--void-type Void
--wrap-arguments before-first
--wrap-collections before-first
--wrap-conditions after-first
--wrap-effects preserve
--wrap-enum-cases always
--wrap-parameters before-first
--wrap-return-type preserve
--wrap-string-interpolation default
--wrap-ternary before-operators
--wrap-type-aliases after-first
--xcode-indentation enabled
--xctest-symbols
--yoda-swap always
--disable fileHeader,headerFileName,redundantInternal,wrap,wrapMultilineStatementBraces,wrapSingleLineComments
--enable acronyms,blankLinesBetweenImports,blockComments,docComments,emptyExtensions,environmentEntry,isEmpty,noForceTryInTests,noForceUnwrapInTests,noGuardInTests,propertyTypes,redundantAsync,redundantMemberwiseInit,redundantProperty,redundantThrows,singlePropertyPerLine,sortSwitchCases,unusedPrivateDeclarations,wrapConditionalBodies,wrapEnumCases,wrapMultilineFunctionChains
Loading
Loading