Registro:
Documento: | Tesis Doctoral |
Título: | Objetos vivos a fondo : removiendo las barreras entre aplicaciones y máquinas virtuales |
Título alternativo: | Live objects all the way down : removing barriers between applications and virtual machines |
Autor: | Pimás, Javier Esteban |
Editor: | Universidad de Buenos Aires. Facultad de Ciencias Exactas y Naturales |
Fecha de defensa: | 2024-09-11 |
Fecha en portada: | 2024 |
Grado Obtenido: | Doctorado |
Título Obtenido: | Doctor de la Universidad de Buenos Aires en el área de Ciencias de la Computación |
Departamento Docente: | Departamento de Computación |
Director: | Garbervetsky, Diego David |
Consejero: | Castro, Rodrigo Daniel |
Jurado: | Polito, Guillermo; Bergel, Alexandre; González Boix, Elisa |
Idioma: | Español |
Palabras clave: | MAQUINAS VIRTUALES; COMPILADORES; RECOLECCION DE BASURA; META-PROGRAMACION; PROGRAMACION EN VIVO; PROGRAMACION ORIENTADA A OBJETOSVIRTUAL MACHINES; COMPILERS; GARBAGE COLLECTION; METAPROGRAMMING; LIVE PROGRAMMING; OBJECT-ORIENTED PROGRAMMING |
Formato: | PDF |
Handle: |
http://hdl.handle.net/20.500.12110/tesis_n7627_Pimas |
PDF: | https://bibliotecadigital.exactas.uba.ar/download/tesis/tesis_n7627_Pimas.pdf |
Registro: | https://bibliotecadigital.exactas.uba.ar/collection/tesis/document/tesis_n7627_Pimas |
Ubicación: | COM 007627 |
Derechos de Acceso: | Esta obra puede ser leída, grabada y utilizada con fines de estudio, investigación y docencia. Es necesario el reconocimiento de autoría mediante la cita correspondiente. Pimás, Javier Esteban. (2024). Objetos vivos a fondo : removiendo las barreras entre aplicaciones y máquinas virtuales. (Tesis Doctoral. Universidad de Buenos Aires. Facultad de Ciencias Exactas y Naturales). Recuperado de http://hdl.handle.net/20.500.12110/tesis_n7627_Pimas |
Resumen:
Los lenguajes orientados a objetos suelen utilizar máquinas virtuales (VM) que proporcionan mecanismos como la compilación just-in-time ( JIT) y la recolección de basura (GC). Los componentes que brindan estos mecanismos de VM suelen implementarse en una capa separada, aislando así la aplicación. Si bien este enfoque aporta los beneficios de ingeniería de software de una clara separación y desacoplamiento, introduce barreras tanto para entender el comportamiento de la VM como pa- ra evolucionar su implementación, ya que debilita las conexiones causales entre las aplicaciones y la VM. Por ejemplo, la recolección de basura y el compilador JIT suelen quedar fijos en el momento de construcción de la VM, limitando la adaptación arbitraria en tiempo de ejecución. Además, debido a esta separación, la implementación de la VM no suele poder inspeccionarse y depurarse de la misma manera que el código de aplicación, estableciendo una distinción entre el código de aplicación fácil de trabajar y el código de VM difícil de trabajar. Estas características representan una barrera que dificulta que lxs desarrolladores de aplicaciones comprendan el motor sobre el cual se ejecuta su propio código, y fomenta una brecha de conocimiento que les impide cambiar la VM. Proponemos bibliotecas de entornos de ejecución metacirculares vivos o LMRs (por Live Metacircular Runtimes) para superar este problema. Las LMRs son motores de ejecución de lenguajes que integran perfectamente la VM en la aplicación en entornos de programación vivos. A diferencia de los enfoques metacirculares clásicos, proponemos eliminar por completo la separación entre aplicación y VM. Al aplicar sistemáticamente el diseño orientado a objetos a los componentes de VM, podemos construir motores de ejecución vivos lo suficientemente pequeños y flexibles, donde lxs ingenierxs de VM pueden beneficiarse de herramientas de programación vivas con feedback loops cortos, y lxs desarrolladores de aplicaciones con menos experiencia en VM pueden beneficiarse de las conexiones causales más fuertes entre sus programas y la implementación de la VM. Para evaluar nuestra propuesta, implementamos Bee/LMR, una VM viva para un entorno derivado de Smalltalk en 22,057 líneas de código. Analizamos casos de estudio sobre la optimización del recolector de basura, evitando recompilaciones por parte del compilador JIT y agregando soporte para optimizar el código con instrucciones vectoriales para mostrar los compromisos de extender la programa- ción exploratoria al desarrollo de VMs en el contexto de una aplicación industrial utilizada en producción. Basándonos en los casos de estudio, ilustramos cómo nuestro enfoque facilita el trabajo diario de desarrollo de un pequeño equipo de programadores de aplicaciones. Nuestro enfoque permite a lxs desarrolladores de VM acceder a herramientas de programación vivas, tradicionalmente reservadas para desarrolladores de aplicaciones, mientras que lxs desarrolladores de aplicaciones pueden interactuar con la VM y modificarla utilizando las herramientas de alto nivel que utilizan a diario. Tanto lxs desarrolladores de aplicaciones como lxs de VM pueden inspeccionar, depurar, comprender y modificar sin problemas las diferentes partes de la VM con feedback loops más cortos y herramientas de mayor nivel de abstracción.
Abstract:
Object-oriented languages often use virtual machines (VMs) that provide mechanisms such as just-in-time ( JIT) compilation and garbage collec- tion (GC). These VM components are typically implemented in a separate layer, isolating them from the application. While this approach brings the software en- gineering benefits of clear separation and decoupling, it introduces barriers for both understanding VM behavior and evolving the VM implementation because it weakens the causal connections between applications and VM. For example, the GC and JIT compiler are typically fixed at VM build time, limiting arbitrary adaptation at run time. Furthermore, because of this separation, the implemen- tation of the VM cannot typically be inspected and debugged in the same way as application code, enshrining a distinction in easy-to-work-with application and hard-to-work-with VM code. These characteristics pose a barrier for application developers to understand the engine on top of which their own code runs, and fosters a knowledge gap that prevents application developers to change the VM. We propose Live Metacircular Runtimes (LMRs) to overcome this problem. LMRs are language runtime systems that seamlessly integrate the VM into the application in live programming environments. Unlike classic metacircular ap- proaches, we propose to completely remove the separation between application and VM. By systematically applying object-oriented design to VM components, we can build live runtime systems that are small and flexible enough, where VM engineers can benefit of live programming features such as short feedback loops, and application developers with fewer VM expertise can benefit of the stronger causal connections between their programs and the VM implementation. To evaluate our proposal, we implemented Bee/LMR, a live VM for a Smalltalk- derivative environment in 22,057 lines of code. We analyze case studies on tuning the garbage collector, avoiding recompilations by the just-in-time compiler, and adding support to optimize code with vector instructions to demonstrate the trade- offs of extending exploratory programming to VM development in the context of an industrial application used in production. Based on the case studies, we illustrate how our approach facilitates the daily development work of a small team of application developers. Our approach enables VM developers to gain access to live programming tools traditionally reserved for application developers, while application developers can interact with the VM and modify it using the high-level tools they use every day. Both application and VM developers can seamlessly inspect, debug, understand, and modify the different parts of the VM with shorter feedback loops and higher-level tools.
Citación:
---------- APA ----------
Pimás, Javier Esteban. (2024). Objetos vivos a fondo : removiendo las barreras entre aplicaciones y máquinas virtuales. (Tesis Doctoral. Universidad de Buenos Aires. Facultad de Ciencias Exactas y Naturales.). Recuperado de https://hdl.handle.net/20.500.12110/tesis_n7627_Pimas
---------- CHICAGO ----------
Pimás, Javier Esteban. "Objetos vivos a fondo : removiendo las barreras entre aplicaciones y máquinas virtuales". Tesis Doctoral, Universidad de Buenos Aires. Facultad de Ciencias Exactas y Naturales, 2024.https://hdl.handle.net/20.500.12110/tesis_n7627_Pimas
Estadísticas:
Descargas totales desde :
Descargas mensuales
https://bibliotecadigital.exactas.uba.ar/download/tesis/tesis_n7627_Pimas.pdf