[FEATURE] Python on NuttX: known issues, "TO-DO" list, and general enhancements

Open
#2,884 6 comments 2 reactions 1 assignee View on GitHub

@tmedicci is already working on this.

Since Dec 9, 2024.

Assessment

This issue has not been assessed yet.

Description

Area: Interpreters
Is your feature request related to a problem? Please describe.

After https://github.com/apache/nuttx-apps/pull/2879 was merged, it's time to make Python on NuttX fully usable!

This issue intends to discuss the next steps required to make it fully functional, including a "To-Do" list and any discussions on how it would evolve to support other architectures and platforms.

Initial Considerations

  1. Python for NuttX target initially the rv-virt (RISC-V QEMU). That being said, its interpreters/python/config.site and interpreters/python/Setup.local are somehow tied with the features enabled by the boards/risc-v/qemu-rv/rv-virt/configs/cpython/defconfig. Python for NuttX depends on CONFIG_EXPERIMENTAL!
  2. Python modules are stored in pyc (byte-code format) and are loaded from a ROMFS image at startup.
  3. Environment variables like PYTHONHOME and PYTHON_BASIC_REPL needs to be set accordingly.
Describe the solution you'd like

TO-DO list:

This is the list of the next steps to make Python's port fully functional (sorted by highest priority):

  • Provide a CMake-based build: currently we can only build it using Make.
  • Generate interpreters/python/Setup.local and interpreters/python/config.site dynamically according to the enabled configs. For instance: export ac_cv_func_pipe="yes" depends on CONFIG_PIPES being enabled.
  • Create a wrapper application to automate the 1) mounting the ROMFS image with the Python's modules, 2) setting the environment variables and 3) running the Program/python.c app.
  • Support Python's socket module. This is one of the most important modules to enable Python applications with POSIX-compatible sockets .

Known Issues

Describe alternatives you've considered

No response

Verification
  • I have verified before submitting the report.
Dominant language
C
Stars
465
Forks
782
Avg merge
3d 11h
Merged PRs (30d)
44

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from apache/nuttx-apps

All issues in apache/nuttx-apps

Similar issues

More C issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.