Inria Lille - Nord Europe



Carolinae Hernandez Ph.D. thesis defense: "Bootstrap-Based Language Development: Turning an existing VM into a polyglot VM"

The defense will take place on November 5th at 10 am in the Auditorium of Building B.

Abstract: Programming languages need to evolve as software requirements change, but their prototyping and extension comes at the cost of great development efforts. The case of reflective languages is interesting because programs written in these languages are able to modify the implementation of the language in which they are written, providing high-level means for language evolution through self-modification operations.

The limitations of the self-modification approach for language evolution are overcame by Bootstrap, a technique used to support the evolution of a single reflective language or a family of similar languages. However, bootstrapping new languages is a challenging task due to the lack of proper abstractions for language specification, late manifestation of errors, and abstraction leaps during debugging tasks.

In this dissertation we study the design of a bootstrap based language development technique that supports the generation of multiple reflective languages with low efforts. For this we introduce MetaL, a bootstrapping framework where language specification is based on metamodels, model transformations, and reflective initialization instructions. Thanks to its Meta Object Protocol~(MOP), MetaL ensures model correctness and kernel health, detecting corruption early during the generation process.

To validate our approach, we report on the successful generation of seven object-oriented language kernels, plus an experiment by an external user. These experiments show that, in each study case, MetaL kept the abstraction level high from the user’s point of view, and that our solution is applicable in real world scenarios.

Benoît Verhaeghe Ph.D. thesis defense: "Incremental Approach for Application GUI migration using Metamodeling"

We are glad to announce the Ph.D. thesis defense of Benoît Verhaeghe. Benoît mainly worked on methods and tools to semi-automatically migrate front-end frameworks. His work particularly focused on the migration Google Web Toolkit to Angular environment. The defense will take place in Lille on October 21st, 2021.


Developers use GUI frameworks to design the graphical user interface of their applications. It allows them to reuse existing graphical components and build applications in a fast way. However, with the generalization of mobile devices and Web applications, GUI frameworks evolve at a fast pace: JavaFX replaced Java Swing, Angular 8 replaced Angular 1.4 which had replaced GWT (Google Web Toolkit). Moreover, former GUI frameworks are not supported anymore. This situation forces organizations to migrate their applications to modern frameworks regularly to avoid becoming obsolete.

To ease the migration of applications, previous research designed automatic approaches dedicated to migration projects. Whereas they provide good results, they are hard to adapt to other contexts than their original one. For instance, at Berger-Levrault, our industrial partner, applications are written in generic programming languages (Java/GWT), proprietary “4th generation” languages (VisualBasic 6, PowerBuilder), or markup languages (Silverlight). Thus, there is a need for a language-agnostic migration approach allowing one to migrate various GUI frameworks to the latest technologies. Moreover, when performing automatic migration with these approaches, part of the migrated application still needs to be manually fixed. This problem is even more important for large applications where this last step can last months. Thus, companies need to migrate their application incrementally to ensure end-user continuous delivery throughout the process.

In this thesis, we propose a new incremental migration approach. It aims to allow the migration of large applications while ensuring end-user delivery. It consists of migrating pages using our automatic GUI migration tool, fixing them, and integrating them in a hybrid application. To create our GUI migration tool, we designed a pivot meta-model composed of several packages representing the visual and the behavioral aspects of any GUI. We detailed multiple implementations of our GUI migration tool that extract and generate GUI using different frameworks.

We successfully applied our migration approach to a real industrial application at Berger-Levrault. The migrated application is now in production. We also validated our automatic GUI migration tool on several migration projects, including applications developed with programming and markup languages. The company is currently using our approach for other migration projects.

Pharo 9 Released!

Here are the key features of Pharo 9:

  • Full redesign of the Spec UI framework (new logic, application, style, GTK3 back-end)
  • New tools:
    • new playground,
    • new object centric inspector,
    • new object centric debugger.
    • better and new Refactorings
    • class comments are now written in Microdown format (Markdown compatible)
    • classes now can be defined using a "fluid" api (Preview)
    • new completion framework that adapts better to edition contexts and is customizable
  • Fast universal non-blocking FFI which now uses libFFI as backend.
  • Pharo now supports Windows, OSX, Linux (Ubuntu, Debian, Fedora, openSUSE, Arch, Raspbian) and multiple architectures (Intel/ARM 32/64bits).
  • Virtual Machine
    • Idle VM
    • Support for ARM 64bits
    • Support for Apple M1
    • More than 3000 tests
    • Built for Ubuntu 18.04, 19.04, 20.04, 21.04, 21.10; Debian 9, 10, Testing; Fedora 32, 32, 34; openSUSE 15.1, 15.2, Tumbleweed; Manjaro; Arch
    • Uses SDL 2.0 as back-end by default. It supports extended event handling, including trackpad support.
  • General speed up due to compiler optimisations and UI simplification.
  • And many, many more tests.

These are just the more prominent highlights, but the details are just as important. We have closed a massive amount of issues: around 1400 issues and 2150 pull requests.

More information: https://www.pharo.org/news/pharo9-released.html