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
Когда Lifetimes Освобождают: Система Типов для Арен с Отслеживанием Достижимости Высшего Порядка
Статическое управление ресурсами в языках программирования остаётся сложной задачей, главным образом из-за напряжения между управляемостью, выразительностью и гибкостью. Системы на основе регионов обеспечивают массовое освобождение через лексически ограниченные регионы, но сами регионы и их ресурсы являются объектами второго класса, не могут выходить за пределы области видимости или свободно возвращаться. Системы владения и линейных типов, представленные Rust, обеспечивают нелексические времена жизни и сильные статические гарантии, но зависимые инварианты ограничивают паттерны высшего порядка и выразительное совместное использование.
В данной работе предложена новая система типов, объединяющая эти преимущества. Система рассматривает все выделенные в кучу ресурсы как объекты первого класса, одновременно позволяя программистам контролировать время жизни и гранулярность через три режима выделения: (1) свежее выделение для отдельных нелексических ссылок; (2) последующее совместное выделение, группирующее ресурсы в теневых аренах; (3) выделение в области видимости с лексически ограниченным временем жизни, следующее дисциплине стека. Независимо от режима, все ресурсы совместно используют единый тип, без различий в обобщённых абстракциях, сохраняя параметрическую способность языка высшего порядка.
Основная проблема, которую решает это исследование, — это реализация безопасного, гибкого и управляемого управления ресурсами в языках функционального программирования высшего порядка. Традиционные подходы сталкиваются со следующими дилеммами:
Компромисс между выделением в стеке и куче: Значения в стеке имеют строгое лексическое время жизни, безопасны и эффективны, но по сути являются объектами второго класса; выделение в куче создаёт свободно циркулирующие объекты первого класса, но жертвует предсказуемым контролем освобождения.
Ограничения существующих систем:
Системы на основе регионов (MLKit, Cyclone): обеспечивают массовое освобождение, но регионы и ресурсы — объекты второго класса
Системы типов владения (Rust): обеспечивают нелексические времена жизни, но ограничивают паттерны высшего порядка и выразительное совместное использование
Системы типов достижимости: поддерживают функции высшего порядка, но ограничены структурой телескопов, не могут обрабатывать циклические структуры хранения
Авторы стремятся объединить преимущества различных стратегий управления ресурсами: безопасность дисциплины стека, выразительность языков высшего порядка и гибкость рассмотрения ресурсов как объектов первого класса.
Унифицированная обработка ресурсов: Все ресурсы памяти являются объектами первого класса с единственным типом ссылки, абстрагируя выделение в стеке и куче, позволяя клиентскому коду оставаться обобщённым относительно конкретной модели хранения ссылок.
Гибкость управления: Ресурсы памяти могут быть нелексическими или лексическими под контролем пользователя, могут быть отдельными или коллективными, без различия типов.
Статические гарантии безопасности: Типы достижимости отслеживают поток ресурсов памяти и гарантируют их безопасное использование; пользователи могут применять выборочную дисциплину стека через нечувствительное к потоку рассуждение для гарантии предсказуемого освобождения и отсутствия ошибок использования после освобождения.
Выразительные возможности высшего порядка: Система поддерживает функции высшего порядка с изменяемым совместным использованием и циклическими структурами хранения, превосходя выразительность предыдущих систем типов достижимости.
Теневые арены — ключевое нововведение системы со следующими характеристиками:
Неявная идентификация: Арены не имеют явных имён или конструкторов в поверхностном синтаксисе, идентифицируются неявно через ссылки
Три формы выделения:
val fr = new Ref(42) // свежее выделение
val ar = new Ref(42) scoped // выделение в области видимости
val a1 = new Ref(42) at ar // совместное выделение
Теорема 4.1 (Прогресс): Если [∅ | Σ] φ ⊢ t : Q и Σ ok,
то t — значение или существуют t', σ' такие, что t | σ → t' | σ'
Теорема 4.2 (Сохранение): Если типизированный терм выполняет редукцию,
то существует расширенное окружение типов такое, что результат редукции остаётся типизированным
{ // начало области видимости
val a = new Ref() scoped
val c1, c2, c3 = new Ref(f) at a
c1 := x => { (!c2)(x) } // образование цикла
c2 := x => { (!c3)(x) }
c3 := x => { (!c1)(x) }
} // массовое освобождение {a, c1, c2, c3}
Демонстрирует безопасное построение и освобождение циклических структур ссылок.
Статья успешно объединяет типы достижимости, управление ресурсами на основе арен и дисциплину стека, обеспечивая лёгкую и выразительную основу для безопасного управления ресурсами в языках высшего порядка.
Значительный теоретический вклад: первое объединение дисциплины стека, выразительного совместного использования, ресурсов первого класса и функций высшего порядка в унифицированной системе
Выдающиеся технические инновации: теневые арены и грубозернистое отслеживание достижимости — важные инновации
Формальная строгость: полные механизированные доказательства повышают надёжность результатов
Повышение выразительности: преодоление ограничений структуры телескопов в предыдущих системах типов достижимости
Эта работа имеет важное значение в теории языков программирования, обеспечивая новую теоретическую основу для управления ресурсами и может повлиять на проектирование будущих языков программирования. Особенно для системного программирования, требующего точного управления ресурсами, этот метод открывает новые возможности.