Naar inhoud springen
cd /languages
  • Code met hoge integriteit
  • Programmeren
  • AST- en symboolondersteuning

Ada in Maguyva: specificaties, bodies en pakketgrafen

Maguyva ondersteunt Ada met AST, symbolen en graaf, zodat AI-agents pakketspecificaties, bodies, tasks en tagged types in langlevende Ada-systemen volgen.

Waarom Ada-repositories een afhankelijkheidskaart nodig hebben

Ada scheidt wat een pakket belooft (.ads) van hoe het dat doet (.adb). Dat is goed engineeringwerk en betekent ook dat één wijziging meerdere bestanden raakt die tekstzoeken niet voor je verbindt. Langlevende Ada-systemen voegen nog een laag toe: generics, tagged types, tasks en protected objects, waarvan de relaties belangrijker zijn dan welk afzonderlijk bestand ook.

Maguyva geeft een agent die afhankelijkheidskaart voordat hij een wijziging voorstelt, precies de volgorde die een review met hoge integriteit verwacht.

Wat Maguyva in Ada extraheert

Maguyva dekt .ads, .adb en .ada. Subprogrammabodies en procedure- en functiespecificaties worden geëxtraheerd als aanroepbare symbolen, zodat zowel de specificatie als de body van een routine doorzoekbaar is. Het matchen van symbolen is hoofdletterongevoelig, net als Ada zelf.

Imports komen uit with- en use-clausules; het sleutelwoord wordt verwijderd, zodat de graaf de pakketnaam opslaat. De graaf legt ook aanroepen vast, overerving en overrides bij tagged types, instantiëring, typeverwijzingen, lees- en schrijfacties, en randen voor het opwerpen en afhandelen van exceptions.

In structureel zoeken zijn tasktypes, protected types, recordtypes en interfacetypes te selecteren als typedefinities, en entry-bodies als methoden.

Voorbeeldprompts voor agents

  • “Welke eenheden hangen af van Flight_Control.Sensors, en welke van zijn subprogramma’s roepen ze aan?” (dependency_search incoming)
  • “Toon de specificatie en body van Compute_Trajectory en elke aanroeper.” (find_symbol)
  • “Leg uit hoe de telemetrietask gegevens doorgeeft aan het protected logging-object.” (get_task_context)

Bekende beperkingen

  • Ada gebruikt dezelfde syntaxis voor sommige aanroepen, toegang tot recordvelden en indexering. Maguyva filtert ingebouwde types, pakketten uit de standaardbibliotheek, attribuutfuncties en operatoren (ongeveer 113 patronen) om de aanroepgraaf schoon te houden, dus aanroepen naar de standaardbibliotheek zijn geen randen in de graaf. Toegang tot recordvelden en indexering worden van aanroepen onderscheiden op basis van hun positie in de grammatica, niet op basis van een lijst met veldnamen. Gangbare tekst-I/O-aanroepen zoals Put_Line, Put en Get blijven bewust behouden.
  • use-clausules veranderen de zichtbaarheid, maar worden in structureel zoeken niet als imports geselecteerd; with-clausules wel.
  • Nodes voor record- en interfacetypes kunnen anonieme fragmenten zijn, waardoor structurele zoekopdrachten op naam ze kunnen missen. Gebruik find_symbol voor benoemde types.

Volgende stappen

Koppel een repository via de snelstart en bekijk daarna de ondersteuningsmatrix op de compatibiliteitspagina. Als je Ada-code aan C koppelt, lees dan ook de C-gids.

Beste toepassing

  • > Teams die langlevende Ada onderhouden in lucht- en ruimtevaart, defensie, spoor of andere domeinen met hoge integriteit, waar elke wijziging wordt gereviewd.
  • > Codebases die zijn opgesplitst in `.ads`-specificaties en `.adb`-bodies, waarbij interface en implementatie in verschillende bestanden staan.
  • > Engineers die AI-agents inzetten voor impactanalyse en reviewvoorbereiding, niet voor ongereviewde codegeneratie.

Agentworkflows

  • > Elke eenheid vinden die een pakket met `with` binnenhaalt voordat de specificatie verandert.
  • > Over pakketgrenzen heen nagaan welke subprogramma's een routine aanroepen.
  • > Tasktypes, protected types en hiërarchieën van tagged types in kaart brengen vóór een wijziging in concurrency of ontwerp.

Enginedetails

  • > Ada-ondersteuning dekt `.ads`-specificaties, `.adb`-bodies en `.ada`. Subprogrammabodies en -specificaties zijn allebei aanroepbare symbolen.
  • > Het matchen van symbolen is hoofdletterongevoelig, en `with`- en `use`-clausules worden importrelaties nadat het sleutelwoord is verwijderd.
  • > Ongeveer 113 ingebouwde types, pakketten uit de standaardbibliotheek, attribuutfuncties en operatoren worden uit aanroepen gefilterd; toegang tot recordvelden en indexering worden van aanroepen onderscheiden op basis van hun positie in de grammatica, en `Put_Line`, `Put` en `Get` blijven bewust behouden.

Nuttige MCP-instappunten

  • find_symbol

    Gebruik het om de specificatie en body van een subprogramma samen met de verwijzingen te vinden.

  • dependency_search

    Gebruik incoming-traversal op een pakket voordat de specificatie verandert, om elke afhankelijke eenheid te zien.

  • get_task_context

    Gebruik het voor prompts zoals "leg uit hoe de telemetrietask gegevens doorgeeft aan het protected logging-object".