On understanding types, data abstraction, and polymorphism
ACM Computing Surveys (CSUR) - The MIT Press scientific computation series
The programming language Oberon
Software—Practice & Experience
POPL '89 Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A type-theoretic approach to higher-order modules with sharing
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
ACM Transactions on Programming Languages and Systems (TOPLAS)
The Definition of Standard ML
Global abstraction-safe marshalling with hash types
ICFP '03 Proceedings of the eighth ACM SIGPLAN international conference on Functional programming
Logical relation for encryption
Journal of Computer Security - Special issue on CSFW14
Acute: high-level programming language design for distributed computation
Proceedings of the tenth ACM SIGPLAN international conference on Functional programming
Type-safe distributed programming for OCaml
Proceedings of the 2006 workshop on ML
Type-safe distributed programming for OCaml
Proceedings of the 2006 workshop on ML
Efficient distributed subtyping tests
Proceedings of the 2007 inaugural international conference on Distributed event-based systems
Acute: High-level programming language design for distributed computation
Journal of Functional Programming
Extensible encoding of type hierarchies
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A secure compiler for session abstractions
Journal of Computer Security - 20th IEEE Computer Security Foundations Symposium (CSF)
ACM Transactions on Programming Languages and Systems (TOPLAS)
A protocol compiler for secure sessions in ML
TGC'07 Proceedings of the 3rd conference on Trustworthy global computing
Hi-index | 0.01 |
In most programming languages, type abstraction is guaranteed by syntactic scoping in a single program, but is not preserved by marshalling during distributed communication. A solution is to generate hash types at compile time that consist of a fingerprint of the source code implementing the data type. These hash types can be tupled with a marshalled value and compared efficiently at unmarshall time to guarantee abstraction safety. In this paper, we extend a core calculus of ML-like modules, functions, distributed communication, and hash types, to integrate structural subtyping, user-declared subtyping between abstract types, and bounded existential types. Our semantics makes two contributions: (1) the explicit tracking of the interaction between abstraction boundaries and subtyping; (2) support for user-declared module upgrades with propagation of the resulting subhashing relation throughout the network during communication. We prove type preservation, progress, determinacy, and erasure for our system.