This is a note on how most modern program languages have important capability attributes and most modern operating systems do not. From the name of this site you might guess that I favor those capability attributes.

By operating system I mean here what are the rules that govern whether a program running within can access

Modern operating systems have learned to protect one running program from another with regards to storing data in memory, but not so much in regards to storing data in ‘files’. When a compiler in Unix needs a temporary file during the computation it resorts to generating a long complex name in hops that no other program will stumble on that name.

Several decades ago “memory” meant core and the system might have a few million bits of it. Files might mean disk and you might have a few billion bits of that. Habits were set then that have morphed into committed beliefs today. Those habits were bad even then.

Then and now I write a program with a textual name “temp” for instance. The compiler and loader combination would assign a binary number—an address—to that variable and the running program would use that constant number to access the variable value of temp. If the language were safe then that address .........