Will the Fortran Community participate at GSoC 2024?

I would like to propose the following for fpm and call for prospective mentors to fpm-related projects.
If this is of interest, maybe it could replace the following '23 proposals:

  • Source Code Distribution with Foreign Build Systems (fpm) → embedded
  • Support for C++ (fpm) → was discarded last year
  • Parallel builds (fpm) → embedded

The focus would be on strengthening the fpm build process addressing the following reqiests from the community:


Fortran Package Manager: Build Process Enhancements

Project Overview:
Fortran Package Manager (fpm) is pivotal for long-term Fortran success. This GSoC project aims to improve fpm’s build process by improving dependency detection, optimizing linking, implementing shared libraries, ensuring safe concurrent builds, and introducing external Makefile generation.

Project Tasks:

  1. Dependency Detection:
    • Enhance fpm’s dependency detection to minimize rebuilds by parsing or hashing module/submodule files or parsing procedure interfaces in module files. fpm should not rebuild dependencies to a module whose public interface has not changed.
  2. Linking Optimization:
    • Replace one-liner linking with static libraries to prevent line buffer overflow in Windows builds.
  3. Shared Library Implementation:
    • Introduce support for shared library targets for project flexibility.
  4. Safe Concurrent Builds:
    • Implement file locking for safe concurrent invocations, especially during OpenMP builds, to prevent data corruption.
  5. External Makefile Generation:
    • Enable generation of external Makefiles akin to cmake -G for advanced project configuration.

Expected Outcomes:

  • Enhanced dependency tracking and reduced rebuild times.
  • Improved reliability in linking, particularly in Windows.
  • Increased project versatility with shared library support.
  • Safer concurrent builds through file locking.
  • Greater project configuration flexibility with external Makefile generation.

Difficulty:

Intermediate, 175 hours.

Mentors:

Project Repository: GitHub - fortran-lang/fpm: Fortran Package Manager (fpm)

Prerequisites for Applicants:

  • Proficiency in Fortran.
  • Understanding of package management and build systems.
  • Strong software development skills.

Conclusion:
This GSoC project invites contributions to improving the Fortran Package Manager strengthening and speeding up its build process.

4 Likes