Saltar al contenido
cd /languages
  • Código de alta integridad
  • Programación
  • Soporte de AST y símbolos

Ada en Maguyva: especificaciones, cuerpos y grafos de paquetes

Maguyva admite Ada con AST, símbolos y grafo, para que los agentes de IA sigan especificaciones, cuerpos, tareas y tipos etiquetados en sistemas Ada de larga vida.

Por qué los repositorios Ada necesitan un mapa de dependencias

Ada separa lo que promete un paquete (.ads) de cómo lo cumple (.adb). Es buena ingeniería, y también significa que un solo cambio toca varios archivos que una búsqueda de texto no conectará por ti. Los sistemas Ada de larga vida añaden otra capa: genéricos, tipos etiquetados, tareas y objetos protegidos cuyas relaciones importan más que cualquier archivo aislado.

Maguyva entrega al agente ese mapa de dependencias antes de que proponga una edición, que es justo el orden que espera una revisión de alta integridad.

Qué extrae Maguyva en Ada

Maguyva cubre .ads, .adb y .ada. Los cuerpos de subprogramas y las especificaciones de procedimientos y funciones se extraen como símbolos invocables, de modo que tanto la especificación como el cuerpo de una rutina se pueden buscar. La coincidencia de símbolos no distingue mayúsculas de minúsculas, igual que Ada.

Las importaciones provienen de las cláusulas with y use, y se elimina la palabra clave para que el grafo guarde el nombre del paquete. El grafo también registra llamadas, herencia y sobrescrituras en tipos etiquetados, instanciación, referencias de tipo, lecturas y escrituras, y aristas de lanzamiento y manejo de excepciones.

En la búsqueda estructural, los tipos tarea, tipos protegidos, tipos registro y tipos interfaz se pueden seleccionar como definiciones de tipo, y los cuerpos de entrada como métodos.

Ejemplos de prompts para agentes

  • “¿Qué unidades dependen de Flight_Control.Sensors y cuáles de sus subprogramas llaman?” (dependency_search incoming)
  • “Muestra la especificación y el cuerpo de Compute_Trajectory y todos sus llamadores.” (find_symbol)
  • “Explica cómo la tarea de telemetría entrega datos al objeto protegido de registro.” (get_task_context)

Limitaciones conocidas

  • Ada usa la misma sintaxis para algunas llamadas, el acceso a campos de registros y la indexación. Maguyva filtra tipos predefinidos, paquetes de la biblioteca estándar, funciones de atributo y operadores (unos 113 patrones) para mantener limpio el grafo de llamadas, así que las llamadas a la biblioteca estándar no son aristas del grafo. El acceso a campos de registros y la indexación se distinguen de las llamadas por su posición en la gramática, no por una lista de nombres de campo. Las llamadas habituales de E/S de texto como Put_Line, Put y Get se conservan a propósito.
  • Las cláusulas use cambian la visibilidad, pero no se seleccionan como importaciones en la búsqueda estructural; las cláusulas with, sí.
  • Los nodos de tipos registro e interfaz pueden ser fragmentos anónimos, por lo que las consultas estructurales por nombre pueden pasarlos por alto. Usa find_symbol para los tipos con nombre.

Próximos pasos

Conecta un repositorio con el inicio rápido y luego revisa la matriz de compatibilidad en la página de compatibilidad. Si tu código Ada se enlaza con C, lee también la guía de C.

Mejor uso

  • > Equipos que mantienen Ada de larga trayectoria en aeroespacial, defensa, ferrocarriles u otros dominios de alta integridad donde cada cambio se revisa.
  • > Bases de código divididas entre especificaciones `.ads` y cuerpos `.adb`, donde la interfaz y la implementación viven en archivos distintos.
  • > Ingenieros que usan agentes de IA para análisis de impacto y preparación de revisiones, no para generar código sin revisión.

Flujos de trabajo del agente

  • > Encontrar todas las unidades que hacen `with` de un paquete antes de cambiar su especificación.
  • > Rastrear qué subprogramas llaman a una rutina a través de los límites de los paquetes.
  • > Mapear tipos tarea, tipos protegidos y jerarquías de tipos etiquetados antes de un cambio de concurrencia o de diseño.

Detalles del motor

  • > La compatibilidad con Ada cubre especificaciones `.ads`, cuerpos `.adb` y `.ada`. Tanto los cuerpos como las especificaciones de subprogramas son símbolos invocables.
  • > La coincidencia de símbolos no distingue mayúsculas de minúsculas, y las cláusulas `with` y `use` se convierten en relaciones de importación tras quitar la palabra clave.
  • > Unos 113 tipos predefinidos, paquetes de la biblioteca estándar, funciones de atributo y operadores se filtran de las llamadas; el acceso a campos de registros y la indexación se distinguen de las llamadas por su posición en la gramática, y `Put_Line`, `Put` y `Get` se conservan a propósito.

Puntos de entrada MCP útiles

  • find_symbol

    Úsalo para encontrar juntas la especificación y el cuerpo de un subprograma, con sus referencias.

  • dependency_search

    Usa el recorrido incoming sobre un paquete antes de cambiar su especificación para ver todas las unidades que dependen de él.

  • get_task_context

    Úsalo para prompts como "explica cómo la tarea de telemetría entrega datos al objeto protegido de registro".