Passer au contenu
cd /languages
  • Héritage scientifique
  • Programmation
  • Prise en charge de l’AST et des symboles

Fortran dans Maguyva : des graphes de code pour le calcul scientifique

Maguyva prend en charge Fortran avec AST, symboles et graphe, pour que les agents IA suivent sous-programmes, modules et types dérivés avant de modifier du code numérique.

Pourquoi Fortran demande de la structure, pas de la recherche de chaînes

Les bases de code Fortran sont souvent anciennes, volumineuses et écrites par des spécialistes du domaine plutôt que par des équipes logicielles. Les routines nommées SOLVE, Solve et solve sont une seule et même routine. Les modules sont partagés par des centaines de fichiers, et la bibliothèque des procédures intrinsèques est si vaste qu’une liste d’appels naïve contient surtout SQRT, SUM et WRITE.

Un agent qui se contente de grep se noie dans ce bruit. Maguyva lui donne d’abord la structure : quelles unités de programme existent, quels modules elles utilisent et quelles routines utilisateur s’appellent entre elles.

Ce que Maguyva extrait en Fortran

Maguyva couvre les sources en format fixe et libre (.f, .for, .ftn, .f90, .f95, .f03, .f08). Les fonctions et sous-programmes sont extraits comme symboles appelables, et les types dérivés peuvent être sélectionnés comme définitions de type dans la recherche structurelle.

La correspondance des symboles ignore la casse, comme le fait Fortran. Les relations d’import proviennent de use et include, le mot-clé étant retiré pour que le graphe stocke le nom du module. Les appels, lectures, affectations, références de type et l’héritage des types dérivés étendus font aussi partie du graphe.

Le filtre de relations écarte environ 165 procédures intrinsèques (instructions d’E/S, routines mathématiques, de tableaux, de chaînes, de conversion de type et de manipulation de bits), si bien que les arêtes restantes pointent vers votre propre code.

Exemples de prompts pour agents

  • « Quels sous-programmes appellent compute_flux, et quels modules utilisent-ils ? » (find_symbol, puis dependency_search en incoming)
  • « Retrace comment les conditions aux limites sont appliquées dans la boucle du solveur. » (get_task_context)
  • « Trouve toutes les unités de programme qui utilisent le module constants. » (text_pattern_search sur use constants, puis find_symbol)

Limites connues

  • Fortran n’a ni décorateurs ni gestion des exceptions, ces types de relations sont donc marqués comme non applicables.
  • Les procédures liées à un type partagent les mêmes nœuds que les fonctions et sous-programmes ordinaires. Utilisez le préréglage functions dans structural_search ; le préréglage methods ne sélectionne aucun nœud Fortran.
  • Les appels aux procédures intrinsèques filtrées n’apparaissent pas comme arêtes du graphe. Utilisez text_pattern_search quand il vous faut chaque WRITE ou OPEN.

Étapes suivantes

Connectez un dépôt avec le démarrage rapide, puis consultez la matrice de prise en charge complète sur la page de compatibilité. Si votre Fortran côtoie du code de liaison C, lisez aussi le guide C.

Idéal pour

  • > Les équipes de recherche, d'ingénierie et HPC qui maintiennent des solveurs, simulations ou bibliothèques numériques Fortran plus anciens que l'équipe actuelle.
  • > Les dépôts qui mêlent des fichiers `.f` en format fixe à des modules `.f90` et plus récents en format libre, souvent à côté de wrappers C ou Python.
  • > Les revues assistées par agent où il faut d'abord savoir quels sous-programmes touchent un module partagé avant un changement numérique.

Workflows d'agent

  • > Retrouver les sous-programmes et fonctions qui appellent une routine de solveur avant d'en changer les arguments ou les unités.
  • > Lister les modules qu'une unité de programme importe avec `use` et remonter jusqu'à leurs définitions.
  • > Trouver où un type dérivé est déclaré et quelles procédures l'utilisent.

Détails du moteur

  • > La prise en charge de Fortran couvre les sources en format fixe et libre : `.f`, `.for`, `.ftn`, `.f90`, `.f95`, `.f03` et `.f08`.
  • > Les fonctions et sous-programmes sont des symboles appelables, la correspondance des symboles ignore la casse, et `use` et `include` deviennent des relations d'import.
  • > Environ 165 procédures intrinsèques (E/S, mathématiques, tableaux, chaînes, conversion de type et bits) sont filtrées des relations. Les relations de décorateur et d'exception sont marquées comme non applicables.

Points d'entrée MCP utiles

  • find_symbol

    Commencez par le nom du sous-programme, de la fonction ou du module ; la correspondance ignore la casse, comme Fortran.

  • dependency_search

    Utilisez la traversée incoming sur une routine de solveur ou de module partagé pour voir chaque appelant avant un changement numérique.

  • get_task_context

    Utilisez-le pour des prompts comme « retrace comment les conditions aux limites sont appliquées dans la boucle du solveur ».