Abstract
The programming language Mezzo is equipped with a rich type system that controls aliasing and access to mutable memory. We give a comprehensive tutorial overview of the language. Then we present a modular formalization of Mezzo’s core type system, in the form of a concurrent λ-calculus, which we successively extend with references, locks, and adoption and abandon, a novel mechanism that marries Mezzo’s static ownership discipline with dynamic ownership tests. We prove that well-typed programs do not go wrong and are data-race free. Our definitions and proofs are machine checked.
- Peter Achten and Marinus J. Plasmeijer. 1995. The ins and outs of clean I/O. J. Funct. Program. 5, 1 (1995), 81--110.Google Scholar
Cross Ref
- Amal Ahmed, Matthew Fluet, and Greg Morrisett. 2007. L<sup>3</sup>: A linear language with locations. Fundam. Inform. 77, 4 (2007), 397--449. Google Scholar
Digital Library
- Afshin Amighi, Christian Haack, Marieke Huisman, and Clément Hurlin. 2015. Permission-based separation logic for multithreaded Java programs. Logic. Methods. Comput. Sci. 11, 1 (2015), 1--66.Google Scholar
Cross Ref
- Timos Antonopoulos, Nikos Gorogiannis, Christoph Haase, Max I. Kanovich, and Joël Ouaknine. 2014. Foundations for decision problems in separation logic with general inductive predicates. In Foundations of Software Science and Computation Structures (FOSSACS) (Lecture Notes in Computer Science), Vol. 8412. Springer, Berlin, 411--425.Google Scholar
- Thibaut Balabonski and François Pottier. 2014. A Coq formalization of Mezzo, take 2. (July 2014). http://gallium.inria.fr/∼fpottier/mezzo/mezzo-coq.tar.gz.Google Scholar
- Thibaut Balabonski, François Pottier, and Jonathan Protzenko. 2014. Type soundness and race freedom for Mezzo. In Proceedings of the 12th International Symposium on Functional and Logic Programming (FLOPS 2014) (Lecture Notes in Computer Science), Vol. 8475. Springer, Berlin, 253--269.Google Scholar
Cross Ref
- Andrew Barber. 1996. Dual Intuitionistic Linear Logic. Technical Report ECS-LFCS-96-347. Laboratory for Foundations of Computer Science, School of Informatics at the University of Edinburgh.Google Scholar
- Batteries included. 2014. BatList. (2014).Google Scholar
- Josh Berdine, Cristiano Calcagno, and Peter W. O’Hearn. 2004. A decidable fragment of separation logic. In Foundations of Software Technology and Theoretical Computer Science (FSTTCS) (Lecture Notes in Computer Science), Vol. 3328. Springer, Berlin, 97--109. Google Scholar
Digital Library
- Josh Berdine, Cristiano Calcagno, and Peter W. O’Hearn. 2005a. Smallfoot: Modular automatic assertion checking with separation logic. In Formal Methods for Components and Objects (Lecture Notes in Computer Science), Vol. 4111. Springer, Berlin, 115--137. Google Scholar
Digital Library
- Josh Berdine, Cristiano Calcagno, and Peter W. O’Hearn. 2005b. Symbolic execution with separation logic. In Asian Symposium on Programming Languages and Systems (APLAS) (Lecture Notes in Computer Science), Vol. 3780. Springer, Berlin, 52--68. Google Scholar
Digital Library
- Kevin Bierhoff and Jonathan Aldrich. 2007. Modular typestate checking of aliased objects. In Obj ect-Oriented Programming, Systems, Languages, and Applications (OOPSLA). 301--320. Google Scholar
Digital Library
- Kevin Bierhoff, Nels E. Beckman, and Jonathan Aldrich. 2009. Practical API protocol checking with access permissions. In Europe an Conference on Object-Oriented Programming (ECOOP) (Lecture Notes in Computer Science), Vol. 5653. Springer, Berlin, 195--219. Google Scholar
Digital Library
- Kevin Bierhoff, Nels E. Beckman, and Jonathan Aldrich. 2011. Checking concurrent typestate with access permissions in plural: A retrospective. In Engineering of Software, Peri L. Tarr and Alexander L. Wolf (Eds.). Springer, Berlin, 35--48.Google Scholar
- Lars Birkedal, Bernhard Reus, Jan Schwinghammer, Kristian Støvring, Jacob Thamsborg, and Hongseok Yang. 2011. Step-indexed Kripke models over recursive worlds. In Principles of Programming Languages (POPL). 119--132. Google Scholar
Digital Library
- Robert L. Bocchino Jr. 2013. Alias control for deterministic parallelism. In Aliasing in Object-Oriented Programming. Types, Analysis and Verification, Dave Clarke, James Noble, and Tobias Wrigstad (Eds.). Lecture Notes in Computer Science, Vol. 7850. Springer, Berlin, 156--195. Google Scholar
Digital Library
- Robert L. Bocchino Jr. and Vikram S. Adve. 2011. Types, regions, and effects for safe programming with object-oriented parallel frameworks. In European Conference on Object-Oriented Programming (ECOOP) (Lecture Notes in Computer Science), Vol. 6813. Springer, Berlin, 306--332. Google Scholar
Digital Library
- Robert L. Bocchino Jr., Vikram S. Adve, Sarita V. Adve, and Marc Snir. 2009a. Parallel programming must be deterministic by default. In USENIX Conference on Hot Topics in Parallelism (HotPar). 1--6. Google Scholar
Digital Library
- Robert L. Bocchino Jr., Vikram S. Adve, Danny Dig, Sarita V. Adve, Stephen Heumann, Rakesh Komuravelli, Jeffrey Overbey, Patrick Simmons, Hyojin Sung, and Mohsen Vakilian. 2009b. A type and effect system for deterministic parallel Java. In Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA). 97--116. Google Scholar
Digital Library
- Robert L. Bocchino Jr., Stephen Heumann, Nima Honarmand, Sarita V. Adve, Vikram S. Adve, Adam Welc, and Tatiana Shpeisman. 2011. Safe nondeterminism in a deterministic-by-default parallel language. In Principles of Programming Languages (POPL). 535--548. Google Scholar
Digital Library
- Richard Bornat, Cristiano Calcagno, Peter O’Hearn, and Matthew Parkinson. 2005. Permission accounting in separation logic. In Princi ples of Programming Languages (POPL). 259--270. Google Scholar
Digital Library
- Chandrasekhar Boyapati, Robert Lee, and Martin Rinard. 2002. Ownership types for safe programming: Preventing data races and deadlocks. In Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA). 211--230. Google Scholar
Digital Library
- John Boyland. 2003. Checking interference with fractional permissions. In Static Analysis Symposium (SAS) (Lecture Notes in Computer Science), Vol. 2694. Springer, Berlin, 55--72. Google Scholar
Digital Library
- John Tang Boyland. 2010. Semantics of fractional permissions with nesting. ACM Trans. Program. Lang. Syst. 32, 6 (2010), 22:1--22:33. Google Scholar
Digital Library
- Thomas Braibant and Damien Pous. 2011. Tactics for reasoning modulo AC in Coq. In Certified Programs and Proofs (Lecture Notes in Computer Science), Vol. 7086. Springer, Berlin, 167--182. Google Scholar
Digital Library
- Stephen D. Brookes. 2004. A semantics for concurrent separation logic. In International Conference on Concurrency Theory (CONCUR) (Lecture Notes in Computer Science), Vol. 3170. Springer, Berlin, 16--34.Google Scholar
Cross Ref
- Michele Bugliesi, Stefano Calzavara, Fabienne Eigner, and Matteo Maffei. 2015. Affine Refinement Types for Secure Distributed Programming. (2015). To appear.Google Scholar
- Alexandre Buisse, Lars Birkedal, and Kristian Støvring. 2011. A step-indexed Kripke model of separation logic for storable locks. Electron. Notes Theor. Comput. Sci. 276 (2011), 121--143. Google Scholar
Digital Library
- Cristiano Calcagno, Dino Distefano, and Peter O’Hearn. 2015. Open-sourcing Facebook Infer: Identify bugs before you ship. https://code.facebook.com/posts/1648953042007882/open-sourcing-facebook-infer-identify-bugs-before-you-ship/. (2015).Google Scholar
- Bor-Yuh Evan Chang and Xavier Rival. 2008. Relational inductive shape analysis. In Principles of Programming Languages (POPL). 247--260. Google Scholar
Digital Library
- Arthur Charguéraud. 2010. Characteristic Formulae for Mechanized Program Verification. Ph.D. Dissertation. Université Paris 7.Google Scholar
- Arthur Charguéraud and François Pottier. 2008. Functional translation of a calculus of capabilities. In International Conference on Functional Programming (ICFP). 213--224. Google Scholar
Digital Library
- Adam Chlipala. 2013. Certified Programming and Dependent Types. MIT Press, Cambridge, MA.Google Scholar
- Jacek Chrzaszcz. 1998. Polymorphic subtyping without distributivity. In International Symposium on Mathematical Foundations of Computer Science (Lecture Notes in Computer Science), Vol. 1450. Springer, Berlin, 346--355. Google Scholar
Digital Library
- Dave Clarke, Sophia Drossopoulou, and James Noble. 2004. Alia sing, confinement, and ownership in object-oriented programming. In Object-Oriented Technology. ECOOP 2003 Workshop Reader. Lecture Notes in Computer Science, Vol. 3013. Springer, Berin, 197--207.Google Scholar
- Dave Clarke, Johan Östlund, Ilya Sergey, and Tobias Wrigstad. 2013. Owner ship types: A survey. In Aliasing in Object-Oriented Programming. Lecture Notes in Computer Science, Vol. 7850. Springer, Berlin, 15--58. Google Scholar
Digital Library
- Dave Clarke and Tobias Wrigstad. 2003. External uniqueness is unique enough. In Eur opean Conference on Object-Oriented Programming (ECOOP) (Lecture Notes in Computer Science), Vol. 2743. Springer, Berlin, 176--200.Google Scholar
- David G. Clarke, James Noble, and John Potter. 2001. Simple ownership types for object containment. In European Conference on Object-Oriented Programming (ECOOP) (Lecture Notes in Computer Science), Vol. 2072. Springer, Berlin, 53--76. Google Scholar
Digital Library
- David G. Clarke, John M. Potter, and James Noble. 1998. Ownership types for flexible alias protection. In Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA). 48--64. Google Scholar
Digital Library
- Ernie Cohen, Markus Dahlweid, Mark A. Hillebrand, Dirk Leinenbach, Michal Moskal, Thomas Santen, Wolfram Schulte, and Stephan Tobies. 2009. VCC: A practical system for verifying concurrent C. In Theorem Proving in Higher Order Logics (TPHOLs) (Lecture Notes in Computer Science), Vol. 5674. Springer, Berlin, 23--42. Google Scholar
Digital Library
- Byron Cook, Christoph Haase, Joël Ouaknine, Matthew J. Parkinson, and James Worrell. 2011. Tractable reasoning in a fragment of separation logic. In International Conference on Concurrency Theory (CONCUR) (Lecture Notes in Computer Science), Vol. 6901. Springer, Berlin, 235--249. Google Scholar
Digital Library
- Luis Damas. 1985. Type Assignment in Programming Languages. Ph.D. Dissertation. University of Edinburgh.Google Scholar
- Benjamin Delaware, Bruno C. d. S. Oliveira, and Tom Schrijvers. 2013. Meta- theory à la carte. In Principles of Programming Languages (POPL). 207--218.Google Scholar
- Robert DeLine and Manuel Fähndrich. 2001. Enforcing high-level protocols in low-level software. In Progra mming Language Design and Implementation (PLDI). 59--69. Google Scholar
Digital Library
- David L. Detlefs, K. Rustan, M. Leino, and Greg Nelson. 1998. Wrestling with rep exposure. Research Report 156. SRC.Google Scholar
- Werner Dietl and Peter Müller. 2005. Universes: Lightweight ownership for JML. J. Object Technol. 4, 8 (2005), 5--32.Google Scholar
Cross Ref
- Thomas Dinsdale-Young, Lars Birkedal, Philippa Gardner, Matthew J. Parkinson, and Hongseok Yang. 2013. Views: Compositional reasoning for concurrent programs. In Principles of Programming Languages (POPL). 287--300. Google Scholar
Digital Library
- Thomas Dinsdale-Young, Mike Dodds, Philippa Gardner, Matthew J. Parkinson, and Viktor Vafeiadis. 2010. Concurrent abstract predicates. In European Conference on Object-Oriented Programming (ECOOP) (Lecture Notes in Computer Science), Vol. 6183. Springer, Berlin, 504--528. Google Scholar
Digital Library
- Dino Distefano and Matthew J. Parkinson. 2008. jStar: Towards practical verification for Java. In Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA). 213--226. Google Scholar
Digital Library
- Robert Dockins, Aquinas Hobor, and Andrew W. Appel. 2009. A fresh look at separation algebras and share accounting. In Asian Symposium on Programming Languages and Systems (APLAS) (Lecture Notes in Computer Science), Vol. 5904. Springer, Berlin, 161--177. Google Scholar
Digital Library
- Jean-Christophe Filliâtre, Léon Gondelman, and Andrei Paskevich. 2014. The spirit of ghost code. In Computer Aided Verification (Lecture Notes in Computer Science), Vol. 8559. Springer, Berlin, 1--16. Google Scholar
Digital Library
- Cormac Flanagan and Martín Abadi. 1999. Types for safe locking. In European Symposium on Programming (ESOP) (Lecture Notes in Computer Science), Vol. 1576. Springer, 91--108. Google Scholar
Digital Library
- Manuel Fähndrich, Mark Aiken, Chris Hawblitzel, Orion Hodson, Galen Hunt, James R. Larus, and Steven Levi. 2006. Language support for fast and reliable message-based communication in singularity OS. In EuroSys. 177--190.Google Scholar
- Manuel Fähndrich and Robert DeLine. 2002. Adoption and focus: Practical linear types for imperative programming. In Programming Language Design and Implementation (PLDI). 13--24. Google Scholar
Digital Library
- Colin S. Gordon, Matthew J. Parkinson, Jared Parsons, Aleks Bromfield, and Joe Duffy. 2012. Uniqueness and reference immutability for safe parallelism. In Object-O riented Programming, Systems, Languages, and Applications (OOPSLA). 21--40. Google Scholar
Digital Library
- Alexey Gotsman, Josh Berdine, Byron Cook, Noam Rinetzky, and Mooly Sagiv. 2007. Local Reasoning for Storable Locks and Threads. Technical Report MSR-TR-2007-39. Microsoft Research.Google Scholar
- Armaël Guéneau, François Pottier, and Jonathan Protzenko. 2013. The ins and outs of iteration in Mezzo. Higher-Order Programming and Effects (HOPE). (2013). http://goo.gl/NrgKc4.Google Scholar
- Christian Haack, Marieke Huisman, and Clément Hurlin. 2008. Reasoning about Java’s reentrant locks. In Asian Symposium on Programming Languages and Systems (APLAS) (Lecture Notes in Computer Science), Vol. 5356. Springer, Berlin, 171--187. Google Scholar
Digital Library
- Christian Haack and Clément Hurlin. 2009. Resource usage protocols for iterators. J. Object Technol. 8, 4 (2009), 55--83.Google Scholar
Cross Ref
- Stefan Heule, K. Rustan, M. Leino, Peter Müller, and Alexander J. Summers. 2013. Abstract read permissions: Fractional permissions without the fractions. In Verification, Model Checking and Abstract Interpretation (VMCAI) (Lecture Notes in Computer Science), Vol. 7737. Springer, Berlin, 315--334. Google Scholar
Digital Library
- Aquinas Hobor, Andrew W. Appel, and Francesco Zappa Nardelli. 2008. Oracle semantics for concurrent separation logic. In European Symposium on Programming (ESOP) (Lecture Notes in Computer Science), Vol. 4960. Springer, Berlin, 353--367. Google Scholar
Digital Library
- Bart Jacobs, Dragan Bosnacki, and Ruurd Kuipe. 2015. Modular termination verification. In European Conference on Object-Oriented Programming (ECOOP) (Leibniz International Proceedings in Informatics). 99--1023.Google Scholar
- Bart Jacobs and Frank Piessens. 2008. The VeriFast Program Verifier. Technical Report CW-520. Department of Computer Science, Katholieke Universiteit Leuven.Google Scholar
- Neelakantan R. Krishnaswami, Jonathan Aldrich, Lars Birkedal, Kasper Svendsen, and Alexandre Buisse. 2009. Design patterns in separation logic. In Types in Language Design and Implementation (TLDI). 105--116. Google Scholar
Digital Library
- James Richard Larus. 1989. Restructuring Symbolic Programs for Concurrent Execution on Multiprocessors. Ph.D. Dissertation. EECS Department, University of California, Berkeley. Technical Report UCB/CSD-89-502. Google Scholar
Digital Library
- K. Rustan, M. Leino, and Peter Müller. 2009. A basis for verifying multi-threaded programs. In European Symposium on Programming (ESOP) (Lecture Notes in Computer Science), Vol. 5502. Springer, Berlin, 378--393. Google Scholar
Digital Library
- K. Rustan, M. Leino, Peter Müller, and Jan Smans. 2010. Deadlock-free channels and locks. In European Symposium on Programming (ESOP) (Lecture Notes in Computer Science), Vol. 6012. Springer, Berlin, 407--426. Google Scholar
Digital Library
- Toshiyuki Maeda, Haruki Sato, and Akinori Yonezawa. 2011. Extended alias type system using separating implication. In Types in Language Design and Implementation (TLDI). 29--42. Google Scholar
Digital Library
- Karl Mazurak, Jianzhou Zhao, and Steve Zdancewic. 2010. Lightweight linear types in system F°. In Types in Language Design and Implementation (TLDI). 77--88. Google Scholar
Digital Library
- Robin Milner. 1978. A theory of type polymorphism in programming. J. Comput. System Sci. 17, 3 (1978), 348--375.Google Scholar
- Yasuhiko Minamide. 1998. A functional representation of data structures with a hole. In Pr inciples of Programming Languages (POPL). 75--84. Google Scholar
Digital Library
- Peter D. Mosses. 2004. Modul ar structural operational semantics. J. Logic Algebr. Program. 60--61 (2004), 195--228.Google Scholar
- Peter Müller and Arsenii Rudich. 2007. Ownership transfer in universe types. In Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA). 461--478. Google Scholar
Digital Library
- Karl Naden, Robert Bocchino, Jonathan Aldrich, and Kevin Bierhoff. 2012. A type system for borrowing permissions. In Principles of Programming Languages (POPL). 557--570. Google Scholar
Digital Library
- Aleksandar Nanevski, Viktor Vafeiadis, and Josh Berdine. 2010. Structuring the verification of heap-manipulating programs. In Principles of Programming Languages (POPL). 261--274. Google Scholar
Digital Library
- Juan Antonio Navarro Pérez and Andrey Rybalchenko. 2011. Separation logic + superposition calculus = heap theorem prover. In Programming Language Design and Implementation (PLDI). 556--566. Google Scholar
Digital Library
- Peter W. O’Hearn. 2007. Resources, concurrency and local reasoning. Theoretical Computer Science 375, 1--3 (2007), 271--307. Google Scholar
Digital Library
- Simon Peyton Jones and Philip Wadler. 1993. Imperative functional programming. In Principles of Programming Languages (POPL). 71--84. Google Scholar
Digital Library
- Ruzica Piskac, Thomas Wies, and Damien Zufferey. 2013. Automating separation logic using SMT. In Computer Aided Verification (Lecture Notes in Computer Science), Vol. 8044. Springer, Berlin, 773--789.Google Scholar
- François Pottier. 2008. Hiding local state in direct style: A higher-order anti-frame rule. In Logic in Computer Science (LICS). 331--340. Google Scholar
Digital Library
- François Pottier. 2013. Syntactic soundness proof of a type-and-capability system with hidden state. J. Funct. Program. 23, 1 (2013), 38--144. Google Scholar
Digital Library
- François Pottier and Jonathan Protzenko. 2013. Programming with permissions in Mezzo. In International Conference on Functional Programming (ICFP). 173--184. Google Scholar
Digital Library
- François Pottier and Jonathan Protzenko. 2015. A few lessons from the Mezzo project. In Summit on Advances in Programming Languages (SNAPL).Google Scholar
- Jonathan Protzenko. 2014a. Mezzo: a typed language for safe effectful concurrent programs. Ph.D. Dissertation. Université Paris Diderot.Google Scholar
- Jonathan Protzenko. 2014b. A Mezzo sample project. (2014).Google Scholar
- Jonathan Protzenko. 2014c. Mezzo-web: try Mezzo in your browser. (2014).Google Scholar
- John C. Reynolds. 2002. Separation logic: A logic for shared mutable data structures. In Logic in Computer Science (LICS). 55--74. Google Scholar
Digital Library
- Jan Schwinghammer, Lars Birkedal, Bernhard Reus, and Hongseok Yang. 2009. Nested Hoare triples and frame rules for higher-order store. In Computer Science Logic (Lecture Notes in Computer Science), Vol. 5771. Springer, Berlin, 440--454. Google Scholar
Digital Library
- Jan Schwinghammer, Hongseok Yang, Lars Birkedal, François Pottier, and Bernhard Reus. 2010. A semantic foundation for hidden state. In Foundations of Software Science and Computation Structures (FOSSACS) (Lecture Notes in Computer Science), Vol. 6014. Springer, Berlin, 2--17. Google Scholar
Digital Library
- Sjaak Smetsers, Erik Barendsen, Marko C. J. D. van Eekelen, and Marinus J. Plasmeijer. 1994. Guaranteeing safe destructive updates through a type system with uniqueness information for graphs. In Dagstuhl Seminar on Graph Transformations in Computer Science (Lecture Notes in Computer Science), Vol. 776. Springer, Berlin, 358--379. Google Scholar
Digital Library
- Frederick Smith, David Walker, and Greg Morrisett. 2000. Ali as types. In European Symposium on Programming (ESOP) (Lecture Notes in Computer Science), Vol. 1782. Springer, Berlin, 366--381. Google Scholar
Digital Library
- Kasper Svendsen and Lars Birkedal. 2014. Impredi cative concurrent abstract predicates. In European Symposium on Programming (ESOP) (Lecture Notes in Computer Science), Vol. 8410. Springer, Berlin, 149--168. Google Scholar
Digital Library
- Nikhil Swamy, Michael Hicks, Greg Morrisett, Dan Grossman, and Trevor Jim. 2006. Sa fe manual memory management in cyclone. Sci. Comput. Program. 62, 2 (2006), 122--144. Google Scholar
Digital Library
- The Mozilla foundation. 2014. The Rust programming language. (2014).Google Scholar
- Mads Tofte. 1988. Ope rational Semantics and Polymorphic Type Inference. Ph.D. Dissertation. University of Edinburgh.Google Scholar
- Mads Tofte and Jean-Pierre Talpin. 1994. Implementation of the typed call-by-value λ-calculus using a stack of regions. In Principles of Programming Languages (POPL). 188--201. Google Scholar
Digital Library
- Mads Tofte and Jean-Pierre Talpin. 1997. Re gion-based memory management. Inform. Comput. 132, 2 (1997), 109--176. Google Scholar
Digital Library
- Jesse A. Tov and Riccardo Pucella. 2011. Practic al affine types. In Principles of Programming Languages (POPL). 447--458. Google Scholar
Digital Library
- Matthew S. Tschantz and Michael D. Ernst. 2005. Javari: Adding reference immutability to Java. In Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA). 211--230. Google Scholar
Digital Library
- Thomas Tuerk. 2010. Local reasoning about while-loops. (2010). Unpublished.Google Scholar
- Aaron Turon, Derek Dreyer, and Lars Birkedal. 2013. Unifying refinement and Hoare-style reasoning in a logic for higher-order concurrency. In International Conference on Functional Programming (ICFP). 377--390. Google Scholar
Digital Library
- Viktor Vafeiadis. 2011. Concurrent separation logic and operational semantics. Electron. Notes Theor. Comput. Sci. 276 (2011), 335--351. Google Scholar
Digital Library
- Jan Vitek and Boris Bokowski. 2001. Confined types in Java. Software: Prac. Exp. 31, 6 (2001), 507--532. Google Scholar
Digital Library
- Philip Wadler. 1990. Linear types can change the world! In Programming Concepts and Methods, M. Broy and C. Jones (Eds.). North Holland.Google Scholar
- David Walker, Karl Crary, and Greg Morrisett. 2000. Typed memory management via static capabilities. ACM Trans. Program. Lang. Syst. 22, 4 (2000), 701--771. Google Scholar
Digital Library
- David Walker and Greg Morrisett. 2000. Alias types for recursive data structures. In Types in Compilation (TIC) (Lecture Notes in Computer Science), Vol. 2071. Springer, Berlin, 177--206. Google Scholar
Digital Library
- Andrew K. Wright. 1995. Simple imperative polymorphism. Lisp Symbol. Comput. 8, 4 (1995), 343--356. Google Scholar
Digital Library
- Andrew K. Wright and Matthias Felleisen. 1994. A syntactic approach to type soundness. Inform. Comput. 115, 1 (1994), 38--94. Google Scholar
Digital Library
Index Terms
The Design and Formalization of Mezzo, a Permission-Based Programming Language
Recommendations
Programming with permissions in Mezzo
ICFP '13We present Mezzo, a typed programming language of ML lineage. Mezzo is equipped with a novel static discipline of duplicable and affine permissions, which controls aliasing and ownership. This rules out certain mistakes, including representation ...
Programming with permissions in Mezzo
ICFP '13: Proceedings of the 18th ACM SIGPLAN international conference on Functional programmingWe present Mezzo, a typed programming language of ML lineage. Mezzo is equipped with a novel static discipline of duplicable and affine permissions, which controls aliasing and ownership. This rules out certain mistakes, including representation ...
Short Paper: Rusty Types for Solid Safety
PLAS '16: Proceedings of the 2016 ACM Workshop on Programming Languages and Analysis for SecurityPrograms operating "close to the metal" necessarily handle memory directly. Because of this, they must be written in languages like C or C++. These languages lack any kind of guarantee on memory or race safety, often leading to security vulnerabilities ...






Comments