On Feb 15, 2021, at 11:56, Jon Steinhart
<jon(a)fourwinds.com> wrote:
Was thinking about our recent discussion about system call bloat and such.
Seemed to me that there was some argument that it was needed in order to
support modern needs. As I tried to say, I think that a good part of the
bloat stemmed from we-need-to-add-this-to-support-that thinking instead
of what's-the-best-way-to-extend-the-system-to-support-this-need thinking.
So if y'all are up for it, I'd like to have a discussion on what abstractions
would be appropriate in order to meet modern needs. Any takers?
The folks behind the Nerves Project (
https://www.nerves-project.org) have done some
serious thinking about this question, albeit mostly confined to the IoT space. They have
also written (and distribute) some nifty implementation code.
I won't try to cover all of their work here, but some high points include:
- automated build and cross-compilation of entire Linux-based systems
- automated distribution of (and fallbacks for) updated system code
- separation of code and data using read-only and read/write file systems
- support for multiple target platforms (e.g., processors, boards)
- Erlang-style supervision trees (via Elixir) for critical services, etc.
- extremely rapid boot times for the resulting (Linux-based) systems
For more information, check out their web site, watch some presentations,
and/or (gasp!) try out the code...
-r