Minimal Ownership for Active Objects

  • Dave Clarke
  • Tobias Wrigstad
  • Johan Östlund
  • Einar Broch Johnsen
Part of the Lecture Notes in Computer Science book series (LNCS, volume 5356)

Abstract

Active objects offer a structured approach to concurrency, encapsulating both unshared state and a thread of control. For efficient data transfer, data should be passed by reference whenever possible, but this introduces aliasing and undermines the validity of the active objects. This paper proposes a minimal variant of ownership types that preserves the required race freedom invariant yet enables data transfer by reference between active objects (that is, without copying) in many cases, and a cheap clone operation where copying is necessary. Our approach is general and should be adaptable to several existing active object systems.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    Agha, G., Hewitt, C.: Actors: A conceptual foundation for concurrent object-oriented programming. In: Research Directions in Object-Oriented Programming, pp. 49–74. MIT Press, Cambridge (1987)Google Scholar
  2. 2.
    Aldrich, J., Chambers, C.: Ownership Domains: Separating Aliasing Policy from Mechanism. In: Odersky, M. (ed.) ECOOP 2004. LNCS, vol. 3086, pp. 1–25. Springer, Heidelberg (2004)CrossRefGoogle Scholar
  3. 3.
    Aldrich, J., Kostadinov, V., Chambers, C.: Alias Annotations for Program Understanding. In: OOPSLA (November 2002)Google Scholar
  4. 4.
    Almeida, P.S.: Balloon Types: Controlling sharing of state in data types. In: Aksit, M., Matsuoka, S. (eds.) ECOOP 1997. LNCS, vol. 1241, pp. 32–59. Springer, Heidelberg (1997)CrossRefGoogle Scholar
  5. 5.
    Armstrong, J.: Programming Erlang: Software for a Concurrent World. Pragmatic Bookshelf (2007)Google Scholar
  6. 6.
    Auerbach, J., Bacon, D., Guerraoui, R., Spring, J., Vitek, J.: Flexible task graphs: A unified restricted thread programming model for java. In: LCTES (2008)Google Scholar
  7. 7.
    Bacon, D.F., Strom, R.E., Tarafdar, A.: Guava: a dialect of Java without data races. In: OOPSLA (2000)Google Scholar
  8. 8.
    Baduel, L., Baude, F., Caromel, D., Contes, A., Huet, F., Morel, M., Quilici, R.: Grid Computing: Software Environments and Tools. In: Chapter Programming, Composing, Deploying, for the Grid. Springer, Heidelberg (2006)Google Scholar
  9. 9.
    Baker Jr., H.G., Hewitt, C.: The incremental garbage collection of processes. In: Proceeding of the Symposium on Artificial Intelligence Programming Languages, ACMSIGPLAN Notices, August 1977, vol. 12, p. 11 (1977)Google Scholar
  10. 10.
    Birka, A., Ernst, M.D.: A practical type system and language for reference immutability. In: OOPSLA, October 2004, pp. 35–49 (2004)Google Scholar
  11. 11.
    Boyapati, C., Lee, R., Rinard, M.: Ownership Types for Safe Programming: Preventing Data Races and Deadlocks. In: OOPSLA (2002)Google Scholar
  12. 12.
    Boyapati, C., Liskov, B., Shrira, L.: Ownership Types for Object Encapsulation. In: POPL (2003)Google Scholar
  13. 13.
    Boyapati, C., Rinard, M.: A Parameterized Type System for Race-Free Java Programs. In: OOPSLA (2001)Google Scholar
  14. 14.
    Boyland, J.: Alias burying: Unique variables without destructive reads. Software—Practice and Experience 31(6), 533–553 (2001)CrossRefMATHGoogle Scholar
  15. 15.
    Boyland, J.: Why we should not add readonly to Java (yet). Journal of Object Technology 5(5), 5–29 (June 2006) Special issue: ECOOP 2005 Workshop FTfJP.Google Scholar
  16. 16.
    Carlsson, R., Sagonas, K.F., Wilhelmsson, J.: Message analysis for concurrent programs using message passing. ACM TOPLAS 28(4), 715–746 (2006)CrossRefMATHGoogle Scholar
  17. 17.
    Caromel, D.: Service, Asynchrony, and Wait-By-Necessity. Journal of Object Orientated Programming (JOOP), 12–22 (November 1989)Google Scholar
  18. 18.
    Caromel, D., Henrio, L.: A Theory of Distributed Objects. Springer, Heidelberg (2005)MATHGoogle Scholar
  19. 19.
    Clarke, D.: Object Ownership and Containment. Ph.D thesis, School of Computer Science and Engineering, University of New South Wales, Sydney, Australia (2001)Google Scholar
  20. 20.
    Clarke, D., Drossopolou, S.: Ownership, Encapsulation and the Disjointness of Type and Effect. In: OOPSLA (2002)Google Scholar
  21. 21.
    Clarke, D., Wrigstad, T.: External uniqueness is unique enough. In: Cardelli, L. (ed.) European Conference on Object-Oriented Programming. LNCS, vol. 2473, pp. 176–200. Springer, Heidelberg (2002)Google Scholar
  22. 22.
    Clarke, D., Wrigstad, T., Östlund, J., Johnsen, E.B.: Minimal Ownership for Active Objects. Technical Report SEN-R0803, CWI (June 2008), http://ftp.cwi.nl/CWIreports/SEN/SEN-R0803.pdf
  23. 23.
    Clarke, D.G., Potter, J., Noble, J.: Ownership types for flexible alias protection. In: OOPSLA, pp. 48–64 (1998)Google Scholar
  24. 24.
    Cunningham, D., Drossopoulou, S., Eisenbach, S.: Universe Types for Race Safety. In: VAMP 2007, September 2007, pp. 20–51 (2007)Google Scholar
  25. 25.
    de Boer, F.S., Clarke, D., Johnsen, E.B.: A complete guide to the future. In: de Nicola, R. (ed.) ESOP 2007. LNCS, vol. 4421, pp. 316–330. Springer, Heidelberg (2007)CrossRefGoogle Scholar
  26. 26.
    de Jong, H.: Flexible Heterogeneous Software Systems. PhD thesis, Faculty of Natural Sciences, Math. and Computer Science, Uni. of Amsterdam (January 2007)Google Scholar
  27. 27.
    Drossopoulou, S., Clarke, D., Noble, J.: Types for hierarchic shapes. In: Sestoft, P. (ed.) ESOP 2006. LNCS, vol. 3924, pp. 1–6. Springer, Heidelberg (2006)CrossRefGoogle Scholar
  28. 28.
    Fahndrich, M., Xia, S.: Establishing object invariants with delayed types. SIGPLAN Not. 42(10), 337–350 (2007)CrossRefGoogle Scholar
  29. 29.
    Grossman, D., Hicks, M., Jim, T., Morrisett, G.: Cyclone: A type-safe dialect of C. C/C++ Users Journal 23(1) (January 2005)Google Scholar
  30. 30.
    Hogg, J.: Islands: Aliasing protection in object-oriented languages. In: OOPSLA (November 1991)Google Scholar
  31. 31.
    Hogg, J., Lea, D., Wills, A., de Champeaux, D., Holt, R.: The Geneva Convention on the treatment of object aliasing. OOPS Messenger 3(2), 11–16 (1992)CrossRefGoogle Scholar
  32. 32.
    Hunt, G., Larus, J.: Singularity: Rethinking the software stack. Operating Systems Review 40(2), 37–49 (2007)CrossRefGoogle Scholar
  33. 33.
    Hutchinson, N.C., Raj, R.K., Black, A.P., Levy, H.M., Jul, E.: The Emerald programming language report. Technical Report 87-10-07, Seattle, WA (USA) (1987) (Revised 1997)Google Scholar
  34. 34.
    Johnsen, E.B., Owe, O.: An asynchronous communication model for distributed concurrent objects. Software and Systems Modeling 6(1), 35–58 (2007)CrossRefGoogle Scholar
  35. 35.
    Jones, S.P., Hughes. J. (eds.): Haskell 98: A non-strict, purely functional language. Technical report (February 1999)Google Scholar
  36. 36.
    Kotselidis, C., Ansari, M., Jarvis, K., Luján, M., Kirkham, C., Watson, I.: Investigating software transactional memory on clusters. In: IWJPDC 2008. IEEE Computer Society Press, Los Alamitos (2008)Google Scholar
  37. 37.
    Lavender, R.G., Schmidt, D.C.: Active object: an object behavioral pattern for concurrent programming. In: Proc. Pattern Languages of Programs (1995)Google Scholar
  38. 38.
    Lea, D.: Concurrent Programming in Java, 2nd edn. Addison-Wesley, Reading (2000)MATHGoogle Scholar
  39. 39.
    Ma, K.-K., Foster, J.S.: Inferring aliasing and encapsulation properties for Java. In: OOPSLA, pp. 423–440 (2007)Google Scholar
  40. 40.
    Meyer, B.: Eiffel: The Language. Prentice-Hall, Englewood Cliffs (1992)MATHGoogle Scholar
  41. 41.
    Meyer, B.: Systematic concurrent object-oriented programming. CACM 36(9), 56–80 (1993)CrossRefGoogle Scholar
  42. 42.
    Minsky, N.H.: Towards alias-free pointers. In: Cointe, P. (ed.) ECOOP 1996. LNCS, vol. 1098, pp. 189–209. Springer, Heidelberg (1996)CrossRefGoogle Scholar
  43. 43.
    Morris, B.: CActive and Friends. Symbian Developer Network (November 2007), http://developer.symbian.com/main/downloads/papers/CActiveAndFriends/CActiveAndFriends.pdf
  44. 44.
    Müller, P.: Modular Specification and Verification of Object-Oriented Programs. LNCS, vol. 2262. Springer, Heidelberg (2002)MATHGoogle Scholar
  45. 45.
    Müller, P., Poetzsch-Heffter, A.: Universes: A type system for controlling representation exposure. In: Poetzsch-Heffter, A., Meyer, J. (eds.), Programming Languages and Fundamentals of Programming, pp. 131–140. Technical Report 263, Fernuniversität Hagen (1999)Google Scholar
  46. 46.
    Nienaltowski, P.: Practical framework for contract-based concurrent object-oriented programming. Ph.D thesis, Department of Computer Science, ETH Zurich (2007)Google Scholar
  47. 47.
    Noble, J., Clarke, D., Potter, J.: Object ownership for dynamic alias protection. In: TOOLS Pacific, Melbourne, Australia (November 1999)Google Scholar
  48. 48.
    Noble, J., Vitek, J., Potter, J.: Flexible Alias Protection. In: Jul, E. (ed.) ECOOP 1998. LNCS, vol. 1445. Springer, Heidelberg (1998)Google Scholar
  49. 49.
    Östlund, J., Wrigstad, T., Clarke, D., Åkerblom, B.: Ownership, uniqueness and immutability. In: IWACO (2007)Google Scholar
  50. 50.
    Potanin, A., Noble, J.: Checking ownership and confinement properties. In: Formal Techniques for Java-like Programs (2002)Google Scholar
  51. 51.
    Raj, R.K., Tempero, E., Levy, H.M., Black, A.P., Hutchinson, N.C., Jul, E.: Emerald: A general-purpose programming language. Software: Practice and Experience 21(1), 91–118 (1991)Google Scholar
  52. 52.
    Saraswat, V.A., Sarkar, V., von Praun, C.: X10: concurrent programming for modern architectures. In: Yelick, K.A., Mellor-Crummey, J.M. (eds.) Principles and Practice of Parallel Programming (2007)Google Scholar
  53. 53.
    Schäfer, J., Poetzsch-Heffter, A.: CoBoxes: Unifying active objects and structured heaps. In: Barthe, G., de Boer, F.S. (eds.) FMOODS 2008. LNCS, vol. 5051, pp. 201–219. Springer, Heidelberg (2008)CrossRefGoogle Scholar
  54. 54.
    Shavit, N., Touitou, D.: Software transactional memory. In: PODC 1995, pp. 204–213. ACM Press, New York (1995)Google Scholar
  55. 55.
    Skoglund, M., Wrigstad, T.: Alias control with read-only references. In: Sixth Conference on Computer Science and Informatics (March 2002)Google Scholar
  56. 56.
    Spring, J.H., Privat, J., Guerraoui, R., Vitek, J.: StreamFlex: High-throughput Stream Programming in Java. In: OOPSLA (October 2007)Google Scholar
  57. 57.
    Stroustrup, B.: The C++ Programming Language. Addison-Wesley, Reading (1986)MATHGoogle Scholar
  58. 58.
    Tschantz, M.S., Ernst, M.D.: Javari: Adding reference immutability to Java. In: OOPSLA, pp. 211–230 (October 2005)Google Scholar
  59. 59.
    Wrigstad, T.: Ownership-Based Alias Management. PhD thesis, Royal Institute of Technology, Kista, Stockholm (May 2006)Google Scholar
  60. 60.
    Wrigstad, T., Clarke, D.: Existential owners for ownership types. Journal of Object Technology 4(6), 141–159 (2007)CrossRefGoogle Scholar
  61. 61.
    Yonezawa, A., Briot, J.-P., Shibayama, E.: Object-oriented concurrent programming in ABCL/1. In: OOPSLA 1986. SIGPLAN Notices, vol. 21(11), pp. 258–268 (November 1986)Google Scholar
  62. 62.
    Zibin, Y., Potanin, A., Ali, M., Artzi, S., Kiezun, A., Ernst, M.D.: Object and reference immutability using Java generics. In: Crnkovic, I., Bertolino, A. (eds.) ESEC/SIGSOFT FSE, pp. 75–84. ACM Press, New York (2007)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2008

Authors and Affiliations

  • Dave Clarke
    • 1
  • Tobias Wrigstad
    • 2
  • Johan Östlund
    • 2
  • Einar Broch Johnsen
    • 3
  1. 1.CWIAmsterdamThe Netherlands
  2. 2.Purdue UniversityUSA
  3. 3.University of OsloNorway

Personalised recommendations