Closure conversion is a program transformation at work in compilers for functional languages to turn inner functions into global ones, by building closures pairing the transformed functions with the environment of their free variables. Abstract machines rely on similar and yet different concepts of closures and environments. We study the relationship between the two approaches. We adopt a simple λ -calculus with tuples as source language and study abstract machines for both the source language and the target of closure conversion. Moreover, we focus on the simple case of flat closures/environments (no sharing of environments). We provide three contributions. Firstly, a new simple proof technique for the correctness of closure conversion, inspired by abstract machines. Secondly, we show how the closure invariants of the target language allow us to design a new way of handling environments in abstract machines, not suffering the shortcomings of other styles. Thirdly, we study the machines from the point of view of time complexity. We show that closure conversion decreases various dynamic costs while increasing the size of the initial code. Despite these changes, the overall complexity of the machines before and after closure conversion turns out to be the same.

Accattoli, B., Belo Lourenco, C., Ghica, D.R., Guerrieri, G., Sacerdoti Coen, C. (2025). Closure Conversion, Flat Environments, and the Complexity of Abstract Machines. Association for Computing Machinery, Inc [10.1145/3756907.3756922].

Closure Conversion, Flat Environments, and the Complexity of Abstract Machines

Sacerdoti Coen C.
2025

Abstract

Closure conversion is a program transformation at work in compilers for functional languages to turn inner functions into global ones, by building closures pairing the transformed functions with the environment of their free variables. Abstract machines rely on similar and yet different concepts of closures and environments. We study the relationship between the two approaches. We adopt a simple λ -calculus with tuples as source language and study abstract machines for both the source language and the target of closure conversion. Moreover, we focus on the simple case of flat closures/environments (no sharing of environments). We provide three contributions. Firstly, a new simple proof technique for the correctness of closure conversion, inspired by abstract machines. Secondly, we show how the closure invariants of the target language allow us to design a new way of handling environments in abstract machines, not suffering the shortcomings of other styles. Thirdly, we study the machines from the point of view of time complexity. We show that closure conversion decreases various dynamic costs while increasing the size of the initial code. Despite these changes, the overall complexity of the machines before and after closure conversion turns out to be the same.
2025
Proceedings of the 27th International Symposium on Principles and Practice of Declarative Programming
1
15
Accattoli, B., Belo Lourenco, C., Ghica, D.R., Guerrieri, G., Sacerdoti Coen, C. (2025). Closure Conversion, Flat Environments, and the Complexity of Abstract Machines. Association for Computing Machinery, Inc [10.1145/3756907.3756922].
Accattoli, B.; Belo Lourenco, C.; Ghica, D. R.; Guerrieri, G.; Sacerdoti Coen, C.
File in questo prodotto:
File Dimensione Formato  
3756907.3756922.pdf

accesso aperto

Tipo: Versione (PDF) editoriale / Version Of Record
Licenza: Licenza per Accesso Aperto. Creative Commons Attribuzione (CCBY)
Dimensione 747.24 kB
Formato Adobe PDF
747.24 kB Adobe PDF Visualizza/Apri

I documenti in IRIS 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/11585/1046023
Citazioni
  • ???jsp.display-item.citation.pmc??? ND
  • Scopus 0
  • ???jsp.display-item.citation.isi??? 0
social impact