Sous-sections
Mots clés : programmation synchrone,
Signal, format commun, DC+, transformation de programme
.
Participants : Loïc Besnard,
Patricia Bournai, Thierry Gautier, Paul Le Guernic.
Résumé :
La version actuellement diffusée de Signal, Signal V4, a
été définie en coopération avec la société
TNI (FranÇois Dupont), qui développe et
commercialise l'environnement Sildex issu des travaux sur
Signal. Elle est progressivement enrichie dans le sens
d'une meilleure expressivité, et son environnement est
amélioré de manière à en assurer une diffusion plus
large.
Afin d'alléger la description des interfaces de processus,
mais aussi afin de permettre de partager des «variables»
entre processus (dans une optique d'environnement de
description d'architecture, comme proposé par le projet
SafeAir), nous avons apporté une modification syntaxique
importante des règles de visibilité des signaux dans un
programme Signal. On étend aux signaux la règle de visibilité
actuellement appliquée aux constantes, aux types, aux
processus et aux paramètres. Un signal peut donc être défini
ou utilisé dans un processus sans que ni une déclaration
locale ni une déclaration dans l'interface ne lui
corresponde. On applique pour la détermination de la
déclaration correspondant à une occurrence de signal les
règles standards des langages à blocs. Cette modification se
couple avec l'«affectation multiple» (syntaxique) de signaux,
notée X ::= E et équivalente à une équation X :=
E default X. Les horloges d'affectation à X
doivent être exclusives si on veut éviter le non
déterminisme. Notons que ces extensions sont aussi très
utiles lorsqu'il s'agit de spécifier en Signal des automates
de type Statecharts par exemple.
D'autres extensions sont actuellement à l'étude : nous
envisageons ainsi d'offrir une syntaxe légère pour utiliser
les opérateurs standards, arithmétiques par exemple, sous une
forme asynchrone, qui n'exige pas la présence simultanée des
deux opérandes pour qu'un résultat soit défini.
Dans le cadre du projet SafeAir, nous avons effectué une
comparaison précise des langages Signal et Lustre (dans sa
version industrielle, Scade [36]). Nous prévoyons de pouvoir lire et
produire du Scade depuis l'environnement Signal [37]. Certains traits du langage Lustre
pourraient être introduits dans Signal, ainsi la possibilité
de déclarer l'horloge d'un signal.
Cette année, nous avons intégré l'appel aux fonctionnalités
de compilation dans le programme Signal qui supervise
l'environnement Signal. Ainsi, l'utilisateur peut désormais
compiler ses applications de manière interactive.
La résolution des références aux objets du langage
(signaux, processus) a été complètement revue afin de prendre
en compte la nouvelle visibilité des identificateurs.
De plus, l'environnement s'est enrichi cette année :
- d'un générateur de code C++ ;
- d'un générateur de code Java, avec certaines
restrictions ;
- de fonctions intrinsèques d'entrées/sorties permettant
une simulation rapide clavier/écran ;
- de la possibilité d'associer à un processus externe,
sous forme de pragmas, le texte à engendrer lors
de la production de code ;
- d'une bibliothèque graphique écrite en Java et
accessible d'une application Signal en vue d'une simulation
graphique. Cette bibliothèque inclut les créations de
boutons, réglettes, canevas... Ainsi les applications
engendrées sont portables sous Unix et Windows ;
- de la possibilité de création de bibliothèques
d'icÔnes. Ces icÔnes sont vues comme des processus
Signal.
Un travail important de documentation a été entrepris afin
de diffuser l'environnement en tant que logiciel libre
disponible sur le Web.