Are there know ways that io_uring would leak through such an abstraction?
It says "CPU tasks are spread across multiple threads", but what CPU tasks does a file manager perform?
io_uring is for use cases where the context switch overhead of system calls starts to matter. While async I/O can be justified for U/I programming, it's safe to say that a file manager won't ever benefit from io_uring.
> There are many scenarios that require CPU, such as image downscaling, image encoding, code highlighting, sorting large directories, etc.
If you want to delve further into Yazi's inner workings, you can see https://github.com/sxyazi/yazi/issues/143
Unless you have millions of CPU cores and therefore many downscaling/encoding/highlighting tasks starting/finishing every second, I still don't see what io_uring brings to the table.
Running tasks in the background does NOT require io_uring.
I don't use it for everything and I still copy/move files a lot without it. But it accelerates some things and is simple to use.
This is something we can consider for our future work, as it's not the current performance bottleneck.
For more details: https://github.com/sxyazi/yazi/issues/143
"async Io" doesn't mean a ton to me, other than hopefully not blocking. It'd be cool to have a great well integrated terminal file manager that uses high performance io_uring.
That said, I have a hard time figuring out when & where I'd want to use terminal file managers. I like the idea, but the flexibility of the shell is so unparalleled.