With respect to traditional systems, language interpreters are hard to evolve and the adoption of evolved languages is slow. Language evolution is hindered by the fact that their implementations often overlook design principles, especially those related to modularity. Consequently, language implementations and their updates are monolithic. Language evolution often breaks the backward compatibility and requires developers to rewrite their applications. Furthermore, there is little or no support to evolve language interpreters at runtime. This would be useful for systems that cannot be shut down and to support context-aware interpreters. To tackle these issues, we designed the concept of open interpreters which provide support for language evolution through reflection. Open interpreters allow one to partially update a language to maintain the backward compatibility. Furthermore, they allow one to dynamically update a language without stopping the overlying application. Open interpreters can be dynamically tailored on the task to be solved. The peculiarity of this approach is that the evolution code is completely separated from the application or the original interpreter code. In this dissertation we define the concept of open interpreters, we design a possible implementation model, we describe a prototype implantation and provide the proof-of-concept examples applied to various domains.

DYNAMIC LANGUAGE UPDATING

SHAQIRI, ALBERT
2018

Abstract

With respect to traditional systems, language interpreters are hard to evolve and the adoption of evolved languages is slow. Language evolution is hindered by the fact that their implementations often overlook design principles, especially those related to modularity. Consequently, language implementations and their updates are monolithic. Language evolution often breaks the backward compatibility and requires developers to rewrite their applications. Furthermore, there is little or no support to evolve language interpreters at runtime. This would be useful for systems that cannot be shut down and to support context-aware interpreters. To tackle these issues, we designed the concept of open interpreters which provide support for language evolution through reflection. Open interpreters allow one to partially update a language to maintain the backward compatibility. Furthermore, they allow one to dynamically update a language without stopping the overlying application. Open interpreters can be dynamically tailored on the task to be solved. The peculiarity of this approach is that the evolution code is completely separated from the application or the original interpreter code. In this dissertation we define the concept of open interpreters, we design a possible implementation model, we describe a prototype implantation and provide the proof-of-concept examples applied to various domains.
27-feb-2018
Inglese
programming language evolution; dynamic software updating; interpreters
CAZZOLA, WALTER
BOLDI, PAOLO
Università degli Studi di Milano
File in questo prodotto:
File Dimensione Formato  
phd_unimi_R10589.pdf

accesso aperto

Dimensione 2.84 MB
Formato Adobe PDF
2.84 MB Adobe PDF Visualizza/Apri

I documenti in UNITESI sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.

Utilizza questo identificativo per citare o creare un link a questo documento: https://hdl.handle.net/20.500.14242/74170
Il codice NBN di questa tesi è URN:NBN:IT:UNIMI-74170