GNAT
# GNAT

GNAT è un compilatore per il linguaggio Ada. È un software libero e fa parte della GNU Compiler Collection; supporta tutte le versioni standard del linguaggio (Ada 83, Ada 95, Ada 2005, Ada 2012). L'interfaccia e il runtime sono scritti in Ada.

JGNAT è una versione di GNAT che compila il codice Ada sotto forma di bytecode Java, mentre GNAT for dotNET è una versione di GNAT che compila i sorgenti Ada in CLI per la piattaforma .NET Framework o la relativa implementazione open, il progetto Mono.

## Storia

Il progetto GNAT prese vita nel 1992, quando l'Università di New York (NYU) vinse un appalto della United States Air Force per realizzare un compilatore libero per l'Ada (molto usato nello sviluppo di software militare e mission critical) in modo da favorire il processo di standardizzazione Ada 9X (che avrebbe portato allo standard Ada 95). Il contratto, del valore di 3 milioni di dollari, richiedeva che il software venisse rilasciato sotto licenza GNU GPL e che i diritti d'autore del software venissero assegnati alla Free Software Foundation.

Nel 1994 e nel 1996 vennero fondate, dagli autori originali di GNAT, due compagnie sorelle, Ada Core Technologies a New York e ACT-Europe a Parigi, che fornivano supporto commerciale continuo al software. Nel 2004 le due compagnie si unirono nella società AdaCore.

GNAT venne inizialmente distribuito separatamente rispetto ai sorgenti di GCC, fino a quando il 2 ottobre 2001 GNAT entrò nel repository CVS di GCC: L'ultima versione di GNAT pubblicata indipendentemente fu la 3.15p (basata su GCC 2.8.1, 2 ottobre 2002). A partire da GCC 3.4, la release ufficiale supera al 100% i test ACATS sulle piattaforme principali, e dalla 4.0 anche sulle versioni meno comuni i test sono superati completamente.

## Licenza

Il codice sorgente del compilatore è pubblicato sotto la GNU General Public License ("GNAT GPL Edition"), mentre il runtime della "GNAT Pro Edition" è rilasciato sotto la GNAT Modified General Public License. Tutte le versioni fino alla 3.15p erano rilasciate sotto GMGPL, mentre a partire dalla 4.4 il runtime è stato rilicenziato sotto la GPLv3, con una clausola sul runtime (GCC Runtime Library Exception). La versione FSF è pacchettizzata sulla maggior parte delle distribuzioni Linux e BSD.

La licenza GMGPL nel runtime permette ai software rilasciati sotto licenze incompatibili con la GPL di fare linking alla standard library Ada, mentre la versione GPL richiede che i software che usano il linking alle librerie siano rilasciati sotto licenza compatibile con la GPL.

