2 ms·
I'm not overly familiar with Plan 9, but a significant advantage of the filesystem as an API is that it composes well. You can put any service inbetween that co
by majewsky 6y ago
I'm not overly familiar with Plan 9, but a significant advantage of the filesystem as an API is that it composes well. You can put any service inbetween that consumes the existing file and provides a new file with the same API contract, but different behavior (e.g. a /dev/screen that's cropped to a certain area, or that inverts colors on everything drawn into it). Then you can make a new mount namespace where the new file is put in the place of the old file, so that the actual process consuming it has no idea that someone is sitting in the middle. With a traditional shared object, you'd have to engage in LD_PRELOAD shenanigans to achieve the same, or if the library is statically linked and does not have any hooks, you're straight out of luck.
- bombela 6y agoIn other words, it gives you a system wide way to override any APIs. As long as you are compatible with the ABI of course.
- majewsky 6y agoAt the cost of probably making all APIs a bit less efficient. Now I wonder if any Plan 9 derivative offers a 3D rendering API?
- pjmlp 6y agoNo, and even for 2D it lacks acceleration.
- nix23 6y agoNot true: http://www.cs.cmu.edu/~412/lectures/2009-10-23_radeon.pdf http://www.cs.cmu.edu/~412/lectures/2009-10-23_radeon.pdf >>Provide 2D acceleration via the 3D engine.
- pjmlp 6y agoI stand corrected, however 2009 is already past the time I was paying attention to Plan 9.
- kragen 6y agoAs explained in the abstract of the paper I linked above, 8½, the Plan 9 window system, has supported 2-D acceleration since at least 01992. I also mentioned this in my comment, which additionally outlines how this acceleration support works across networks.