The AppleArchive
module is pretty cool, but it relies almost entirely on two stream types, ArchiveByteStream
and ArchiveStream
, which don't really work well in a Swift Concurrency-based workflow since they all use thread-blocking mechanisms like pthread mutexes for synchronization, and threads in the cooperative pool should not be blocked. They also use their own thread pools for processing, independently of the cooperative thread pool, making it easy to end up with more threads than one has cores. (Perhaps even more so if you try to compress/decompress multiple files at once? The documentation isn't clear on whether separate archive operations share the same thread pool or not, but since it allows you to choose the size of the pool, it seems that these may be separate from each other as well.)
Are there any plans for an interface to Apple Archive that would fit better with the structured concurrency model?
May I suggest that you request this as a new feature via https://feedbackassistant.apple.com?
To file an enhancement request, use Feedback Assistant. In the “What type of issue are you reporting?” popup, choose Suggestion.
Thanks!