Introducing thread-safe Tramp

From: Michael Albinus Subject: Introducing thread-safe Tramp Date: Mon, 23 Jul 2018 17:58:39 +0200 User-agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux)

Hi, I have created a new branch feature/tramp-thread-safe. The major change is making Tramp thread-safe, that means, several basic file operations can run concurrently now. Being a library, Tramp does not create new threads on its own. This must be performed by the callers. I have changed the `find-file' family of commands to raise their underlying file operations asynchronously if indicated. Every visiting of a file happens in its own thread then. If wildcards are used, one thread per involved file is created. In order to enable this, the respective command must be called with a prefix argument, like "C-u C-x C-f ...". Emacs will remain responsive, you can continue with whatever operation. This will be best seen with remote files, because they need more time to load into a buffer. Emacs is not as responsive yet as I hoped to achieve; further optimization is needed. As second change, I have modified `vc-refresh-state' to run always in its own thread. This is because I have observed, that for git repositories, loading a remote file is often much faster than the following update of its state in the modeline. For the time being this behaviour is hard-coded, I haven't seen any drawback for this even for local files. But we could trigger it also via a user option. @Dmitry? Please give it as much testing as possible. I cannot promise Emacs won't crash ever with these changes, so it is not time for production systems. But all bug reports and feedbacks will help to improve this new feature. And, if there are not too serious complaints, I will merge it into master after a while :-) You are warned! Best regards, Michael.

reply via email to

