Affiliation:
1. Inria, France
2. University of Freiburg, Germany
Abstract
Systems programming often requires the manipulation of resources like file handles, network connections, or dynamically allocated memory. Programmers need to follow certain protocols to handle these resources correctly. Violating these protocols causes bugs ranging from type mismatches over data races to use-after-free errors and memory leaks. These bugs often lead to security vulnerabilities.
While statically typed programming languages guarantee type soundness and memory safety by design, most of them do not address issues arising from improper handling of resources. An important step towards handling resources is the adoption of linear and affine types that enforce single-threaded resource usage. However, the few languages supporting such types require heavy type annotations.
We present Affe, an extension of ML that manages linearity and affinity properties using kinds and constrained types. In addition Affe supports the exclusive and shared borrowing of affine resources, inspired by features of Rust. Moreover, Affe retains the defining features of the ML family: it is an impure, strict, functional expression language with complete principal type inference and type abstraction. does not require any linearity annotations in expressions and supports common functional programming idioms.
Publisher
Association for Computing Machinery (ACM)
Subject
Safety, Risk, Reliability and Quality,Software
Reference38 articles.
1. The ins and outs of Clean I/O
2. Typestate-oriented programming
3. Type Soundness Proofs With Definitional Interpreters;Amin Nada;POPL. ACM,2017
4. Phil Bagwell. 2001. Ideal Hash Trees. Phil Bagwell. 2001. Ideal Hash Trees.
5. The Design and Formalization of Mezzo, a Permission-Based Programming Language
Cited by
5 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Functional Ownership through Fractional Uniqueness;Proceedings of the ACM on Programming Languages;2024-04-29
2. Kind Inference for the FreeST Programming Language;Electronic Proceedings in Theoretical Computer Science;2023-04-13
3. A Survey on Parallelism and Determinism;ACM Computing Surveys;2023-02-02
4. Linearly qualified types: generic inference for capabilities and uniqueness;Proceedings of the ACM on Programming Languages;2022-08-29
5. Linearity and Uniqueness: An Entente Cordiale;Programming Languages and Systems;2022