For a systems language execution environment there is a huge list of crucial questions: what is a library, what is a package, how does linking works, how do you interact with different build systems, how you separately compile having only interface declarations, how to manage alternative libraries for the same interface, how to tweak compilation for multiple targets, how do you ffi? The answers to all of the above wi…
These all are excellent questions for someone making a systems language, but that's not quite what I had in mind. I'm more interested in surveying the boundary between systems and application languages, rather than exploring the design space for a systems language. In other words, what Python, Haskell or JavaScript lack that systems languages must have?
- Static typing. System-level programming often has more complete requirements and more stable requirements than, business information applications. Languages for system-level programming should utilize that.
- Ability to run without heavy runtime-system.