Skip to content

contractual disappointment: determinism might be overreaching #52

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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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