PHP Monitor was originally written before Swift 6 and strict concurrency checks were a thing.
I've been doing a quick look every year or so to see if it's gotten any easier to migrate this codebase to Swift 6.
It'll be a tad tricky, but I think next year is the ideal time to bite the bullet.
Currently:
- PHP Monitor uses Swift 5 and so the inherited default is basically
nonisolated async behavior
- I've been improving Swift concurrency usage in various places
- Some legacy code and framework use remains
- I've recently adopted
NSLock for some features where an easy refactor to proper Swift actors was not possible
- I've tried the
MainActor default setting (there's work to do!) in Xcode 26 and there's a bit of work required
- Some legacy code related to hotkey management may need to become a package w/ Swift 5 mode because it's troublesome
- Some code related to the warning system won't compile in Swift 6 mode
- I have not tried the strict checks with Swift 5 yet, which I should do soon enough
I am curious to see how tools like Claude Code could be of use for me for this kind of stuff. I've definitely been able to identify some bugs and issues and resolve problems by asking for more information via LLMs.
Previous investigation:
Current status:
Working on it.
PHP Monitor was originally written before Swift 6 and strict concurrency checks were a thing.
I've been doing a quick look every year or so to see if it's gotten any easier to migrate this codebase to Swift 6.
It'll be a tad tricky, but I think next year is the ideal time to bite the bullet.
Currently:
nonisolatedasync behaviorNSLockfor some features where an easy refactor to proper Swift actors was not possibleMainActordefault setting (there's work to do!) in Xcode 26 and there's a bit of work requiredI am curious to see how tools like Claude Code could be of use for me for this kind of stuff. I've definitely been able to identify some bugs and issues and resolve problems by asking for more information via LLMs.
Previous investigation:
dev/swift-6branch with the latest 25.12 changesRemove hotkey management code into separate NV package)nonisolateddefault, 25 secMainActordefault, unsure if it's my fault)Current status:
Working on it.