big huge actually important breakthrough https://circumstances.run/@hipsterelectron/116961115914825897 the page cache that POSIX demands is deeply analogous to the single global address space in the C abstract machine model. but C is a language, and we can achieve safety through the frontend. the POSIX page cache requires your computer hardware to maintain globally-addressable memory across all processes and threads. that is not solvable in the frontend. that is a backdoor at the hardware level, which is maintained by the OS.
@rysiek i'm sure you recall copy dot fail. i have written what i consider low-level i/o code for years, and that vuln was the first time i had ever heard about the linux page cache. it's not well-known (because the POSIX spec actively obfuscates it), but one of the very few hard requirements that POSIX demands is the immediate global visibility of any write() call (along with an "atomic" ordering which is literally not specified). POSIX describes this in terms of torn writes (which is a userspace i/o semantic), but it then imposes this global (cross-process!!!!) mutable data store in the kernel. this is completely fucked.