{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,1,18]],"date-time":"2026-01-18T03:00:36Z","timestamp":1768705236172,"version":"3.49.0"},"reference-count":38,"publisher":"Association for Computing Machinery (ACM)","issue":"ICFP","license":[{"start":{"date-parts":[[2020,8,2]],"date-time":"2020-08-02T00:00:00Z","timestamp":1596326400000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"funder":[{"name":"German Research Council","award":["TH 665\/11-1"],"award-info":[{"award-number":["TH 665\/11-1"]}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["Proc. ACM Program. Lang."],"published-print":{"date-parts":[[2020,8,2]]},"abstract":"<jats:p>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.<\/jats:p>\n          <jats:p>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.<\/jats:p>\n          <jats:p>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.<\/jats:p>","DOI":"10.1145\/3408985","type":"journal-article","created":{"date-parts":[[2020,8,3]],"date-time":"2020-08-03T13:48:02Z","timestamp":1596462482000},"page":"1-29","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":8,"title":["Kindly bent to free us"],"prefix":"10.1145","volume":"4","author":[{"given":"Gabriel","family":"Radanne","sequence":"first","affiliation":[{"name":"Inria, France"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Hannes","family":"Saffrich","sequence":"additional","affiliation":[{"name":"University of Freiburg, Germany"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Peter","family":"Thiemann","sequence":"additional","affiliation":[{"name":"University of Freiburg, Germany"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2020,8,3]]},"reference":[{"key":"e_1_2_2_1_1","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796800001258"},{"key":"e_1_2_2_2_1","doi-asserted-by":"publisher","DOI":"10.1145\/1639950.1640073"},{"key":"e_1_2_2_3_1","first-page":"666","article-title":"Type Soundness Proofs With Definitional Interpreters","author":"Amin Nada","year":"2017","journal-title":"POPL. ACM"},{"key":"e_1_2_2_4_1","unstructured":"Phil Bagwell. 2001. Ideal Hash Trees.  Phil Bagwell. 2001. Ideal Hash Trees."},{"key":"e_1_2_2_5_1","doi-asserted-by":"publisher","DOI":"10.1145\/2837022"},{"key":"e_1_2_2_6_1","doi-asserted-by":"publisher","DOI":"10.1007\/BFb0026821"},{"key":"e_1_2_2_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/3158093"},{"key":"e_1_2_2_8_1","doi-asserted-by":"publisher","DOI":"10.1145\/1040305.1040329"},{"key":"e_1_2_2_9_1","doi-asserted-by":"publisher","DOI":"10.1145\/1292535.1292541"},{"key":"e_1_2_2_10_1","first-page":"59","article-title":"Enforcing High-Level Protocols in Low-Level Software","author":"DeLine Robert","year":"2001","journal-title":"PLDI. ACM"},{"key":"e_1_2_2_11_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-319-89719-6_6"},{"key":"e_1_2_2_12_1","doi-asserted-by":"publisher","DOI":"10.1145\/2629609"},{"key":"e_1_2_2_13_1","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796809990268"},{"key":"e_1_2_2_14_1","doi-asserted-by":"publisher","DOI":"10.1016\/0304-3975(87)90045-4"},{"key":"e_1_2_2_15_1","doi-asserted-by":"publisher","DOI":"10.1145\/512529.512563"},{"key":"e_1_2_2_16_1","unstructured":"Rich Hickey. 2017. clojure\/PersistentHashMap.java. https:\/\/github.com\/richhickey\/clojure\/blob\/master\/src\/jvm\/clojure\/ lang\/PersistentHashMap.java  Rich Hickey. 2017. clojure\/PersistentHashMap.java. https:\/\/github.com\/richhickey\/clojure\/blob\/master\/src\/jvm\/clojure\/ lang\/PersistentHashMap.java"},{"key":"e_1_2_2_17_1","doi-asserted-by":"publisher","DOI":"10.1145\/3158154"},{"key":"e_1_2_2_18_1","volume-title":"Behavioral Types: From Theory to Tools, Simon Gay and Ant\u00f3nio Ravara (Eds.)","author":"Lindley Sam"},{"key":"e_1_2_2_19_1","doi-asserted-by":"publisher","DOI":"10.1145\/2663171.2663188"},{"key":"e_1_2_2_20_1","volume-title":"A Modular Inference of Linear Types for Multiplicity-Annotated Arrows. CoRR abs\/","author":"Matsuda Kazutaka","year":"1911"},{"key":"e_1_2_2_21_1","doi-asserted-by":"publisher","DOI":"10.1145\/1708016.1708027"},{"key":"e_1_2_2_22_1","doi-asserted-by":"publisher","DOI":"10.1145\/2951913.2951925"},{"key":"e_1_2_2_23_1","volume-title":"CoRR abs\/","author":"Munch-Maccagnoni Guillaume","year":"1803"},{"key":"e_1_2_2_24_1","doi-asserted-by":"crossref","unstructured":"Martin Odersky Martin Sulzmann and Martin Wehr. 1999. Type Inference with Constrained Types. TAPOS 5 1 ( 1999 ) 35-55.  Martin Odersky Martin Sulzmann and Martin Wehr. 1999. Type Inference with Constrained Types. TAPOS 5 1 ( 1999 ) 35-55.","DOI":"10.1002\/(SICI)1096-9942(199901\/03)5:1<35::AID-TAPO4>3.0.CO;2-4"},{"key":"e_1_2_2_25_1","doi-asserted-by":"publisher","DOI":"10.1145\/224164.224195"},{"key":"e_1_2_2_26_1","volume-title":"ESOP (Lecture Notes in Computer Science","author":"Owens Scott"},{"key":"e_1_2_2_27_1","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796816000289"},{"key":"e_1_2_2_28_1","doi-asserted-by":"publisher","DOI":"10.1145\/503272.503302"},{"key":"e_1_2_2_30_1","doi-asserted-by":"publisher","DOI":"10.1145\/3110260"},{"key":"e_1_2_2_31_1","doi-asserted-by":"publisher","DOI":"10.1109\/LICS.2002.1029817"},{"key":"e_1_2_2_32_1","unstructured":"Jeremy Siek. 2013. Type Safety in Three Easy Lemmas. http:\/\/siek.blogspot.de\/2013\/05\/type-safety-in-three-easy-lemmas. html.  Jeremy Siek. 2013. Type Safety in Three Easy Lemmas. http:\/\/siek.blogspot.de\/2013\/05\/type-safety-in-three-easy-lemmas. html."},{"key":"e_1_2_2_33_1","doi-asserted-by":"publisher","DOI":"10.1145\/944705.944710"},{"key":"e_1_2_2_34_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-540-40018-9_19"},{"key":"e_1_2_2_35_1","doi-asserted-by":"publisher","DOI":"10.1145\/1180475.1180476"},{"key":"e_1_2_2_36_1","doi-asserted-by":"publisher","DOI":"10.1016\/S1571-0661(04)80779-5"},{"key":"e_1_2_2_37_1","doi-asserted-by":"publisher","DOI":"10.1145\/1926385.1926436"},{"key":"e_1_2_2_38_1","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-61739-6_52"},{"key":"e_1_2_2_39_1","volume-title":"Oxide: The Essence of Rust. CoRR abs\/","author":"Weiss Aaron","year":"2019"}],"container-title":["Proceedings of the ACM on Programming Languages"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3408985","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3408985","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,17]],"date-time":"2025-06-17T20:47:59Z","timestamp":1750193279000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3408985"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2020,8,2]]},"references-count":38,"journal-issue":{"issue":"ICFP","published-print":{"date-parts":[[2020,8,2]]}},"alternative-id":["10.1145\/3408985"],"URL":"https:\/\/doi.org\/10.1145\/3408985","relation":{},"ISSN":["2475-1421"],"issn-type":[{"value":"2475-1421","type":"electronic"}],"subject":[],"published":{"date-parts":[[2020,8,2]]},"assertion":[{"value":"2020-08-03","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}