Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
article

Acute: High-level programming language design for distributed computation

Published: 01 July 2007 Publication History

Abstract

Existing languages provide good support for typeful programming of stand-alone programs. In a distributed system, however, there may be interaction between multiple instances of many distinct programs, sharing some (but not necessarily all) of their module structure, and with some instances rebuilt with new versions of certain modules as time goes on. In this paper, we discuss programming-language support for such systems, focussing on their typing and naming issues. We describe an experimental language, Acute, which extends an ML core to support distributed development, deployment, and execution, allowing type-safe interaction between separately built programs. The main features are (1) type-safe marshalling of arbitrary values; (2) type names that are generated (freshly and by hashing) to ensure that type equality tests suffice to protect the invariants of abstract types, across the entire distributed system; (3) expression-level names generated to ensure that name equality tests suffice for type safety of associated values, for example, values carried on named channels; (4) controlled dynamic rebinding of marshalled values to local resources; and (5) thunkification of threads and mutexes to support computation mobility. These features are a large part of what is needed for typeful distributed programming. They are a relatively lightweight extension of ML, should be efficiently implementable, and are expressive enough to enable a wide variety of distributed infrastructure layers to be written as simple library code above the byte-string network and persistent store APIs. This disentangles the language run-time from communication intricacies. This paper highlights the main design choices in Acute. It is supported by a full language definition (of typing, compilation, and operational semantics), by a prototype implementation, and by example distribution libraries.

References

[1]
The Acute team. (2005) Acute. Available at: http://www.cl.cam.ac.uk/users/pes20/acute.
[2]
Armstrong, J., Virding, R., Wikstrom, C. & Williams, M. (1996) Concurrent Programming in Erlang. 2nd ed. Englewood Cliffs, NJ, UK: Prentice Hall.
[3]
Benton, N., Cardelli, L. & Fournet, C. (2002) Modern concurrency abstractions for C#. In Proc. 16th European Conference on Object-Oriented Programming (ECOOP), Máalaga, Spain, vol. 2374. Springer Verlag, pp. 415-440.
[4]
Bierman, G., Hicks, M., Sewell, P., Stoyle, G. & Wansbrough, K. (2003) Dynamic rebinding for marshalling and update, with destruct-time ¿. In Proc. 8th ACM SIGPLAN International Conference on Functional Programming (ICFP), Uppsala, Sweden. ACM Press, 99-110.
[5]
Billings, J. (2005) A Bytecode Compiler for Acute, Computer Science Tripos Part II Dissertation. Cambridge, England: University of Cambridge.
[6]
Billings, J, Sewell, P., Shinwell, M. & Strnisa, R. (2006) Type-safe distributed programming for OCaml. In Proc. ML'06, 2006 ACM SIGPLAN Workshop on ML. pp. 20-31.
[7]
Boudol, G. (2003) ULM: A core programming model for global computing. In Proc. European Symposium on Programming (ESOP'04), LNCS 2986, Springer-Verlag.
[8]
Buckley, A., Murray, M., Eisenbach, S. & Drossopoulou, S. (2005) Flexible bytecode for linking in .NET. Electr. Notes Theor. Comput. Sci., 141(1), 75-92.
[9]
Cardelli, L. (1995) A language with distributed scope. In Proc. 22nd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Language (POPL), San Francisco, California, ACM Press, pp. 286-297.
[10]
Cardelli, L. & Gordon, A. D. (1998) Mobile ambients. In Proc. Foundations of Software Science and Computation Structure (FoSSaCS), LNCS 1378, Lisbon, Portugal, Springer, pp. 140-155.
[11]
Conchon, S. & Le Fessant, F. (1999) Jocaml: Mobile agents for objective-caml. In Proc. 1st International Symposium on Agent Systems and Applications/3rd International Symposium on Mobile Agents (ASA/MA), Palm Springs, CA. IEEE Computer Society, pp. 22-29.
[12]
Deniélou, P.-M. & Leifer, J. J. (2006) Abstraction preservation and subtyping in distributed languages. In Proc. 11th ICFP.
[13]
Dot03. (2003). Packacking and Deploying .Net Framework Applications (.Net Framework Tutorials, MSDN), http://msdn2.microsoft.com/cn-us/library/aa309395(V5.71).aspx.
[14]
Drossopoulou, S., Eisenbach, S. & Wragg, D. (1999) A fragment calculus -- towards a model of separate compilation, linking and binary compatibility. In Proc. 14th IEEE Symp. on Logic in Computer Science (LICS). IEEE Computer Society Press, pp. 147-156.
[15]
Fournet, C., Gonthier, G., Lévy, J.-J., Maranget, L. & Rémy, D. (1996) A calculus of mobile agents. In Proc. CONCUR, LNCS 1119. Pisa, Italy, Springer, pp. 406-421.
[16]
Furuse, J. & Weis, P. (2000) Entrées/sorties de valeurs en Caml. In Proc. Journées francophones des langages applicatifs, pp. 79-98. http://jfla.inria.fr/2000/actes.html.
[17]
Grossman, D., Morrisett, G. & Zdancewic, S. (2000) Syntactic type abstraction. ACM TOPLAS 22(6), 1037-1080.
[18]
Harper, R. & Lillibridge, M. (1994) A type-theoretic approach to higher-order modules with sharing. In Proc. 21st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL). Portland, OR: ACM Press, pp. 123-137.
[19]
Harper, R. & Pierce, B. C. (2005) Design issues in advanced module systems. In Advanced Topics in Types and Programming Languages, Pierce, B. C. (ed). Cambridge (MA): The MIT Press, chapter 8.
[20]
Harper, R. & Stone, C. (2000) A type-theoretic interpretation of standard ML. In Proof, Language and Interaction: Essays in Honour of Robin Milner. Cambridge (MA): The MIT Press, chapter 12.
[21]
Hennessy, M., Rathke, J. & Yoshida, N. (2004) Safedpi: A language for controlling mobile code. In Proc. Foundations of Software Science and Computation Structure (FoSSaCS), part of ETAPS, LNCS 2987. Barcelona, Spain, Springer, pp. 241-256.
[22]
Heydon, A., Levin, R., Mann, T. & Yu, Y. (2006) Software Configuration Management Using Vesta. New York: Springer-Verlag.
[23]
Hosoya, H., & Pierce, B. C. (1999) How Good Is Local Type Inference? Tech. Rept. MS-CIS-99-17. Philadalphia: University of Pennsylvania.
[24]
Le Botlan, D. & Rémy, D. (2003) MLF: Raising ML to the power of System-F. In Proceedings of the International Conference on Functional Programming (ICFP 2003), Uppsala, Sweden. New York: ACM Press, pp. 27-38.
[25]
Le Fessant, F. (2001) Detecting distributed cycles of garbage in large-scale systems. In Proc. Principles of Distributed Computing (PODC).
[26]
Lee, D. K., Crary, K. & Harper, R. (2007) Towards a mechanized metatheory of Standard ML. In Proc. 34th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL). ACM Press, pp. 173-184.
[27]
Leifer, J. J., Peskine, G., Sewell, P. & Wansbrough, K. (2003a) Global abstraction-safe marshalling with hash types. In Proc. 8th ACM SIGPLAN International Conference on Functional Programming (ICFP), Uppsala, Sweden, ACM Press, pp. 87-98.
[28]
Leifer, J. J., Peskine, G., Sewell, P. & Wansbrough, K. (2003b) Global Abstraction-Safe Marshalling With Hash Types. Tech. Rept. RR-4851. INRIA Rocquencourt. Available at: http://moscova. inria.fr/~leifer/research.html. Also published as UCAM-CL-TR-569.
[29]
Leroy, X. (1994) Manifest types, modules, and separate compilation. In Proc. 21st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL). ACM Press, pp. 109-122.
[30]
Milner, R., Tofte, M. & Harper, R. (1990) The definition of Standard ML. Cambridge, MA: MIT Press.
[31]
Murphy, T., Crary, K., Harper, R. & Pfenning, F. (2004) A symmetric modal lambda calculus for distributed computing. In Proc. 19th IEEE Symp. on Logic in Computer Science (LICS). IEEE Computer Society Press, pp. 286-295.
[32]
Odersky, M., Zenger, C. & Zenger, M. (2001) Colored local type inference. ACM SIGPLAN Notices 36(3), 41-53.
[33]
Ohori, A. & Kato, K. (1993) Semantics for communication primitives in a polymorphic language. In Proc. 20th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL). ACM Press, pp. 99-112.
[34]
Peskine, G. (Forthcoming) HOS: un calcul de modules adapté aux environnements répartis. Ph.D. thesis.
[35]
Pierce, B. C. & Turner, D. N. (1998) Local type inference. In Proc. POPL. Full version in ACM Trans. Programming Lang. Syst. (TOPLAS) 22(1), 2000, 1-44.
[36]
Pierce, B. C. & Turner, D. N. (2000) Pict: A programming language based on the pi-calculus. In Proof, Language and Interaction: Essays in Honour of Robin Milner. Cambridge (MA): The MIT Press, chapter 15.
[37]
Rémy, D. (2002) Using, understanding, and unraveling the ocaml language. In Applied Semantics. Advanced Lectures. LNCS 2395, Barthe, G. (ed). pp. 413-537.
[38]
Reppy, J. H. (1999) Concurrent programming in ML. Cambridge, UK: Cambridge University Press.
[39]
Rossberg, A. (2003) Generativity and dynamic opacity for abstract types. In Proc. 5th International ACM SIGPLAN Conference on Principles and Practice of Declarative Programming (PPDP). ACM Press, pp. 241-252.
[40]
Rossberg, A., Le Botlan, D., Tack, G., Brunklaus, T. & Smolka, G. (2006) Alice through the looking glass. In Trends in Functional Programming, vol. 5. Munich, Germany: Intellect Books, pp. 79-96.
[41]
Sekiguchi, T. & Yonezawa, A. (1997) A calculus with code mobility. In Proc. 2nd IFIP TC6 WG6.1 International Conference on Formal Methods for Open Object-based Distributed Systems (FMOODS). Chapman and Hall, pp. 21-36.
[42]
Sewell, P. (2000) Applied ¿--A Brief Tutorial. Tech. Rept. 498. Computer Laboratory, University of Cambridge. An extract appeared as Chapter 9, Formal Methods for Distributed Processing, A Survey of Object-oriented Approaches.
[43]
Sewell, P. (2001) Modules, abstract types, and distributed versioning. In Proc. 28th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL). ACM Press, pp. 236-247.
[44]
Sewell, P., Wojciechowski, P. T. & Pierce, B. C. (1999) Location-independent communication for mobile agents: a two-level architecture. In Internet Programming Languages, LNCS 1686. pp. 1 31.
[45]
Sewell, P., Leifer, J. J., Wansbrough, K., Allen-Williams, M., Z. Nardelli, Francesco, Habouzit, P. & Vafeiadis, V. (2004) Acute: High-level Programming Language Design for Distributed Computation. Design Rationale and Language Definition. Tech. Rept. 605. Cambridge, England: Computer Laboratory, University of Cambridge. Also published as INRIA RR-5329, 193pp.
[46]
Sewell, P., Leifer, J. J., Wansbrough, K., Allen-Williams, M., Zappa Nardelli, F., Habouzit, P. & Vafeiadis, V. (2005a) Source release of the Acute system. Available at: http://www.cl.cam. ac.uk/users/pes20/acute/.
[47]
Sewell, P., Leifer, J. J., Wansbrough, K., Zappa Nardelli, F., Allen-Williams, M., Habouzit, P. & Vafeiadis, V. (2005b) Acute: High-level programming language design for distributed computation. In Proceedings of ICFP 2005: International Conference on Functional Programming (Tallinn).
[48]
Shinwell, M. R. (2005) The Fresh Approach: Functional Programming With Names and Binders. Tech. Rept. UCAM-CL-TR-618. Cambridge, England: Computer Laboratory, University of Cambridge.
[49]
Shinwell, M. R., Pitts, A. M. & Gabbay, M. J. (2003) FreshML: Programming with binders made simple. In Proc. 8th ACM SIGPLAN International Conference on Functional Programming (ICFP), Uppsala, Sweden, ACM Press, pp. 263-274.
[50]
Stoyle, G. (2006) A Theory of Dynamic Software Updates, Ph.D. thesis. Cambridge, England: University of Cambridge.
[51]
Thomsen, B., Leth, L. & Kuo, T.-M. (1996) A facile tutorial. In: Proc. CONCUR LNCS 1119, Pisa, Italy, Springer Verlag, pp. 278-298.
[52]
Unyapoth, A. & Sewell, P. (2001). Nomadic Pict: Correct communication infrastructure for mobile computation. Proc. 28th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL). ACM Press, pp. 116-127.
[53]
Weirich, S. (2002). Programming With Types, Ph.D. thesis. Ithaca, NY: Cornell University.

Cited By

View all
  • (2018)Tierless Web Programming in the LargeCompanion Proceedings of the The Web Conference 201810.1145/3184558.3185953(681-689)Online publication date: 23-Apr-2018
  • (2016)Function passing: a model for typed, distributed functional programmingProceedings of the 2016 ACM International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software10.1145/2986012.2986014(82-97)Online publication date: 20-Oct-2016
  • (2014)CoeffectsACM SIGPLAN Notices10.1145/2692915.262816049:9(123-135)Online publication date: 19-Aug-2014
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image Journal of Functional Programming
Journal of Functional Programming  Volume 17, Issue 4-5
July 2007
241 pages

Publisher

Cambridge University Press

United States

Publication History

Published: 01 July 2007

Qualifiers

  • Article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)0
  • Downloads (Last 6 weeks)0
Reflects downloads up to 15 Oct 2024

Other Metrics

Citations

Cited By

View all
  • (2018)Tierless Web Programming in the LargeCompanion Proceedings of the The Web Conference 201810.1145/3184558.3185953(681-689)Online publication date: 23-Apr-2018
  • (2016)Function passing: a model for typed, distributed functional programmingProceedings of the 2016 ACM International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software10.1145/2986012.2986014(82-97)Online publication date: 20-Oct-2016
  • (2014)CoeffectsACM SIGPLAN Notices10.1145/2692915.262816049:9(123-135)Online publication date: 19-Aug-2014
  • (2014)CoeffectsProceedings of the 19th ACM SIGPLAN international conference on Functional programming10.1145/2628136.2628160(123-135)Online publication date: 19-Aug-2014
  • (2014)On the discriminating power of passivation and higher-order interactionProceedings of the Joint Meeting of the Twenty-Third EACSL Annual Conference on Computer Science Logic (CSL) and the Twenty-Ninth Annual ACM/IEEE Symposium on Logic in Computer Science (LICS)10.1145/2603088.2603113(1-10)Online publication date: 14-Jul-2014
  • (2014)BackpackACM SIGPLAN Notices10.1145/2578855.253588449:1(19-31)Online publication date: 8-Jan-2014
  • (2014)BackpackProceedings of the 41st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages10.1145/2535838.2535884(19-31)Online publication date: 11-Jan-2014
  • (2014)[InlineEquation not availableProceedings of the 16th International Symposium on Practical Aspects of Declarative Languages - Volume 832410.1007/978-3-319-04132-2_1(1-16)Online publication date: 20-Jan-2014
  • (2013)Implementing federated object systemsProceedings of the 27th European conference on Object-Oriented Programming10.1007/978-3-642-39038-8_10(230-254)Online publication date: 1-Jul-2013
  • (2011)Timed migration and interaction with access permissionsProceedings of the 17th international conference on Formal methods10.5555/2021296.2021327(293-307)Online publication date: 20-Jun-2011
  • Show More Cited By

View Options

View options

Get Access

Login options

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media