When Lifetimes Liberate: A Type System for Arenas with Higher-Order Reachability Tracking
He, Jia, Bao et al.
Static resource management in languages remains challenging due to tensions among control, expressiveness, and flexibility. Region-based systems [Grossman et al . 2002; Tofte et al. 2001] offer bulk deallocation via lexically scoped regions, where all allocations follow a stack discipline. However, both regions and their resources are second-class, and neither can escape its scope nor be freely returned. Ownership and linear type systems, exemplified by Rust [Clarke et al. 2013], offer non-lexical lifetimes and robust static guarantees, but rely on invariants that limit higher-order patterns and expressive sharing.
In this work, we propose a new type system that unifies these strengths. Our system treats all heap-allocated resources as first-class values, while allowing programmers to control lifetime and granularity through three allocation modes: (1) fresh allocation for individual, non-lexical references; (2) subsequent coallocation grouping resources collectively within shadow arenas; and (3) scoped allocation with lexically bounded lifetimes following stack discipline. Regardless of mode, all resources share a uniform type and have no distinction for generic abstractions, preserving the higher-order parametric nature of the language.
Obtaining static safety in higher-order languages with flexible sharing is nontrivial. We address this by extending reachability types [Wei et al. 2024] to collectively track first-class resources, and by adopting flow-insensitive deallocation reasoning for selective stack discipline. These mechanisms yield Aq<: and {A}q<: atop, both formalized and proven type safe and memory safe in Rocq.
academic
Cuando los Tiempos de Vida Liberan: Un Sistema de Tipos para Arenas con Rastreo de Alcanzabilidad de Orden Superior
La gestión estática de recursos en lenguajes de programación sigue siendo un desafío considerable, originado principalmente por la tensión entre controlabilidad, expresividad y flexibilidad. Los sistemas basados en regiones proporcionan liberación en lote a través de regiones de alcance léxico, pero las regiones y sus recursos son ciudadanos de segunda clase, incapaces de escapar del alcance o retornarse libremente. Los sistemas de propiedad y tipos lineales, representados por Rust, proporcionan tiempos de vida no léxicos y garantías estáticas sólidas, pero los invariantes de los que dependen limitan los patrones de orden superior y el compartir expresivo.
Este trabajo propone un nuevo sistema de tipos que unifica estas ventajas. El sistema trata todos los recursos asignados en el montículo como valores de primera clase, permitiendo simultáneamente a los programadores controlar los tiempos de vida y la granularidad a través de tres modos de asignación: (1) asignación fresca de referencias no léxicas individuales; (2) coasignación colectiva de recursos dentro de arenas sombra; (3) asignación de alcance con tiempos de vida de límites léxicos que siguen disciplina de pila. Independientemente del modo empleado, todos los recursos comparten un tipo unificado, sin distinción en abstracciones genéricas, preservando las características de parametrización de orden superior del lenguaje.
El problema central que esta investigación aborda es la implementación de gestión de recursos segura, flexible y controlable en lenguajes funcionales de orden superior. Los enfoques tradicionales enfrentan los siguientes dilemas:
Equilibrio entre asignación en pila y montículo: Los valores en pila poseen tiempos de vida léxicos estrictos, seguros y eficientes pero inherentemente son ciudadanos de segunda clase; la asignación en montículo produce valores de primera clase que fluyen libremente, pero sacrifica el control predecible de liberación.
Limitaciones de los sistemas existentes:
Sistemas basados en regiones (como MLKit, Cyclone): proporcionan liberación en lote pero regiones y recursos son ciudadanos de segunda clase
Sistemas de tipos de propiedad (como Rust): proporcionan tiempos de vida no léxicos pero limitan patrones de orden superior y compartir expresivo
Sistemas de tipos de alcanzabilidad: soportan funciones de orden superior pero están limitados por estructuras de telescopio, incapaces de manejar estructuras de almacenamiento cíclico
Los autores desean unificar las ventajas de diferentes estrategias de gestión de recursos: la seguridad de la disciplina de pila, la expresividad de lenguajes de orden superior, y la flexibilidad de tratar recursos como entidades de primera clase.
Tratamiento unificado de recursos: Todos los recursos de memoria son valores de primera clase con un único tipo de referencia, abstrayendo asignación en pila y montículo, permitiendo que código cliente permanezca genérico respecto al modelo de almacenamiento específico de referencias.
Flexibilidad de control: Los recursos de memoria pueden convertirse en no léxicos o léxicos bajo control del usuario, pueden ser individuales o colectivos, y sin distinción de tipos.
Garantías de seguridad estática: El rastreo de tipos de alcanzabilidad monitorea el flujo de recursos de memoria y garantiza su uso seguro; los usuarios pueden imponer disciplina de pila selectiva a través de razonamiento insensible al flujo para garantizar liberación predecible y ausencia de errores de uso después de liberación.
Características expresivas de orden superior: El sistema soporta funciones de orden superior con compartir mutable y estructuras de almacenamiento cíclico, superando la expresividad de sistemas de alcanzabilidad previos.
Las arenas sombra son la innovación clave del sistema, con las siguientes características:
Identificación implícita: Las arenas no tienen nombres explícitos o constructores en la sintaxis superficial, se identifican implícitamente a través de referencias
Tres formas de asignación:
val fr = new Ref(42) // asignación fresca
val ar = new Ref(42) scoped // asignación de alcance
val a1 = new Ref(42) at ar // coasignación
El sistema emplea un modelo de almacenamiento bidimensional, donde cada referencia se indexa mediante ubicación de arena y desplazamiento interno (ℓ, o):
La alcanzabilidad se rastrea a grano grueso en el nivel de arena ℓ
Todos los objetos dentro de la misma arena comparten el mismo identificador de alcanzabilidad
Elimina restricciones de telescopio, soportando grafos de objetos arbitrarios dentro de arenas
Teorema 4.1 (Progreso): Si [∅ | Σ] φ ⊢ t : Q y Σ ok,
entonces t es un valor o existe t'、σ' tal que t | σ → t' | σ'
Teorema 4.2 (Preservación): Si un término bien tipado realiza reducción,
entonces existe un entorno de tipos extendido tal que el resultado
de la reducción sigue siendo bien tipado
{ // inicio de alcance
val a = new Ref() scoped
val c1, c2, c3 = new Ref(f) at a
c1 := x => { (!c2)(x) } // forma ciclo
c2 := x => { (!c3)(x) }
c3 := x => { (!c1)(x) }
} // libera en lote {a, c1, c2, c3}
Demuestra construcción segura y liberación de estructuras de referencias cíclicas.
El artículo unifica exitosamente tipos de alcanzabilidad, gestión de recursos basada en arenas y disciplina de pila, proporcionando una base ligera y expresiva para gestión segura de recursos en lenguajes de orden superior.
Contribución teórica significativa: Primera implementación en un sistema unificado de la intersección de disciplina de pila, compartir expresivo, recursos de primera clase y funciones de orden superior
Innovación técnica destacada: Las arenas sombra y rastreo de alcanzabilidad de grano grueso son innovaciones importantes
Rigor formal: Las pruebas mecanizadas completas aumentan la credibilidad de los resultados
Mejora de expresividad: Supera las limitaciones de estructuras de telescopio de sistemas de tipos de alcanzabilidad previos
Este trabajo tiene importancia significativa en el campo de la teoría de lenguajes de programación, proporcionando una nueva base teórica para gestión de recursos que puede influir en el diseño de futuros lenguajes de programación. Particularmente para campos de programación de sistemas que requieren control preciso de memoria, este método ofrece nuevas posibilidades.