Skip to content

Swift 6 modernization: end-to-end reference app on the modernized stack - #25

Open
taplin wants to merge 1 commit into
mainfrom
swift6-modernization
Open

Swift 6 modernization: end-to-end reference app on the modernized stack#25
taplin wants to merge 1 commit into
mainfrom
swift6-modernization

Conversation

@taplin

@taplin taplin commented Sep 1, 2026

Copy link
Copy Markdown

Summary

Replaces the old single-file Perfect 3-era starter (Sources/PerfectTemplate/main.swift) with a
full reference application demonstrating this ecosystem end to end: a blog-style "Posts" CRUD web
app wiring together Perfect-NIO, Perfect-CRUD, Perfect-MySQL, and Perfect-Logger — JSON API, MySQL
persistence, structured logging, and a static browser UI. This is the last of the initially-planned
wave of PRs in this rollout — it lands last because it depends on everything else.

Also lowers the macOS platform floor from 26 to 12, matching the rest of this org's modernized
packages — confirmed no macOS 26-only API is actually used in the source; same pattern as several
other repos already fixed in this rollout.

Note on branch history: this PR's source branch had to be rebuilt from scratch partway through
— the taplin fork this modernization work happened in turned out to be an independently-created
repo, not a real GitHub fork of this one, so its history was completely unrelated to this repo's
real history. The branch now pushed is built directly on top of this repo's actual main, with the
modernized content applied as a single commit — not a squash of unrelated history. While rebuilding
it, the old repo's LICENSE/LICENSE.zh_CN files (which the disconnected fork had silently never
carried forward) were restored rather than dropped. README.zh_CN.md was not carried forward, since
the English README was rewritten in full and an unsynced translation would be actively misleading.

Compatibility

  • swift-tools-version: 6.2, platforms: [.macOS(.v12)] (was .v26)
  • Depends on Perfect-NIO,
    Perfect-CRUD,
    Perfect-MySQL, and
    Perfect-Logger — all merged
  • Package.resolved is now committed (the old .gitignore excluded it — not recommended practice
    for an executable app, fixed as part of the .gitignore cleanup here)

Verification note

This is an executable app, not a library with its own test suite — verified via a full swift build
from a clean .build, resolving all four sibling dependencies directly against this org's real
merged main branches. One expected, environment-specific linker warning (Homebrew's bottled
libmysqlclient built for a newer macOS than this package's declared floor) — a local toolchain
version mismatch, not a code defect, already documented behavior in Perfect-MySQL's own README.

…nce app

Replaces the old single-file Perfect 3-era starter (Sources/PerfectTemplate/main.swift)
with a full Posts CRUD reference app on the modernized stack. LICENSE/LICENSE.zh_CN
carried forward unchanged from the original; README.zh_CN.md dropped since it would
otherwise be left silently out of sync with the fully rewritten English README.
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.

1 participant