It’s unfortunate to me that things like shared memory and IPC on linux have been unpopular or ugly enough that these aren’t the standards.
It seems like this connection management and tcp-accept job scheduling is such a common thing, it’s almost offensive that it’s not centralized in a few implementations.
inetd is pretty unused these days, isn’t it? I can’t even recall the last time I used it.
Maybe it should be removed from a few base installs, and put into ports or something?
Aside: That is one thing I really like about the OpenBSD project. They actually remove crufty old things sometimes!
OpenBSD has inetd(8) in base. It is just disabled by default.
One handy trick I’ve used it for recently in production is wiring-up port redirections using nc as the server spawned by inetd.
OpenBSD still includes a CGI daemon too.
Like CGI, you just wish that fork, exec, and reap were faster. :-)
If you have ever used djbdns, you’ve also used ucspi-tcp, which is djb’s take on the super-server idea.
Almost every time I start writing a Go or node.js program, I start off by writing a tiny server. It’s not a lot of boilerplate, but it’s always there. The self-containment is nice, but I wonder how many times I want to write and tune the same server variations. When it comes to node, the minimal server snippets are nice, but you usually end up with some mixture involving the cluster module, or instrumenting for PM2 or naught. It would be nice to skip all that and focus on writing the fun part of the app, and let some other program worry about the networking.