Skip to content

contractual disappointment: determinism might be overreaching #52

@the-real-neil

Description

@the-real-neil

These are some very big asks:

#### Safety-Critical System With Redundancy

#### Performance-Critical/Resource-Constrained

#### Realtime Processing

Even without considering the (very) necessary support required from the hardware, kernel, and OS API --- these are some very difficult subject areas to be tackled by any language. When a systems developer hears the words "safety", "critical", "determinism", and/or "real-time", she mentally tacks $1M onto the project. These are not things you get for free. What you do get --- after paying dearly for them --- is relatively slow SoC, a proprietary kernel, and a proprietary toolchain supporting C89 (or at least a decent subset thereof).

This not to say C++ folks should not be striving for what you lay out. I do admire your aspiration to tackle these issues as C++ language problems, but there is so much in the C++ language that is inimical (if not mutually exclusive) to any of the four referenced points.

Take, for example, the C++ language feature of virtual functions. These are usually implemented with a vtable whose size, composition, and performance are very much implementation-defined. How might such a vtable behave in a "hard" real-time system?

Consider dynamically-linked and dynamically-loaded libraries as practiced by most of us shipping shared objects. What kind of guarantees can you make about the behavior of an executable before certain functionality is loaded?

I'm sure there are other examples, but the gist of my argument should be clear: in a language like C++ --- one that supports relatively complicated run-time behaviors like dynamic dispatch and exception handling --- determinism is a lot more complicated.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions