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".