2025-11-13T22:01:14.187429

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

Quand les Durées de Vie Libèrent : Un Système de Types pour les Arènes avec Suivi de Réachabilité d'Ordre Supérieur

Informations Fondamentales

  • ID de l'article : 2509.04253
  • Titre : When Lifetimes Liberate: A Type System for Arenas with Higher-Order Reachability Tracking
  • Auteurs : Siyuan He, Songlin Jia, Yuyan Bao, Tiark Rompf (Université Purdue, Université Augusta)
  • Classification : cs.PL (Langages de Programmation)
  • Date de Publication : 10 octobre 2025 (arXiv v2)
  • Lien de l'article : https://arxiv.org/abs/2509.04253

Résumé

La gestion statique des ressources dans les langages de programmation reste un défi majeur, principalement en raison des tensions entre contrôlabilité, expressivité et flexibilité. Les systèmes basés sur les régions offrent une libération en masse par le biais de régions à portée lexicale, mais les régions et leurs ressources sont des citoyens de second ordre, incapables de s'échapper de la portée ou de retourner librement. Les systèmes de propriété et de types linéaires, exemplifiés par Rust, offrent des durées de vie non lexicales et des garanties statiques fortes, mais les invariants dont ils dépendent limitent les modèles d'ordre supérieur et le partage expressif.

Ce travail propose un nouveau système de types qui unifie ces avantages. Le système traite toutes les ressources allouées sur le tas comme des valeurs de première classe, tout en permettant aux programmeurs de contrôler les durées de vie et la granularité par trois modes d'allocation : (1) allocation fraîche de références non lexicales individuelles ; (2) co-allocation collective de ressources au sein d'arènes fantômes ; (3) allocation à portée avec des durées de vie lexicales respectant la discipline de pile. Quel que soit le mode choisi, toutes les ressources partagent un type unifié, indifférentes dans les abstractions génériques, préservant les caractéristiques de paramétrisation d'ordre supérieur du langage.

Contexte et Motivation de la Recherche

Définition du Problème

Le problème fondamental que cette recherche vise à résoudre est la mise en œuvre d'une gestion des ressources sûre, flexible et contrôlable dans les langages fonctionnels d'ordre supérieur. Les approches traditionnelles font face aux dilemmes suivants :

  1. Compromis entre allocation sur pile et sur tas : Les valeurs de pile possèdent des durées de vie lexicales strictes, sûres et efficaces mais essentiellement des citoyens de second ordre ; l'allocation sur tas produit des valeurs de première classe pouvant circuler librement, mais sacrifie le contrôle prévisible de la libération.
  2. Limitations des systèmes existants :
    • Systèmes basés sur les régions (comme MLKit, Cyclone) : offrent une libération en masse mais les régions et ressources sont des citoyens de second ordre
    • Systèmes de types de propriété (comme Rust) : offrent des durées de vie non lexicales mais limitent les modèles d'ordre supérieur et le partage expressif
    • Systèmes de types de réachabilité : supportent les fonctions d'ordre supérieur mais sont limités par les structures de télescope, incapables de gérer les structures de stockage cycliques

Motivation de la Recherche

Les auteurs souhaitent unifier les avantages de différentes stratégies de gestion des ressources : la sécurité de la discipline de pile, l'expressivité des langages d'ordre supérieur, et la flexibilité de traiter les ressources comme des entités de première classe.

Contributions Principales

  1. Traitement unifié des ressources : Toutes les ressources mémoire sont des valeurs de première classe avec un seul type de référence, abstrayant l'allocation sur pile et sur tas, permettant au code client de rester générique par rapport au modèle de stockage spécifique des références.
  2. Flexibilité du contrôle : Les ressources mémoire peuvent devenir non lexicales ou lexicales sous contrôle utilisateur, individuelles ou collectives, sans distinction de type.
  3. Garanties de sécurité statique : Le suivi de réachabilité trace le flux des ressources mémoire et garantit leur utilisation sûre ; les utilisateurs peuvent imposer une discipline de pile sélective par le biais d'un raisonnement insensible au flux pour garantir une libération prévisible et l'absence d'erreurs d'utilisation après libération.
  4. Caractéristiques d'ordre supérieur expressives : Le système supporte les fonctions d'ordre supérieur avec partage mutable et structures de stockage cycliques, dépassant l'expressivité des systèmes de réachabilité antérieurs.

Détails de la Méthode

Concepts Fondamentaux

1. Arènes Fantômes (Shadow Arenas)

Les arènes fantômes sont l'innovation clé du système, avec les caractéristiques suivantes :

  • Identité implicite : Les arènes n'ont pas de noms explicites ou de constructeurs dans la syntaxe de surface, identifiées implicitement par les références
  • Trois formes d'allocation :
    val fr = new Ref(42)           // allocation fraîche
    val ar = new Ref(42) scoped    // allocation à portée  
    val a1 = new Ref(42) at ar     // co-allocation
    

2. Suivi de Réachabilité à Grain Grossier

Le système adopte un modèle de stockage bidimensionnel, chaque référence étant indexée par une localisation d'arène et un décalage interne (ℓ, o) :

  • La réachabilité est tracée à grain grossier au niveau de l'arène
  • Tous les objets au sein d'une même arène partagent le même identifiant de réachabilité
  • Élimine les contraintes de télescope, supportant des graphes d'objets arbitraires au sein des arènes

Conception du Système de Types

Calcul A^q<:

Le système de base étend le calcul F^q<:, incluant :

  • Arènes fantômes non lexicales : supportent les références s'échappant de leur portée lexicale
  • Syntaxe de co-allocation : ref t1 at t2 place une nouvelle référence dans une arène existante
  • Type de référence unifié : toutes les formes d'allocation partagent le type Ref[T]^q

Calcul {A}^q<:

Étend A^q<: en ajoutant la gestion des ressources à portée :

  • Allocation à portée : ref t as x in b crée une référence lexicalement délimitée
  • Raisonnement insensible au flux : garantit la libération sûre par le biais du suivi dynamique des localisations locales
  • Libération en masse : libère automatiquement l'arène entière à la fin de la portée

Points d'Innovation Technique

  1. Assouplissement des structures de télescope : permet les structures cycliques au sein et entre les arènes par le biais du suivi à grain grossier
  2. Abstraction de type unifié : élimine la distinction de type entre ressources de première et de second ordre
  3. Discipline de pile sélective : fournit une libération prévisible tout en maintenant un raisonnement insensible au flux

Configuration Expérimentale

Vérification Formelle

  • Preuves mécanisées : tous les résultats formels sont mécanisés en Rocq
  • Sécurité des types : preuves des théorèmes de progrès et de préservation
  • Sécurité mémoire : garantit l'absence d'erreurs d'utilisation après libération

Études de Cas

L'article valide l'expressivité du système par trois études de cas :

  1. Enregistrement de rappels : montre comment les arènes non lexicales supportent les modèles de programmation orientée événements
  2. Combinateur de point fixe générique : prouve que le système surmonte les limitations des types de réachabilité antérieurs
  3. Structures de stockage cycliques : démontre la capacité à construire et recycler en toute sécurité des structures avec cycles multi-sauts

Résultats Expérimentaux

Résultats Principaux

Preuves de Sécurité des Types

Théorème 4.1 (Progrès) : Si [∅ | Σ] φ ⊢ t : Q et Σ ok,
alors t est une valeur ou il existe t', σ' tels que t | σ → t' | σ'

Théorème 4.2 (Préservation) : Si un terme bien typé se réduit,
alors il existe un environnement de type étendu tel que le résultat 
de la réduction reste bien typé

Amélioration de l'Expressivité

La comparaison avec les systèmes existants montre que ce système réalise l'intersection des caractéristiques suivantes :

  • ✓ Discipline de pile
  • ✓ Partage expressif
  • ✓ Ressources de première classe
  • ✓ Fonctions d'ordre supérieur

C'est le premier travail à réaliser tous ces attributs dans un système unifié.

Analyse des Cas

Modèle d'Enregistrement de Rappels

val makeHandler = {
  val rp = new Ref() // pool de ressources non lexical
  (cb: Int => Unit) => {
    val h = new Ref(cb) at rp
    h // retourne le gestionnaire
  }
}

Montre comment utiliser les arènes non lexicales pour gérer les durées de vie des rappels.

Traitement des Structures Cycliques

{ // début de portée
  val a = new Ref() scoped
  val c1, c2, c3 = new Ref(f) at a
  c1 := x => { (!c2)(x) } // forme un cycle
  c2 := x => { (!c3)(x) }
  c3 := x => { (!c1)(x) }
} // libération en masse {a, c1, c2, c3}

Démontre la construction et la libération sûres de structures de référence cycliques.

Travaux Connexes

Systèmes de Régions/Arènes

  • MLKit : gestion implicite des régions dans les langages fonctionnels
  • Cyclone : régions explicites et types existentiels dans les langages de style C
  • Régions linéaires : combinaison de types linéaires et de concepts de régions

Propriété et Types Linéaires

  • Rust : propriété unique et chemin d'accès mutable unique
  • Pony : régions implicites et capacités fractionnaires
  • Vergio : propriété combinée avec régions explicites

Types de Réachabilité

  • F^q<: : système de types de réachabilité polymorphe
  • λ^◦ : extension supportant l'auto-cyclage
  • Types de capture : système de sécurité des effets dans Scala

Conclusion et Discussion

Conclusions Principales

L'article unifie avec succès les types de réachabilité, la gestion des ressources basée sur les arènes et la discipline de pile, fournissant une base légère et expressive pour la gestion sûre des ressources dans les langages d'ordre supérieur.

Limitations

  1. Limitations de construction cyclique : bien que supportant les structures cycliques, au moins deux cellules sont nécessaires
  2. Extensions sensibles au flux : la libération explicite nécessite toujours une extension d'effets sensible au flux supplémentaire
  3. Complexité d'implémentation : le modèle de stockage bidimensionnel augmente la complexité de l'implémentation à l'exécution

Directions Futures

  1. Optimisation des performances : recherche d'implémentations efficaces du modèle de stockage bidimensionnel
  2. Extensions concurrentes : extension du système aux paramètres concurrents
  3. Intégration dans les langages pratiques : implémentation du système dans les langages de programmation réels

Évaluation Approfondie

Avantages

  1. Contribution théorique significative : première réalisation de l'intersection de la discipline de pile, du partage expressif, des ressources de première classe et des fonctions d'ordre supérieur dans un système unifié
  2. Innovation technique remarquable : les arènes fantômes et le suivi de réachabilité à grain grossier sont des innovations importantes
  3. Rigueur formelle : les preuves mécanisées complètes renforcent la crédibilité des résultats
  4. Amélioration de l'expressivité : surmonte les limitations des structures de télescope des systèmes de types de réachabilité antérieurs

Insuffisances

  1. Utilité pratique limitée : pas encore implémenté dans des langages réels, la valeur pratique reste à vérifier
  2. Considérations de performance insuffisantes : manque d'analyse de l'impact sur les performances du modèle de stockage bidimensionnel
  3. Courbe d'apprentissage abrupte : la complexité du système peut affecter l'adoption par les programmeurs

Impact

Ce travail a une importance significative dans le domaine de la théorie des langages de programmation, fournissant une nouvelle base théorique pour la gestion des ressources, susceptible d'influencer la conception des futurs langages de programmation. En particulier, pour les domaines de la programmation système nécessitant un contrôle précis des ressources, cette approche offre de nouvelles possibilités.

Scénarios d'Application

  1. Programmation système : systèmes bas niveau nécessitant une gestion précise de la mémoire
  2. Systèmes embarqués : programmation sûre dans les environnements aux ressources limitées
  3. Langages fonctionnels : langages fonctionnels d'ordre supérieur nécessitant des capacités de gestion des ressources
  4. Systèmes concurrents : partage sûr des ressources dans les environnements multi-threads

Références

L'article cite des travaux importants dans le domaine de la théorie des langages de programmation, notamment :

  • Grossman et al. 2002 : système de régions Cyclone
  • Tofte et al. 2001 : raisonnement sur les régions MLKit
  • Wei et al. 2024 : types de réachabilité polymorphes
  • Clarke et al. 2013 : types de propriété Rust
  • Bao et al. 2021 : théorie fondamentale des types de réachabilité