Network


Latest external collaboration on country level. Dive into details by clicking on the dots.

Hotspot


Dive into the research topics where Guillermo Polito is active.

Publication


Featured researches published by Guillermo Polito.


Science of Computer Programming | 2014

Bootstrapping reflective systems

Guillermo Polito; Stéphane Ducasse; Noury Bouraqadi; B. van Ryseghem

Bootstrapping is a technique commonly known by its usage in language definition by the introduction of a compiler written in the same language it compiles. This process is important to understand and modify the definition of a given language using the same language, taking benefit of the abstractions and expression power it provides. A bootstrap, then, supports the evolution of a language. However, the infrastructure of reflective systems like Smalltalk includes, in addition to a compiler, an environment with several self-references. A reflective system bootstrap should consider all its infrastructural components. In this paper, we propose a definition of bootstrap for object-oriented reflective systems, we describe the architecture and components it should contain and we analyze the challenges it has to overcome. Finally, we present a reference bootstrap process for a reflective system and Hazelnut, its implementation for bootstrapping the Pharo Smalltalk-inspired system. We studied the way a Smalltalk system evolves traditionally.We studied the properties and challenges of bootstrapping a Smalltalk system.Bootstrapping provides reproducibility to the system.Bootstrapping allows the application of changes atomically.We validate our studies bootstrapping two different Smalltalk systems in Pharo.


The Journal of Object Technology | 2017

Run-Fail-Grow: Creating Tailored Object-Oriented Runtimes.

Guillermo Polito; Noury Bouraqadi; Stéphane Ducasse

Producing a small deployment version of an application is a challenge because static abstractions such as packages cannot anticipate the use of their parts at runtime. Thus, an application often occupies more memory than actually needed. Tailoring is one of the main solutions to this problem i.e., extracting used code units such as classes and methods of an application. However, existing tailoring techniques are mostly based on static type annotations. These techniques cannot efficiently tailor applications in all their extent (e.g., runtime object graphs and metadata) nor be used in the context of dynamically-typed languages. We propose a run-fail-grow technique to tailor applications using their runtime execution. Run-fail-grow launches (a) a reference application containing the original application to tailor and (b) a nurtured application containing only a seed with a minimal set of code units the user wants to ensure in the final application. The nurtured application is executed, failing when it founds missing objects, classes or methods. On failure, the necessary elements are installed into the nurtured application from the reference one, and the execution resumes. The nurtured application is executed until it finishes, or until the developer explicitly finishes it, for example in the case of a web application. resulting in an object memory (i.e., a heap) with only objects, classes and methods required to execute the application. To validate our approach we implemented a tool based on Virtual Machine modifications, namely Tornado. Tornado succeeds to create very small memory footprint versions of applications e.g., a simple object-oriented heap of 11kb. We show how tailoring works on application code, base and third-party libraries even supporting human interaction with user G. interfaces. These experiments show memory savings ranging from 95% to 99%.


sigplan symposium on new ideas new paradigms and reflections on programming and software | 2015

Virtualization support for dynamic core library update

Guillermo Polito; Stéphane Ducasse; Noury Bouraqadi; Max Mattone

Dynamically updating language runtime and core libraries such as collections and threading is challenging since the update mechanism uses such libraries at the same time that it modifies them. To tackle this challenge, we present Dy- namic Core Library Update (DCU) as an extension of Dy- namic Software Update (DSU) and our approach based on a virtualization architecture. Our solution supports the up- date of core libraries as any other normal library, avoiding the circular dependencies between the updater and the core libraries. Our benchmarks show that there is no evident per- formance overhead in comparison with a default execution. Finally, we show that our approach can be applied to real life scenario by introducing a critical update inside a web application with 20 simulated concurrent users.


sigplan symposium on new ideas new paradigms and reflections on programming and software | 2015

A bootstrapping infrastructure to build and extend Pharo-like languages

Guillermo Polito; Stéphane Ducasse; Noury Bouraqadi

Bootstrapping is well known in the context of compilers, where a bootstrapped compiler can compile its own source code. Bootstrapping is a beneficial engineering practice because it raises the level of abstraction of a program making it easier to understand, optimize, evolve, etc. Bootstrapping a reflective object-oriented language is however more challenging, as we need also to initialize the runtime of the language with its initial objects and classes besides writing its compiler. In this paper, we present a novel bootstrapping infrastructure for Pharo-like languages that allows us to easily extend and modify such languages. Our bootstrapping process relies on a first-class runtime. A first-class runtime is a meta-object that represents a program’s runtime and provides a MOP to easily load code into it and manipulate its objects. It decouples the virtual machine (VM) and language concerns by introducing a clear VM-language interface. Using this process, we show how we succeeded to bootstrap a Smalltalk-based language named Candle and then extend it with traits in less than 250 lines of high-level Smalltalk code. We also show how we can bootstrap with minimal effort two other languages (Pharo and MetaTalk) with similar execution semantics but different object models.


21th International Smalltalk Conference - 2013 | 2013

Virtual Smalltalk Images: Model and Applications

Guillermo Polito; Stéphane Ducasse; Luc Fabresse; Noury Bouraqadi


International Workshop on Smalltalk Technologies | 2014

Understanding Pharo's global state to move programs through time and space

Guillermo Polito; Noury Bouraqadi; Stéphane Ducasse; Luc Fabresse


Archive | 2017

An Experiment with lexically-bound extension methods for a dynamic language

Stéphane Ducasse; Luc Fabresse; Guillermo Polito; Camille Teruel


Metamaterials | 2016

Instance Migration in Dynamic Software Update

Pablo Tesone; Guillermo Polito; Noury Bouraqadi; Stéphane Ducasse


Archive | 2014

Extended results of Tornado: A Run-Fail-Grow approach for Dynamic Application Tayloring

Guillermo Polito; Stéphane Ducasse; Noury Bouraqadi


Archive | 2014

Tornado: A Run-Fail-Grow approach for Dynamic Application Tayloring

Guillermo Polito; Stéphane Ducasse; Noury Bouraqadi

Collaboration


Dive into the Guillermo Polito's collaboration.

Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Max Mattone

École des Mines de Douai

View shared research outputs
Top Co-Authors

Avatar
Researchain Logo
Decentralizing Knowledge