Is RAII recommended in Swift?

Do I understand correctly that doing clean-up in, say, SIGTERM handler is explicit and implicit mechanisms mainly refer to the code in deinit?

Was it because the introduction of non-copyable type? But I think the exit-time clean up issue discussed in this thread applies to it too.

Take @spacecrafter3d's app as an example, a Connection instance may be destroyed when A) it's replaced by a new instance, and B) when the process exits. According to this thread, case B is unreliable (in this specific example, the websocket related network resource will be released by OS when the process terminates, so it's OK. But if it was app specific cleanup, such as saving data chagnes, it would be an issue). Since the root cause is due to the unstable environment on process exit, I don't think using non-copyable type can change it.