NFsim is currently structured primarily as a standalone executable. It should also support first-class in-process/library use.
The architectural goal is simple:
- the core NFsim runtime should be usable as a library inside another process
- executable-specific behavior should live in the CLI layer, not throughout the runtime
In practice, library use should allow an embedding application to:
- run NFsim in-process
- control how messages and diagnostics are handled
- handle failures through library-facing mechanisms rather than executable-style process behavior
We are confident this is doable because of downstream work we have already done to run NFsim in-process instead of spawning the executable. In that work, NFsim is built as a library, called directly from a host process, and used successfully in normal simulation/fitting workflows. That experience makes us confident that library mode is both practical and valuable.
This issue is not meant to prescribe the exact implementation plan. The point is to state the desired end state clearly: NFsim should support both standalone executable use and embedded/library use as first-class modes, with a cleaner separation between the runtime layer and the CLI layer.
If this direction sounds reasonable, we will provide validated patches.
NFsim is currently structured primarily as a standalone executable. It should also support first-class in-process/library use.
The architectural goal is simple:
In practice, library use should allow an embedding application to:
We are confident this is doable because of downstream work we have already done to run NFsim in-process instead of spawning the executable. In that work, NFsim is built as a library, called directly from a host process, and used successfully in normal simulation/fitting workflows. That experience makes us confident that library mode is both practical and valuable.
This issue is not meant to prescribe the exact implementation plan. The point is to state the desired end state clearly: NFsim should support both standalone executable use and embedded/library use as first-class modes, with a cleaner separation between the runtime layer and the CLI layer.
If this direction sounds reasonable, we will provide validated patches.