3 ms·
I think the other lesson to learn is that “everything is a …” abstractions don’t work as well in practice as in theory. All abstractions leak. The more surface
by RcouF1uZ4gsC 4y ago
I think the other lesson to learn is that “everything is a …” abstractions don’t work as well in practice as in theory.
All abstractions leak. The more surface area an abstraction covers, the more leaky it is likely to be.
- chillfox 4y agoThe "everything is a ..." is an incredible powerful abstraction type, but you really have to go all the way for it to really work well.
- jacquesm 4y agoIt actually works like a charm. The lack of adoption certainly isn't due to the 'everything is a file' abstraction layer, more because by the time it had been released to the masses the momentum in Unix / Linux was absolutely massive and super hard to overcome. And they in turn were under fire from Windows and Mac on the desktop, which left only an extremely small niche, one that was too small to be viable. But if you've ever worked with it then you will be longing for exactly those features forever and wondering why we did not manage to take more of its deep insights forward. A lot of really good ideas have been slaughtered on the altars of commerce and perceived performance improvements. As a result we are still developing software roughly the same way that we did 50 years ago, a model that wasn't ideal but that was good enough.
- NohatCoder 4y agoThe API/ABI structure of every modern OS is a hot mess, that has nothing to do with syscalls not being files, and everything to do with the way the systems have been extended over and over again for decades. Making a simpler API is a great idea, and from you comment I guess they mostly succeeded, but they did not have to go down the everything-is-a-file path to do that. What role this played in lack of adoption depends on what alternate course of action you compare it to. A non-file-based rewrite of the API would likely have had approximately the same result, in any case a good compatibility layer might have made a big difference.
- pjmlp 4y agoThere is a reason why high performance graphics and real time audio don't make use of file handles, rather shared memory (with different MMU configurations) between GPU, kernel code, drivers and userspace. Everything is a file is even slower than micro-kernels IPC.
- RcouF1uZ4gsC 4y agoHigh performance networking also uses shared memory. I wonder if MMU backed shared memory is a better “universal abstraction” than file handles (at least for high performance workloads).