## Section: New Results

### Programming languages, DSLs and software development

Participants : Pierre Cointe, Kelly Garces, Hervé Grall, Mayleen Lacouture, Thomas Ledoux, Marc Léger, Jacques Noyé.

Our work have focused on four main activities. First, we have provided a DSL, named FScript, for the dynamic reconfiguration of Fractal architectures. FScript ensures the reliability of the reconfigurations thanks to a transactional approach. FScript is used in the project Galaxy. Secondly, we have participated with the AtlanMod team from EMN and INRIA in the definition of a DSL for the definition of matching strategies which compute mappings between models. The results of this work are hosted by the Eclipse foundation (see http://wiki.eclipse.org/AML ). Then, we have analyzed the evolution of programming languages in the field of computer music. Finally, we have illustrated the use of coinductive definitions and proofs in big-step operational semantics using a call-by-value functional language.

#### Language support for navigation and reliable reconfiguration of Fractal architectures

Component-based systems must support dynamic reconfigurations to adapt to their execution context, but not at the cost of reliability. Open component-based systems such as Fractal provide intrinsic support for dynamic reconfiguration, but their definition in terms of low-level APIs makes it complex to write reconfigurations and ensure the reliability of the resulting systems. We have proposed FScript, a domain-specific language, to solve these issues through language support for architecture navigation and reconfiguration that facilitates the definition of reconfigurations and guaranties several properties by construction (e.g., termination of scripts by excluding the possibility of infinite loops) [17] .

The FScript interpreter integrates a back-end system provided by the contributions of Marc Leger's PhD work [15] . He proposed a definition of consistency for configurations and reconfigurations in the Fractal component model. Reliability of reconfigurations has been ensured thanks to a transactional approach allowing that deals with error recovery as well as the management of concurrent reconfigurations.

#### Support for Model Evolution

We made the assumption that DSLs can serve as a bridge between application modeling and programming. As initiated as part of the FLFS ANR project (see Sec. 8.2 ), and capitalizing on our previous experiments in implementing DSL, we work on a methodology for developing such a DSL and for applying it to the field of model evolution. This work is done jointly with the AtlanMod team.

A first result described in [35] was the definition of the AML DSL for expressing model matching algorithms and a corresponding compiler. This DSL was used to the detection of metamodel changes. We have evaluated this implementation on two strategies including robust matching transformations from the literature.

In a second step, we have developed a three-step solution that automatically adapts terminal models to their evolving metamodels. We have evaluated this solution in terms of the accuracy and performance in the context of two externally defined metamodels well-known from the literature: the Netbeans Java metamodel and the Petrinet metamodel [24] .

This work will be the kernel of K. Garces'PhD thesis as well as her work on contributing AML to Eclipse (see http://wiki.eclipse.org/AML ).

#### Reflective languages, aspects and DSLs

We have analyzed the evolution of programming languages by focusing on two dialectics that we consider critical for the field of computer music [37] . On the one hand, we have studied the dialectic between ”form and opening” leading to the definition of reflective languages to deal with open-ended software architectures and aspect oriented software development to express separation of concerns. On the other hand, we have observed the tension between ”generality and speciality” as manifested by the reappearance of domain specific languages.

#### Coinductive big-step operational semantics

Using a call-by-value functional language as an example, we have illustrated the use of coinductive definitions and proofs in big-step operational semantics, enabling it to describe diverging evaluations in addition to terminating evaluations [18] . Extending their previous results [64] , [70] , Hervé Grall and Xavier Leroy formalize the connections between the coinductive big-step semantics and the standard small-step semantics, proving that both semantics are equivalent, when they compute not only values but also traces. They then study the use of coinductive big-step semantics in proofs of type soundness and proofs of semantic preservation for compilers.

A methodological originality of the paper is that all results have been proved using the Coq proof assistant. The authors explain the proof-theoretic presentation of coinductive definitions and proofs offered by Coq, and show that it facilitates the discovery and the presentation of the results.