Skip to main content

Lightweight and Generative Components II: Binary-Level Components

  • Conference paper
  • First Online:
Book cover Semantics, Applications, and Implementation of Program Generation (SAIG 2000)

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 1924))

Abstract

Most software component technologies fail to account for lightweight components (those for which a function call is too inefficient or semantically inappropriate) or generative components (those in which the component embodies a method of constructing code rather than ac- tual code). Macro-based systems such as the C++ Standard Template Li- brary are exceptions. They, however, have the disadvantage that compo- nents must be delivered largely in source form. In this paper, we present a component technology in which lightweight and generative components can be delivered in binary form. The technology is conceptually simple and is easily implemented with existing programming languages. Our basic idea was explained in part I of this paper: By giving a composi- tional semantics for a source language in a domain of meanings Code, components can be written in the form of macros, but communicated in terms of meanings. In the companion paper, we showed how higher-order values over Code can be used to write lightweight, generative compo- nents. There, we took Code to be string, so our components amounted to higher-order macros. In this paper, we define Code more abstractly, allowing components to be delivered in a form that does not resemble syntax, yet allows for them to be loaded dynamically and execute effi- ciently.

Partial support for the first and third authors was received from NSF under grant CCR-9619644.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Don Batory, Bernie Lofaso, and Yannis Smaragdakis. JTS: Tools for implementing domain-specific languages. In Fifth Intl. Conf. on Software Reuse, June 1998.

    Google Scholar 

  2. A. Bawden. Quasiquotation in lisp. In In Proceedings of the ACM SIGPLAN Symposium on Partial Evaluation and Semantics-Based Program Manipulation (PEPM-99), pages 18–42, January 22–23 1999.

    Google Scholar 

  3. William Clinger and Jonathan Rees. Macros that work. In Proc. of the Conf. on Principles of Programming Languages (POPL), pages 155–160, 1991.

    Google Scholar 

  4. Krzysztof Czarnecki and Ulrich W. Eisenecker. Synthesizing objects. In Rachid Guerraoui, editor, 13th European Conference on Object-Oriented Programming (ECOOP ’99), pages 18–42, June 1999.

    Google Scholar 

  5. Krzysztof Czarnecki and Ulrich W. Eisenecker. Static metaprogramming in C++. In Generative Programming: Methods, Techniques, and Applications, chapter 8, pages 251–279. Addison-Wesley, 2000.

    Google Scholar 

  6. Dawson Engler. Incorporating applications semantics and control into compilation. In Proceedings of the Conference on Domain-Specific Languages, Santa Barbara, California, USA, October 15–17 1997.

    Google Scholar 

  7. Dawson R. Engler, Wilson C. Hsieh, and M. Frans Kaashoek. C: A language for high-level, efficient, and machine-independent dynaic code generation. In Conference Record of POPL ’96: The 23rd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 131–144, St. Petersburg Beach, Florida, 21–24 January 1996.

    Google Scholar 

  8. J. Hummel, A. Azevedo, D. Kolson, and A. Nicolau. Annotating the java byte codes in support of optimization. In ACM 1997 Workshop on Java for Science and Engineering Computation, June 1997.

    Google Scholar 

  9. Sun Microsystems Incorporated. The java hotspot performance engine architecture: A white paper about sun’s second generation performance technology. Technical report, April 1999.

    Google Scholar 

  10. J. Jones and S. Kamin. Annotating java class files with virtual registers for performance. Concurrency: Practice and Experience, to appear.

    Google Scholar 

  11. Sam Kamin, Miranda Callahan, and Lars Clausen. Lightweight and generative components I: Source-level components. In First International Symposium on Generative and Component-Based Software Engineering (GCSE’99), September 28–30 1999.

    Google Scholar 

  12. Gregor Kiczales, John Lamping, Anurag Mendhekar, Chris Maeda, Cristina Videira Lopes, Jean-Marc Loingtier, and John Irwin. Aspect-oriented programming. In Proc. European Conference on Object-Oriented Programming (ECOOP), volume LNCS 1241. Springer-Verlag, June 1997.

    Google Scholar 

  13. David R. Musser and Atul Saini. STL Tutorial and Reference Guide: C++ Programming with the Standard Template Library. Addison-Wesley Professional Computing Series, 1996.

    Google Scholar 

  14. Charles Simonyi. The death of computer languages, the birth of intentional programming. In NATO Science Committee Conference, 1995.

    Google Scholar 

  15. Marty Sirkin, Don Batory, and Vivek Singhal. Software components in a data structure precompiler. In Intl. Conf. on Software Eng., pages 437–446, 1993.

    Google Scholar 

  16. Walid Taha and Tim Sheard.Multi-stage programming with explicit annotations. In Proceedings of the ACM SIGPLAN Symposium on Partial Evaluation and Semantics-Based Program Manipulation (PEPM-97), volume 32, 12 of ACM SIGPLAN Notices, pages 203–217, New York, June 12–13 1997. ACM Press.

    Article  Google Scholar 

  17. Todd Veldhuizen. Using C++ template metaprograms. C++ Report, 7(4):36–43, May 1995.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2000 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Kamin, S., Callahan, M., Clausen, L. (2000). Lightweight and Generative Components II: Binary-Level Components. In: Taha, W. (eds) Semantics, Applications, and Implementation of Program Generation. SAIG 2000. Lecture Notes in Computer Science, vol 1924. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-45350-4_6

Download citation

  • DOI: https://doi.org/10.1007/3-540-45350-4_6

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-41054-6

  • Online ISBN: 978-3-540-45350-5

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics