Improving the efficiency and reliability of gradual typing
Professor Advisor
dc.contributor.advisor
Fabry, Johan
Professor Advisor
dc.contributor.advisor
Tanter, Éric
Author
dc.contributor.author
Allende Prieto, Esteban Armando
Staff editor
dc.contributor.editor
Facultad de Ciencias Físicas y Matemáticas
Staff editor
dc.contributor.editor
Departamento de Ciencias de la Computación
Associate professor
dc.contributor.other
Bergel, Alexandre
Associate professor
dc.contributor.other
Röthlisberger, David
Associate professor
dc.contributor.other
Tratt, Laurence
Admission date
dc.date.accessioned
2015-08-04T13:40:54Z
Available date
dc.date.available
2015-08-04T13:40:54Z
Publication date
dc.date.issued
2015
Identifier
dc.identifier.uri
https://repositorio.uchile.cl/handle/2250/132317
General note
dc.description
Doctor en Ciencias, Mención Computación
Abstract
dc.description.abstract
Gradual Typing permite a un programador aplicar tipos estáticos a ciertas partes de un programa, dejando el resto dinámicamente tipeado. Sin embargo, esto viene con un costo en el rendimiento. Una razón es que el runtime tiene que realizar siempre un casteo en el borde entre tipos estáticos y dinámicos. Otra razón es que el borde puede ser creado accidentalmente. Esto también trae un efecto lateral de reducir la fiabilidad del código estático, porque ahora el programador no puede garantizar que su código no arrojará errores de tipo en tiempo de ejecución.
En este trabajo de tesis, mejoramos el rendimiento y la fiabilidad de los programas gradualmente tipeados. Para esto, desarrollamos un lenguaje gradualmente tipeado, Gradualtalk, y luego presentamos dos novedosas ideas: hybrid strategy y Confined Gradual Typing.
La hybrid strategy es una nueva forma de insertar los casts al invocar métodos que combina dos estrategias existentes, permitiendo obtener el mejor rendimiento de ambas. Validamos esta afirmación con benchmarks.
Confined Gradual Typing refina gradual typing con anotaciones para prohibir explícitamente ciertos cruces de frontera entre el código estáticamente y dinámicamente tipeado. Nosotros desarrollamos formalmente dos variantes de CGT que capturan diferentes compromisos entre flexibilidad/garantías. Probamos que CGT es type sound y que las anotaciones ofrecen las garantías esperadas.