NeXeme: A distributed scheme based on Nexus

  • Luc Moreau
  • David De Roure
  • Ian Foster
Workshop 05+06: Programming Languages and Concurrent Object-Oriented Programming
Part of the Lecture Notes in Computer Science book series (LNCS, volume 1300)


The remote service request, a form of remote procedure call, and the global pointer, a global naming mechanism, are two features at the heart of Nexus, a library for building distributed systems. NeXeme is an extension of Scheme that fully integrates both concepts in a mostly-functional framework, hence providing an expressive language for distributed computing. This paper presents a semantics for this Scheme extension, and also describes a NeXeme implementation, including its distributed garbage collector.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. [1]
    A. D. Birell and B. J. Nelson. Implementing Remote Procedure Calls. ACM Transactions on Computer Systems, 2(1):39–59, February 1984.Google Scholar
  2. [2]
    L. Cardelli. A Language with Distributed Scope. In Proceedings of the Twenty Second Annual ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages, pages 286–297, San-Francisco, California, January 1995.Google Scholar
  3. [3]
    H. Cejtin, S. Jagannathan, and R. Kelsey. Higher-Order Distributed Objects. ACM Transactions on Programming Languages and Systems, 17(5):704–739, 1995.Google Scholar
  4. [4]
    K. M. Chandy and C. Kesselman. CC++: A declarative concurrent object oriented programming notation. In Research Directions in Object Oriented Programming, pages 281–313. MIT Press, 1993.Google Scholar
  5. [5]
    M. Felleisen and D. P. Friedman. Control Operators, the SECD-Machine and the λ-lCalculus. In M. Wirsing, editor, Formal Description of Programming Concepts III, pages 193–217, Amsterdam, 1986. Elsevier Science Publishers B.V. (North-Holland).Google Scholar
  6. [6]
    I. Foster and K.M. Chandy. Fortran M: A Language for Modular Parallel Programming. J. of Parallel and Distributed Computing, 26(1):24–35, 1995.Google Scholar
  7. [7]
    I. Foster, C. Kesselman, and S. Tuecke. The Nexus Approach to Integrating Multithreading and Communication. J. of Parallel and Distributed Computing, 37:70–82, 1996.Google Scholar
  8. [8]
    I. Foster and R. Olson. A Guide to Parallel and Distributed Programming in nPerl. Mathematics and Computer Science Division, October 1995.Google Scholar
  9. [9]
    A. Giacalone, P. Mishra, and S. Prasad. Facile: A Symmetric Integration of Concurrent and Functional Programming. Int. J. of Parallel Programming, 18(2):121–160, 1989.Google Scholar
  10. [10]
    J. Gosling, G. Steele, and B. Joy. The Java Language Specification. Addison-Wesley, 1996.Google Scholar
  11. [11]
    H.-J.Boehm and M. Weiser. Garbage Collection in an Uncooperative Environment. Software — Practice and Experience, 18(9):807–820, 1988.Google Scholar
  12. [12]
    R. Halstead, Jr. Parallel Symbolic Computing. IEEE Computer, pages 35–43, Aug. 1986.Google Scholar
  13. [13]
    E. Mohr, D. A. Kranz, and R. H. Halstead. Lazy Task Creation: a Technique for Increasing the Granularity of Parallel Programs. In Proceedings of the 1990 ACM Conference on Lisp and Functional Programming, pages 185–197, June 1990.Google Scholar
  14. [14]
    L. Moreau. Correctness of a Distributed-Memory Model for Scheme. In Second International Europar Conference (EURO-PAR'96), LNCS 1123, pages 615–624, 1996.Google Scholar
  15. [15]
    NeXeme Home Page.∼lavm/NeXeme.Google Scholar
  16. [16]
    J. M. Piquer. Indirect Distributed Garbage Collection: Handling Object Migration. ACM Transactions on Programming Languages and Systems, 18(5):615–647, 1996.Google Scholar
  17. [17]
    D. Plainfossé and M. Shapiro. A survey of distributed garbage collection techniques. In Int. Workshop on Memory Management (IWMM95), LNCS 986, pages 211–249, 1995.Google Scholar
  18. [18]
    C. Queinnec. DMEROON: a Distributed Class-based Causally-coherent Data Model: Preliminary Report. In Parallel Symbolic Languages and Systems., LNCS 1068, 1995.Google Scholar
  19. [19]
    C. Queinnec and D. De Roure. Design of a Concurrent and Distributed Language. In Parallel Symbolic Computing: Languages, Systems and Applications, LNCS 748, pages 234–259, Boston, Massachussetts, October 1992.Google Scholar
  20. [20]
    J. Rees and W. Clinger, editors. Revised4 Report on the Algorithmic Language Scheme. Lisp Pointers, 4(3):1–55, July-September 1991.Google Scholar
  21. [21]
    J. H. Reppy. Higher-Order Concurrency. PhD thesis, Department of Computer Science, Cornell University, Ithaca, New York, June 1992.Google Scholar
  22. [22]
    Sun MicroSystems. Java Remote Method Invocation Specification, November 1996.Google Scholar
  23. [23]
    P. van Roy, S. Haridi, P. Brand, and G. Smolka et al. Mobile Objects in Distributed Oz. Technical report, Swedish Institute of Computer Science, December 1996.Google Scholar
  24. [24]
    T. von Eicken, D. E. Culler, S. Goldstein, and K. Schauser. Active Messages: a Mechanism for Integrated Communication & Computation. In Proceedings of the 19th symposium on Computer Architecture, pages 256–266, 1992.Google Scholar
  25. [25]
    D. A. Wallach, W. C. Hsieh, K. Johnson, M. F. Kaashoek, et al. Optimistic active messages: A mechanism for scheduling communication with computation. In 5th ACM SIGPLAN Symp. on Principles and Practice of Parallel Programming (PPoPP '95), 1995.Google Scholar
  26. [26]
    M. Weiser, A. Demers, and C. Hauser. The Portable Common Runtime Approach to Interoperability. In ACM Symp. on Operating System Principles, pages 114–122, Dec. 1989.Google Scholar

Copyright information

© Springer-Verlag 1997

Authors and Affiliations

  • Luc Moreau
    • 1
  • David De Roure
    • 1
  • Ian Foster
    • 2
  1. 1.Department of Electronics and Computer ScienceUniversity of SouthamptonSouthamptonUK
  2. 2.Mathematics and Computer Science DivisionArgonne National LaboratoryArgonne

Personalised recommendations