This PR makes the library compatible with the SystemExtensions API, which is the only way to distribute NetworkExtension packet tunnel providers via Developer ID. Specifically, this PR replaces the use of runloops with GCD queues, as system extensions don't have default access to a runloop.
This PR makes the library compatible with the SystemExtensions API, which is the only way to distribute NetworkExtension packet tunnel providers via Developer ID. Specifically, this PR replaces the use of runloops with GCD queues, as system extensions don't have default access to a runloop.