> Inferno represents services and resources in a file-like name hierarchy. Programs access them using only the file operations open, read/write, and close. `Files' are not just stored data, but represent devices, network and protocol interfaces, dynamic data sources, and services.
Great. But `open()` needs to be hyper-extensible. Think of URI q-params and HTTP request headers as `open()` options. Think of all the `ioctl()` APIs that have arisen because "files" are a relatively poor way to represent devices. But most importantly `open()` needs to be async.
I'd be very interested in an OS where all system calls that can block are async, and where something like io_uring is the only way to make system calls.
The "everything is a file" thing is fine, but we need more innovation around that if that metaphor is going to stick.
Great. But `open()` needs to be hyper-extensible. Think of URI q-params and HTTP request headers as `open()` options. Think of all the `ioctl()` APIs that have arisen because "files" are a relatively poor way to represent devices. But most importantly `open()` needs to be async.
I'd be very interested in an OS where all system calls that can block are async, and where something like io_uring is the only way to make system calls.
The "everything is a file" thing is fine, but we need more innovation around that if that metaphor is going to stick.