Undoing unwanted sharing in Haskell: An STG transformation

dc.contributor.advisorMariño Carballo, Julio
dc.contributor.authorSagredo Tamayo, Javier
dc.date.accessioned2025-10-14T10:37:07Z
dc.date.available2025-10-14T10:37:07Z
dc.date.issued2025
dc.descriptionTrabajo de Fin de Máster en Métodos Formales en Ingeniería Informática, Facultad Informática UCM. Departamento de Sistemas Informáticos y Computación, Curso 2024/2025
dc.description.abstractThis thesis addresses a long-standing issue in lazy functional programming: excessive memory retention due to compiler optimizations such as let-floating and the use of updatable thunks in GHC. We propose a targeted transformation at the STG level that marks certain closures as non-updatable, thereby enforcing recomputation rather than sharing. Our evaluation shows that this intervention can restore constant-space execution in several representative scenarios, including stream processing and search problems. However, the transformation is not universally applicable: it may increase execution time due to recomputation, and in programs where sharing is essential it can significantly harm performance. While not a general solution, our approach contributes a principled intervention mechanism that clarifies the trade-off between time and space in lazy evaluation, and opens a path towards more selective, automated strategies for controlling sharing in Haskell.
dc.description.abstractEsta tesis aborda un problema recurrente en la programación funcional perezosa: la retención excesiva de memoria debido a optimizaciones del compilador, como let-floating y el uso de thunks actualizables en GHC. Proponemos una transformación específica a nivel STG que marca ciertas clausuras como no actualizables, lo que impide que dichas clausuras se compartan. Nuestra evaluación muestra que esta intervención puede restaurar la ejecución en espacio constante en varios escenarios representativos, incluidos el procesamiento de flujos y los problemas de búsqueda. Sin embargo, la transformación no es de aplicación universal: puede aumentar el tiempo de ejecución debido a tener que recomputar ciertos valores, y en programas en los que el sharing de memoria es esencial, puede perjudicar significativamente el rendimiento. Aunque no es una solución completa, nuestro enfoque contribuye un mecanismo que aclara la relación entre tiempo y espacio en la evaluación perezosa, y abre un camino hacia estrategias más selectivas y automatizadas para controlar el sharing en Haskell.
dc.description.departmentDepto. de Sistemas Informáticos y Computación
dc.description.facultyFac. de Informática
dc.description.refereedTRUE
dc.description.statusunpub
dc.identifier.urihttps://hdl.handle.net/20.500.14352/124876
dc.language.isoeng
dc.master.titleMáster en Métodos Formales en Ingeniería Informática
dc.page.total60
dc.rightsAttribution-NonCommercial-NoDerivatives 4.0 Internationalen
dc.rights.accessRightsopen access
dc.rights.urihttp://creativecommons.org/licenses/by-nc-nd/4.0/
dc.subject.cdu004(043.3)
dc.subject.keywordHaskell
dc.subject.keywordGHC
dc.subject.keywordEvaluación perezosa
dc.subject.keywordOptimizaciones del compilador
dc.subject.keywordThunk
dc.subject.keywordFugas de memoria
dc.subject.keywordLet-floating
dc.subject.keywordTransformaciones en STG
dc.subject.keywordLazy evaluation
dc.subject.keywordCompiler optimizations
dc.subject.keywordMemory leaks
dc.subject.keywordLet- floating
dc.subject.keywordSTG transformations
dc.subject.ucmInformática (Informática)
dc.subject.unesco33 Ciencias Tecnológicas
dc.titleUndoing unwanted sharing in Haskell: An STG transformation
dc.typemaster thesis
dc.type.hasVersionAM
dspace.entity.typePublication

Download

Original bundle

Now showing 1 - 1 of 1
Loading...
Thumbnail Image
Name:
Undoing_ unwanted_ sharing _ Haskell.pdf
Size:
1.01 MB
Format:
Adobe Portable Document Format