Hacker News new | ask | show | jobs
by horsh1 913 days ago
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 will have an impact on your language features: how you import, how you declare foreign entities, what visibilities are possible, what data storage classes are theere, what is the module initialization order, what code can be executed during module initialization, what is your conditional compilation mechanisms?

1 comments

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?

- Predictable memory layout of data structures.

- 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.