Filters








7 Hits in 2.7 sec

Retrofitting Typestates into Rust

José Duarte, António Ravara
2021 25th Brazilian Symposium on Programming Languages  
We propose an approach to bring typestates to Rust, without any external tools, leveraging only Rust's type and macro systems.  ...  available at https://github.com/rustype/typestate-rs.  ...  Languages providing equally powerful meta-programming systems may be able to retrofit typestates into them, following this approach, provided the rest of the requirements are met.  ... 
doi:10.1145/3475061.3475082 fatcat:2yaxcysetndwtbq6oq4hxbpskq

Linear Haskell: practical linearity in a higher-order polymorphic language

Jean-Philippe Bernardy, Mathieu Boespflug, Ryan R. Newton, Simon Peyton Jones, Arnaud Spiwack
2017 Proceedings of the ACM on Programming Languages  
Rather than bifurcate types into linear and non-linear counterparts, we instead attach linearity to function arrows.  ...  Retrofits often involve compromise and ad-hoc choices, but in fact we have found that, as well as fitting into Haskell, our design holds together in its own right.  ...  In-place update & typestate.  ... 
doi:10.1145/3158093 dblp:journals/pacmpl/BernardyBNJS18 fatcat:7s3x7hlhzvhoxenqcmbt6fnutm

Kindly Bent to Free Us [article]

Gabriel Radanne, Hannes Saffrich, Peter Thiemann
2020 arXiv   pre-print
In addition Affe supports the exclusive and shared borrowing of affine resources, inspired by features of Rust.  ...  The goal of Linear Haskell [7] (LH) is to retrofit linear types to Haskell.  ...  Vault [10] and Plaid [2, 12] leverage typestate and capabilities to express rich properties in objects and protocols.  ... 
arXiv:1908.09681v4 fatcat:vhnbmc6vmbhtlaoafyrvghr3ja

Kindly bent to free us

Gabriel Radanne, Hannes Saffrich, Peter Thiemann
2020 Proceedings of the ACM on Programming Languages (PACMPL)  
The goal of Linear Haskell [7] (LH) is to retrofit linear types to Haskell.  ...  Vault [10] and Plaid [2, 12] leverage typestate and capabilities to express rich properties in objects and protocols.  ...  the recursive call eval δ π ' γ ' i' e' where γ ′ = γ (x → ρ ′ ). the only change of the environments is at x; adding the borrow modifier b succeeds due to the second premise; the address ρ ′ stored into  ... 
doi:10.1145/3408985 fatcat:fb32mo42fzc5thggvtxd4sjkoi

Automated Use-After-Free Detection and Exploit Mitigation: How Far Have We Gone

Binfa Gui, Wei Song, Hailong Xiong, Jeff Huang
2021 IEEE Transactions on Software Engineering  
retrofitting of legacy code,” in Proceedings of the ACM SIGPLAN [95] M. Bauer and C.  ...  object into the corresponding shadow memory.  ... 
doi:10.1109/tse.2021.3121994 fatcat:35opzmr2gbg67mnftjkdedm7y4

LIPIcs, Volume 136, SNAPL'19, Complete Volume [article]

Benjamin S. Lerner, Rastislav Bodík, Shriram Krishnamurthi
2019
We also discuss more general notions of typestate, such as statically verified finite state machines. Students then design and build a session-typed (simplified) TCP implementation in Rust.  ...  This arc covers two assignments: first, students implement a WebAssembly interpreter in Rust to learn Rust basics and reinforce knowledge of WebAssembly semantics.  ... 
doi:10.4230/lipics.snapl.2019 fatcat:bcqs46cqtvfmfjjj6icdg5jc5e

LIPIcs, Volume 32, SNAPL'15, Complete Volume [article]

Thomas Ball, Rastislav Bodik, Shriram Krishnamurthi, Benjamin S. Lerner, Greg Morrisett
2015
Why ML and Rust?  ...  Verified compiler: Rust to GTVM.  ...  Interpreter + Staging = Compiler Let us turn our CSV reader into a query engine that can run simple SQL queries.  ... 
doi:10.4230/lipics.snapl.2015 fatcat:ljoxwa7wp5achn2tbrmpriez7y