Détails de l'architecture
Cliquez sur l'image pour obtenir des détails sur l'architecture de Gambas...
Un dessin vaut mieux qu'un long discours. Et j'adore ce genre de diagramme qui font penser
qu'un programme a été conçu de manière propre et pensé avec soin ;-).
L'
environnement de développement cache toute cette machinerie derrière une interface
graphique agréable.
Projet
Un projet est un ensemble de fichiers stockés dans un même répertoire.
Un projet peut contenir des fichiers sources (formulaires, classes, modules) ou bien
tout type de fichier de données :
-
La configuration du projet est euregistrée dans un fichier appelé
".project"
.
-
Les fichiers sources sont enregistrés dans un sous-répertoire appelé
".src."
.
-
Les fichiers de données sont enegistrés dans le répertoire du projet ou dans des sous-répertoires visibles.
Archiveur
L'
Archiveur est un programme appelé
gba3
.
Il transforme votre projet, fichiers compilés inclus, en un unique fichier exécutable.
Compilateur
Le
Compilateur est un programme appelé
gbc3
.
Il transforme les formulaires, classes et modules de votre projet en fichiers binaires compilés
qui peuvent être compris et exécutés par l'interpréteur.
Fichiers exécutables
Un fichier exécutable Gambas est une archive non compressée du projet, fichiers compilés inclus.
Le fichier archive est marqué comme script à l'aide de l'entête magique
#!/usr/bin/gbx3
,
de sorte que Linux l'exécute en appelant l'interpréteur de manière transparente.
Fichiers compilés
Un fichier compilé est une représentation binaire d'une classe qui contient toutes les
informations nécessaires à l'interpréteur : fonctions transformés en
bytecode, constantes,
définitions des variables, information de débogage, etc.
Utilisation de l'appel système mmap()
Si votre projet est compilé en tant qu'exécutable, c.-à-d. en tant que fichier archive,
l'interpréteur effectuera une projection en mémoire du fichier plutôt que de le charger.
Cela vaut le coup !
Interpréteur
L'
Interpréteur est un programme appelé
gbx3
.
Il exécute le
bytecode contenu dans les fichiers compilés générés par le compilateur.
Chargeur de classe
Le
Chargeur de classe charge les formulaires, classes et modules compilés dans l'interpréteur.
Unité d'exécution
L'
Unité d'exécution est le cœur de l'interpréteur.
Il répartit et exécute chaque instruction contenue dans le
bytecode généré par le compilateur.
Débogueur
Le
Débogueur est un outil en ligne de commande intégré dans l'interpréteur.
Il permet à l'environnement de développement de déboguer un programme Gambas en l'exécutant pas à pas,
en surveillant le contenu de la pile, en évaluant toute expression dans le contexte
d'exécution courant...
Sous-routines
Les
Sous-routines sont les fonctions de l'interpréteur associées aux fonctions de Gambas
telles que
Sin
,
Left
,
Stat
, etc. ou aux opérateurs tels que
+
,
-
,
*
,
&
, etc.
Interface des composants
L'
Interface des composants est un ensemble de routines et de services utilisés par les composants
pour communiquer avec l'interpréteur.
Les éléments internes de l'interpréteur sont cachés de cette façon.
Chargeur de composants
Le
Chargeur de composants est la partie de l'interpréteur qui charge les bibliothèques partagées des
composants, leur donne accès à l'Interface des composants, et publie leur propre interface aux
autres composants.
Classes natives
Les
Classes natives sont les classes qui peuvent être utilisées sans charger aucun composant.
Elles sont intégrées à l'interpréteur, et peuvent être considérées comme faisant partie du langage Gambas.
Composants
Les
Composants sont les bibliothèques partagées qui sont chargées par l'interpréteur.
Ils peuvent contenir de nouvelles classes et des routines d'accrochage par exemple dans la gestion des boucles d'événements, l'analyse des arguments du shell, etc. Ils peuvent également publier un ensemble de routines en tant qu'interface pour d'autres composants.
Les composants peuvent également être écrits en Gambas. Ils sont générés par l'archiveur sous forme d'exécutables Gambas
à partir de projets Gambas marqués comme "projets de composant".