If you want a multithreading Emacs contribute to https://github.com/lem-project/lem. That will probably get you there faster than with Emacs.
Truth is it isn’t Emacs that you want, but the features it has. Just replicate them in Lem.
A lot of very useful software is not multithreaded. Hell, javascript is not multi-threaded.
I believe every major UI toolkit in use is single threaded.
I’m gonna vote yes. I’ve been using Emacs since 2008, but if I had to start again today I would probably not pick it up, lack of multithreading is partially why.
I think the question is malformed. It’s obviously not a deal breaker for the vast majority of the people in this subreddit, but I bet a good percentage of people would enjoy it.
No, but it would be nice to have some day in the near future.
Multithreading is a grand good source of instability and bugs, please don’t.
Multiprocess if you must, but unless you have a language like erlang / elixir multithreading is a bug prone nightmare.
I mean, multithreading is always welcome and I see its uses, even for emacs, however I cannot think of any primary uses where it could possibly be a dealbreaker not to have.
I like the lack of multithreading because it makes programming Emacs extensions simpler.
Yep - there’s a reason asyncio event loop programming is popular in Python/JS/Rust etc… People act like it’s a crusty old inferior technique to the delights of multi-threading. In reality it often keeps things much simpler, is very powerful, and only leads to blocking behavior when it’s badly coded.
Is this about Elisp threading or Emacs using threads to implement rendering and executing Elisp etc?
The only “performance” issue for me is lsp - but that tends to be at first run on a large framework. And since my “old” laptop (x1c6) is about 1000x faster than the one I started using emacs on in the early 2000s it really isnt an issue.
Less haste, more speed…
It might not be a dealbreaker for me per say, but it’s absolutely something that should be included one day.
Out of curiosity - what are your use-cases where the lack of multi-threading is an issue?
Tramp
No detail in your response. How would Tramp benefit from multithreading in any way that isn’t achievable already with an asynchronous approach?
Are you sure the problem there is threading? I’m pretty sure it is not. There’s very little CPU usage. The problem is TRAMP is written synchronously when it should be asynchronous, not that it doesn’t have threads.
Dealbreaker? No. Major issue? Yes.
Anything over network really needs multithreading. The async hacks are ok, but eventually everything has to sync up again, which is a giant freeze on everything.
What evidence do you have for this?
Magit
Networking activity is a prime example of something where threading is least likely to be a clearly superior solution. Heavy CPU use is where threading may be the superior choice and a single event-loop thread is not. IO waiting is not.
Since I use Emacs solely for text creation/manipulation, and I don’t know what multithreading is, I voted No.
I dream of a world gnus wont hang emacs.
I live in that world by outsourcing article fetching to external services and storing all messages/articles locally. The basic setup is this:
Emails:
- Offlineimap syncs 2 Gmail accounts and connects directly to…
- Dovecot as an IMAP server. Dovecot, stores the emails in Maildir format and Gnus’s nnimap backend gets them from the local Dovecot server.
RSS/Atom feeds:
- A program called Feed2exec saves RSS and Atom feeds in Maildir format. Dovecot monitors those folders and serves them to nnimap along with the emails. There is at least one other program that fetches newsfeeds to Maildir, but Feed2exec is in debian.
All 3 of these services do their job regardless of whether Emacs is running, and nnimap is super fast when the server is local.
I don’t read actual newsgroups anymore. If I did, I’d install Leafnode for them. But I wonder if the nntp backend would benefit to the same extent that nnimap does.
I’m also using Gnus with IMAP directly too but connecting to a remote Dovecot on my root server. Fetching takes maybe 1 or 2 seconds at max.
I filter all my mails on my server before hand.
I guess you should try Commercial Emacs, then.
If the author could only communicate better and bring his changes upstream…
I tried to see what do make of his first patch against Emacs 28 that bring threading to Gnus however it was quite hard to rebase/split them up as the original patch was just one big blob.
E.g. he doesn’t just add threading to Gnus but also remove or rename variables, e.g. secondary select methods. He doesn’t explain changes, he adds unnecessary or rude comments to the commits or code.
I didn’t say it would be easy. ;)
For professional work, yes, for just goofing off at home, no
You’ll need to explain that to those of us who use Emacs for professional work. What fails for you? In particular, what fails that needs threading to be resolved?
The part where I need to type something, but the process is blocked