Without having looked into it too deeply I feel that they are somewhat “cheating” by using a superserver to launch a new process for each connection, thus letting the OS handle the dynamic allocation needed for each connection.
Still pretty impressive project. Would be fun to take a deeper look at it at some point.
> […] thus letting the OS handle the dynamic allocation needed for each connection.
This is what PHK did when designing Varnish (IIRC): instead of dealing with lots of files on its own (like Squid), just create some files and do a malloc() on them and let the OS do the work:
It makes sense though - no memory management simplifies the codebase. Letting the host deal with it instead means you get the niceties of process level isolation and less complexity. More eyes are on the OS level code than would be on this project. It seems very clever to me.
throw0101a|4 years ago
This is what PHK did when designing Varnish (IIRC): instead of dealing with lots of files on its own (like Squid), just create some files and do a malloc() on them and let the OS do the work:
* https://varnish-cache.org/docs/trunk/phk/notes.html
One discussion (many others):
* https://news.ycombinator.com/item?id=4874304
mrich|4 years ago
It's a beautifully powerful function :)
https://man7.org/linux/man-pages/man2/mmap.2.html
hkt|4 years ago
zamadatix|4 years ago