diff --git a/Sources/Portico/MainLoop/GLibMainExecutor.swift b/Sources/Portico/MainLoop/GLibMainExecutor.swift index a6d350a..790423f 100644 --- a/Sources/Portico/MainLoop/GLibMainExecutor.swift +++ b/Sources/Portico/MainLoop/GLibMainExecutor.swift @@ -216,6 +216,18 @@ nonisolated func portico_executor_destroy_notify(_ data: UnsafeMutableRawPointer } #if canImport(Glibc) + +/// `MainExecutor` refines `RunLoopExecutor & SerialExecutor` without adding +/// further requirements, but Swift protocol refinement is one-directional: +/// conforming to the two parent protocols separately does not implicitly +/// satisfy the refined protocol, so the existential conversion to +/// `any MainExecutor` below needs this explicit (requirement-free) +/// conformance declaration. Scoped to Linux because `MainExecutor` carries a +/// high Darwin `@available` floor that `GLibMainExecutor` should not +/// inherit on Apple platforms, where it is used only as a plain +/// `SerialExecutor` and never installed as the process main executor. +extension GLibMainExecutor: MainExecutor {} + // MARK: - Factory /// Installs ``GLibMainExecutor`` as the process main executor via the