Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/944705.944714acmconferencesArticle/Chapter ViewAbstractPublication PagesicfpConference Proceedingsconference-collections
Article

Global abstraction-safe marshalling with hash types

Published: 25 August 2003 Publication History
  • Get Citation Alerts
  • Abstract

    Type abstraction is a key feature of ML-like languages for writing large programs. Marshalling is necessary for writing distributed programs, exchanging values via network byte-streams or persistent stores. In this paper we combine the two, developing compile-time and run-time semantics for marshalling, that guarantee abstraction-safety between separately-built programs. We obtain a namespace for abstract types that is global, i.e. meaningful between programs, by hashing module declarations. We examine the scenarios in which values of abstract types are communicated from one program to another, and ensure, by constructing hashes appropriately, that the dynamic and static notions of type equality mirror each other. We use singleton kinds to express abstraction in the static semantics; abstraction is tracked in the dynamic semantics by coloured brackets. These allow us to prove preservation, erasure, and coincidence results. We argue that our proposal is a good basis for extensions to existing ML-like languages, pragmatically straightforward for language users and for implementors.

    References

    [1]
    M. Abadi, L. Cardelli, B. Pierce, and G. Plotkin. Dynamic typing in a statically typed language. ACM TOPLAS, 13(2):237--268, 1991.]]
    [2]
    M. Abadi, L. Cardelli, B. Pierce, and D. Rémy. Dynamic typing in polymorphic languages. J. Functional Programming, 5(1):111--130, 1995.]]
    [3]
    T. Alice Project. Alice manual: Pickling. http://www.ps.uni-sb.de/alice/manual/pickling.html, 2003.]]
    [4]
    G. Bierman, M. Hicks, P. Sewell, G. Stoyle, and K. Wansbrough. Dynamic rebinding for marshalling and update, with destruct-time ?. In Proc. ICFP 2003, 2003. Full version available as UCAM-CL-TR-568. http://www.cl.cam.ac.uk/~pes20/.]]
    [5]
    A. Birrell, G. Nelson, S. Owicki, and E. Wobber. Network objects. Software -- Practice & Experience, 25(S4):87--130, 1995. Available in slightly different form as SRC-115 revised.]]
    [6]
    A. Z. Broder et al. Fingerprint.i3. http://research.compaq.com/SRC/m3sources/html/fingerprint/src/Fingerprint.i3.html, 1994.]]
    [7]
    D. Dreyer, K. Crary, and R. Harper. A type system for higher-order modules. In Proc. 30th POPL, New Orleans, pages 236--249, 2003.]]
    [8]
    D. Duggan. Type-safe linking with recursive DLLs and shared libraries. ACM TOPLAS, 24(6):711--804, 2002.]]
    [9]
    J. Furuse and P. Weis. Entrées/sorties de valeurs en Caml. In J. Francophones des Langages Applicatifs, 2000.]]
    [10]
    D. Grossman, G. Morrisett, and S. Zdancewic. Syntactic type abstraction. ACM TOPLAS, 22(6):1037--1080, 2000.]]
    [11]
    R. Harper and M. Lillibridge. A type-theoretic approach to higher-order modules with sharing. In Proc. 21st POPL, 1994.]]
    [12]
    R. Harper and G. Morrisett. Compiling polymorphism using intensional type analysis. In Proc. 22nd POPL, pages 130--141, 1995.]]
    [13]
    M. Hicks, S. Weirich, and K. Crary. Safe and flexible dynamic linking of native code. In Proc. 3rd Workshop on Types in Compilation, pages 147--176, 2000.]]
    [14]
    JoCaml. http://pauillac.inria.fr/jocaml/.]]
    [15]
    F. Knabe. Language Support for Mobile Agents. PhD thesis, Carnegie Mellon University, Dec. 1995.]]
    [16]
    J. J. Leifer, G. Peskine, P. Sewell, and K. Wansbrough. Global abstraction-safe marshalling with hash types. Technical Report RR-4851, INRIA Rocquencourt, 2003. Available from http://pauillac.inria.fr/~leifer/research.html. Also published as UCAM-CL-TR-569.]]
    [17]
    X. Leroy. Manifest types, modules, and separate compilation. In Proc. 21st POPL, pages 109--122, 1994.]]
    [18]
    X. Leroy. Applicative functors and fully transparent higher-order modules. In Proc. 22nd POPL, pages 142--153, 1995.]]
    [19]
    D. MacQueen. Modules for Standard ML. In Proc. 1984 ACM Symp. LISP and Func. Prog., pages 198--207, 1984.]]
    [20]
    Microsoft Corporation. .NET Framework developer's guide: Serializing objects. http://msdn.microsoft.com/library/en-us/cpguide/html/cpovrserializingobjects.asp, 2001.]]
    [21]
    R. Milner, M. Tofte, and R. Harper. The Definition of Standard ML. MIT Press, 1990.]]
    [22]
    Objective Caml. http://caml.inria.fr.]]
    [23]
    B. Pierce and E. Sumii. Relating cryptography and polymorphism. http://web.yl.is.s.u-tokyo.ac.jp/~sumii/pub/, July 16, 2000. Substantially revised version to appear in J. Comp. Security.]]
    [24]
    M. J. B. Robshaw. On recent results for MD2, MD4 and MD5. RSA Laboratories' Bulletin, (4), Nov. 12 1996.]]
    [25]
    A. Rossberg. Dynamic opacity for abstract types. Technical report, Programming Systems Lab, Universität des Saarlandes, 2002. http://www.ps.uni-sb.de/Papers/abstracts/opaque.html.]]
    [26]
    P. Sewell. Modules, abstract types, and distributed versioning. In Proc. 28th POPL, pages 236--247, 2001.]]
    [27]
    P. Sewell, P. T. Wojciechowski, and B. C. Pierce. Location-independent communication for mobile agents: a two-level architecture. In Internet Programming Languages, LNCS 1686, pages 1--31, 1999.]]
    [28]
    C. A. Stone and R. Harper. Deciding type equivalence in a language]]
    [29]
    Sun Microsystems. Java object serialization specification 1.4.4. http://java.sun.com/j2se/1.4.1/docs/guide/serialization/, 2002.]]
    [30]
    B. Thomsen, L. Leth, and T.-M. Kuo. A Facile tutorial. In CONCUR'96, LNCS 1119, pages 278--298, 1996.]]
    [31]
    S. Weirich. Type-safe cast: Functional pearl. In Proc. ICFP, Montreal, pages 58--67, 2000.]]
    [32]
    S. Weirich. Higher-order intensional type analysis. In Proc. 11th ESOP, LNCS 2305, Grenoble, France, 2002.]]
    [33]
    S. Zdancewic, D. Grossman, and G. Morrisett. Principals in programming languages: A syntactic proof technique. In Proc. ICFP, Paris, pages 197--207, Sep 1999.]]

    Cited By

    View all

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image ACM Conferences
    ICFP '03: Proceedings of the eighth ACM SIGPLAN international conference on Functional programming
    August 2003
    310 pages
    ISBN:1581137567
    DOI:10.1145/944705
    • cover image ACM SIGPLAN Notices
      ACM SIGPLAN Notices  Volume 38, Issue 9
      September 2003
      289 pages
      ISSN:0362-1340
      EISSN:1558-1160
      DOI:10.1145/944746
      Issue’s Table of Contents
    Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

    Sponsors

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    Published: 25 August 2003

    Permissions

    Request permissions for this article.

    Check for updates

    Author Tags

    1. ML
    2. abstract types
    3. distributed programming
    4. hashing
    5. lambda calculus
    6. marshalling
    7. modules
    8. programming languages
    9. serialisation
    10. singleton kinds
    11. type theory

    Qualifiers

    • Article

    Conference

    ICFP03
    Sponsor:

    Acceptance Rates

    ICFP '03 Paper Acceptance Rate 24 of 95 submissions, 25%;
    Overall Acceptance Rate 333 of 1,064 submissions, 31%

    Upcoming Conference

    ICFP '24

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)3
    • Downloads (Last 6 weeks)0

    Other Metrics

    Citations

    Cited By

    View all
    • (2014)F-ing modulesJournal of Functional Programming10.1017/S095679681400026424:05(529-607)Online publication date: 19-Nov-2014
    • (2010)Nomadic pictACM Transactions on Programming Languages and Systems10.1145/1734206.173420932:4(1-63)Online publication date: 22-Apr-2010
    • (2008)Dynamic Translucency with Abstraction Kinds and Higher-Order CoercionsElectronic Notes in Theoretical Computer Science (ENTCS)10.1016/j.entcs.2008.10.019218(313-336)Online publication date: 1-Oct-2008
    • (2007)AcuteJournal of Functional Programming10.1017/S095679680700644217:4-5(547-612)Online publication date: 1-Jul-2007
    • (2007)A bisimulation for dynamic sealingTheoretical Computer Science10.1016/j.tcs.2006.12.032375:1-3(169-192)Online publication date: 20-Apr-2007
    • (2006)Abstraction preservation and subtyping in distributed languagesACM SIGPLAN Notices10.1145/1160074.115984141:9(286-297)Online publication date: 16-Sep-2006
    • (2006)Type-safe distributed programming for OCamlProceedings of the 2006 workshop on ML10.1145/1159876.1159881(20-31)Online publication date: 16-Sep-2006
    • (2006)Abstraction preservation and subtyping in distributed languagesProceedings of the eleventh ACM SIGPLAN international conference on Functional programming10.1145/1159803.1159841(286-297)Online publication date: 17-Sep-2006
    • (2006)Generic Pickling and MinimizationElectronic Notes in Theoretical Computer Science (ENTCS)10.1016/j.entcs.2005.11.041148:2(79-103)Online publication date: 1-Mar-2006
    • (2006)A class-based object calculus of dynamic bindingProceedings of the 5th international conference on Software Composition10.1007/11821946_9(131-146)Online publication date: 25-Mar-2006
    • Show More Cited By

    View Options

    Get Access

    Login options

    View options

    PDF

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    Media

    Figures

    Other

    Tables

    Share

    Share

    Share this Publication link

    Share on social media