M Starch e0dc2e7424 Remove FprimeRouter Copy (#4984)
* Remove unnecessary buffer allocation/copy in FprimeRouter for file and unknown packets

Instead of allocating a new buffer and copying data for file and unknown
packet types, pass the original buffer directly to the receiver. The
buffer is not returned to the deframer via dataReturnOut until it comes
back on fileBufferReturnIn, at which point an empty context is
constructed for the return.

This eliminates the need for bufferAllocate and bufferDeallocate ports,
as well as the AllocationReason enum and AllocationError event.

Co-Authored-By: michael.d.starch <michael.d.starch@jpl.nasa.gov>

* Remove dangling fprimeRouter buffer allocation connections from subtopologies

Co-Authored-By: michael.d.starch <michael.d.starch@jpl.nasa.gov>

* Move dataReturnOut into each switch case instead of using early returns

Co-Authored-By: michael.d.starch <michael.d.starch@jpl.nasa.gov>

* Fix formatting: remove extra blank line

Co-Authored-By: michael.d.starch <michael.d.starch@jpl.nasa.gov>

* Update Svc/FprimeRouter/docs/sdd.md

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Address review: empty context on all return paths, clarify buffer return contract, document context discard

Co-Authored-By: michael.d.starch <michael.d.starch@jpl.nasa.gov>

* Clarify SDD: receivers must return buffers via fileBufferReturnIn

Co-Authored-By: michael.d.starch <michael.d.starch@jpl.nasa.gov>

---------

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-04-09 17:10:37 -07:00

A Flight-Proven, Multi-Platform, Open-Source Flight Software Framework



F´ (F Prime) is a component-driven framework that enables rapid development and deployment of spaceflight and other embedded software applications. Originally developed at the Jet Propulsion Laboratory, F´ has been successfully deployed on several space applications. It is tailored but not limited to small-scale spaceflight systems such as CubeSats, SmallSats, and instruments.

Please Visit the F´ Website: https://fprime.jpl.nasa.gov for more information.

What does F´ provide

  • An architecture that decomposes flight software into discrete components with well-defined interfaces
  • A C++ framework that provides core capabilities such as message queues and threads
  • Modeling tools for specifying components and connections and automatically generating code
  • A growing collection of ready-to-use components
  • Testing tools for testing flight software at the unit and integration levels.

Learn more about F´ key features.

System Requirements

The following system requirements apply to your workstation for developing F´ applications. To see the list of supported platforms on which F´ applications can run on, see Supported Platforms.

  1. Linux, Windows with WSL, or macOS operating system

  2. git

  3. Python 3.9+, virtual environments, and PIP

  4. Clang or GNU C and C++ compilers (e.g. gcc and g++)

Click to Expand: How to Verify System Requirements
  1. git --version

  2. python --version and python -m venv -h. Your system might use an alternate like python3 or python3.13. For pip: pip --version. On your system it might be pip3 or pipx.

  3. g++ --version and then create, build, and run a test program. For example, create a file named hello.cpp with contents:

    #include <iostream>
    int main(void){
        std::cout << "Hello, World!" << std::endl;
    }
    

    then build and run it, for example like:

    % g++ -o hi hello.cpp
    % ./hi
    Hello, World!
    

Getting Started

To get started with F´, install the F´ bootstrapping tool with:

pip install fprime-bootstrap

Then, create a new project with:

fprime-bootstrap project

See the HelloWorld Tutorial to guide you through all the steps of developing an F´ project.

New users are encouraged to read through the User Manual and explore the other tutorials.

Getting Help

Discussions

To ask questions, discuss improvements, and ask for help please use the project's GitHub Discussions.

Bug reports

To report bugs and issues, open an issue here.

Community

The F´ Community GitHub Organization contains third party contributions, more documentation of flight software development, and additional resources.

Resources

Meet the Team

The following roles are members of the CCB and per our governance document have decision making power within the framework.

Role Team Member
Community Manager @LeStarch
Community Manager @thomas-bc
Community Manager @kevin-f-ortega
Security Overseer @bitWarrior
CCB Member @bocchino
CCB Member @kevin-f-ortega
CCB Member @SterlingPeet
CCB Member @timcanham
CCB Member @zimri-leisher

Each product has a set of Maintainers who are charged with the day-to-day implementation of the CCB's direction as realized in a by product.

Product Core Maintainer(s)
F Prime @LeStarch, @thomas-bc
F Prime (v3.6.x Maintenance) @SterlingPeet
fprime-tools @thomas-bc, @LeStarch
fprime-gds @thomas-bc, @LeStarch
fpp @bocchino, @Kronos3
F Prime Platforms @kevin-f-ortega, @LeStarch
Security @bitWarrior

Release Notes

The version history and artifacts associated with the project can be found at Releases.

Description
v4.0.0 Latest
2025-08-06 19:42:06 -05:00
Languages
C++ 86.2%
CMake 5.9%
Fortran 5.1%
Python 1.5%
C 1.1%
Other 0.2%