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
عندما تحرر الأعمار: نظام نوع للساحات مع تتبع القابلية للوصول من الدرجة الأعلى
إدارة الموارد الثابتة في لغات البرمجة لا تزال مليئة بالتحديات، وتنبع بشكل أساسي من التوتر بين التحكم والتعبيرية والمرونة. توفر الأنظمة القائمة على المناطق إطلاقاً جماعياً من خلال نطاقات معجمية، لكن المناطق ومواردها كلاهما مواطنون من الدرجة الثانية، غير قادرين على الهروب من النطاق أو العودة بحرية. توفر أنظمة الملكية والأنواع الخطية، ممثلة بـ Rust، أعماراً غير معجمية وضمانات ثابتة قوية، لكن الثوابت التي تعتمد عليها تحد من الأنماط من الدرجة الأعلى والمشاركة التعبيرية.
يقترح هذا العمل نظام نوع جديد يوحد هذه المزايا. يعامل النظام جميع موارد الكومة المخصصة كقيم من الدرجة الأولى، مع السماح للمبرمجين بالتحكم في الأعمار والحبيبات من خلال ثلاثة أنماط تخصيص: (1) التخصيص الطازج للمراجع غير المعجمية الفردية؛ (2) إعادة التخصيص الجماعي لتجميع الموارد داخل ساحات الظل؛ (3) التخصيص المحدود بنطاق مع أعمار حدود معجمية تتبع انضباط المكدس. بغض النظر عن النمط المستخدم، تشترك جميع الموارد في نوع موحد، بدون تمييز في الملخصات العامة، مما يحافظ على خصائص البرمجة البارامترية من الدرجة الأعلى للغة.
المشكلة الأساسية التي يحاول هذا البحث حلها هي تحقيق إدارة موارد آمنة ومرنة وقابلة للتحكم في لغات البرمجة الوظيفية من الدرجة الأعلى. تواجه الطرق التقليدية المعضلات التالية:
المقايضة بين تخصيص المكدس والكومة:
قيم المكدس لها أعمار معجمية صارمة، آمنة وفعالة لكنها بطبيعتها مواطنون من الدرجة الثانية
التخصيص على الكومة ينتج قيماً من الدرجة الأولى تتدفق بحرية، لكنه يضحي بالتحكم المتنبأ به في الإطلاق
قيود الأنظمة الموجودة:
الأنظمة القائمة على المناطق (مثل MLKit و Cyclone): توفر إطلاقاً جماعياً لكن المناطق والموارد كلاهما من الدرجة الثانية
أنظمة أنواع الملكية (مثل Rust): توفر أعماراً غير معجمية لكنها تحد من الأنماط من الدرجة الأعلى والمشاركة التعبيرية
أنظمة أنواع القابلية للوصول: تدعم الدوال من الدرجة الأعلى لكنها محدودة بقيود البنية التلسكوبية، غير قادرة على التعامل مع هياكل التخزين الدورية
يأمل المؤلفون توحيد مزايا استراتيجيات إدارة الموارد المختلفة: سلامة انضباط المكدس، والتعبيرية في اللغات من الدرجة الأعلى، والمرونة في التعامل مع الموارد كيانات من الدرجة الأولى.
معالجة موارد موحدة: جميع موارد الذاكرة هي قيم من الدرجة الأولى بنوع مرجع واحد، مما يجرد التخصيص على المكدس والكومة، مما يسمح لكود العميل بأن يكون عاماً فيما يتعلق بنموذج التخزين المحدد للمرجع.
مرونة التحكم: يمكن لموارد الذاكرة أن تصبح غير معجمية أو معجمية تحت سيطرة المستخدم، يمكن أن تكون فردية أو جماعية، وبدون تمييز نوع.
ضمانات السلامة الثابتة: تتبع أنواع القابلية للوصول تدفق موارد الذاكرة وتضمن استخدامها الآمن؛ يمكن للمستخدمين فرض انضباط مكدس انتقائي من خلال الاستدلال غير الحساس للتدفق لضمان الإطلاق المتنبأ به وعدم وجود أخطاء استخدام بعد الإطلاق.
خصائص من الدرجة الأعلى تعبيرية: يدعم النظام الدوال من الدرجة الأعلى ذات المشاركة المتغيرة وهياكل التخزين الدورية، متجاوزاً التعبيرية في الأنظمة السابقة للقابلية للوصول.
النظرية 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}
يوضح البناء الآمن والإطلاق الآمن لهياكل المراجع الدورية.
تحقق الورقة بنجاح توحيد أنواع القابلية للوصول وإدارة الموارد القائمة على الساحات وانضباط المكدس، مما يوفر أساساً خفيفاً وتعبيرياً لإدارة الموارد الآمنة في اللغات من الدرجة الأعلى.
يحمل هذا العمل أهمية كبيرة في مجال نظرية لغات البرمجة، ويوفر أساساً نظرياً جديداً لإدارة الموارد، وقد يؤثر على تصميم لغات البرمجة المستقبلية. خاصة بالنسبة للمجالات التي تتطلب التحكم الدقيق في الموارد مثل البرمجة النظامية، توفر هذه الطريقة إمكانيات جديدة.