C#/.NET Port #4925
Replies: 2 comments 4 replies
-
|
While I don't have any specific interest in C#/.NET, I think expanding F Prime to support a wider range of programming languages is a great idea. The port call abstraction provides a reasonably clean way to interoperate between software built in different languages, and I think being able to rapidly prototype software in a more powerful language and then incrementally convert components to a more robust language would be very powerful. I would recommend this sort of integration (where the existing F Prime framework is extended to support more languages) over a per-language rewrite. |
Beta Was this translation helpful? Give feedback.
-
|
Hi @alvahdean, Inter-language operability has been shown for Python. See the reference project. The boundaries between components are all modeled outside of C++ in FPP and therefore allow you to generate code to bridge between C++ and other languages/runtimes. I'd recommend you look through this reference project and see if it meets your needs/can be adapted to your language. While the F' framework will remain C++ for the foreseeable future, we have been exploring the idea of providing more bridges between languages and other frameworks which you can read about in our roadmap. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
I'd like to solicit the community's thoughts on a C#/.NET port of the F´.
Notwithstanding the obvious performance and determinism requirements that .NET cannot satisfy, a full F' framework port would enable a broader developer audience to engage with the ecosystem using modern tooling, strong type safety, While I have no expectations it will qualify for hard real-time application scenarios, it would complement them by supporting rapid prototyping, ground systems integration, simulation environments, and mission scenarios where strict hard real-time guarantees are not required.
A primary concern with adopting C# for flight software is its reliance on garbage collection, which introduces non-deterministic pauses incompatible with hard real-time constraints. This limitation is acknowledged, and the proposed approach is to clearly scope the use of C# to domains where soft real-time or non-real-time behavior is acceptable. Additionally, modern .NET capabilities—including ahead-of-time (AOT) compilation, constrained allocation patterns, and emerging low-latency GC modes—offer opportunities to mitigate some concerns in controlled environments. The intent is to explore these tradeoffs transparently while maintaining alignment with the documented F' architecture and framework.
I'm hoping to get some feedback from the community on the viability, scope, and potential use cases for such a port. Specific areas of interest include appropriate architectural boundaries between C# and existing C++ components, candidate subsystems for early prototyping (e.g., ground data systems, simulation adapters, or non-critical onboard services), and tooling integration with existing F´ workflows.
Beta Was this translation helpful? Give feedback.
All reactions