skip to main content
research-article

ABI compatibility through a customizable language

Published:10 October 2010Publication History
Skip Abstract Section

Abstract

ZL is a C++-compatible language in which high-level constructs, such as classes, are defined using macros over a C-like core language. This approach makes many parts of the language easily customizable. For example, since the class construct can be defined using macros, a programmer can have complete control over the memory layout of objects. Using this capability, a programmer can mitigate certain problems in software evolution such as fragile ABIs (Application Binary Interfaces) due to software changes and incompatible ABIs due to compiler changes. In this paper, we outline the problem of fragile and incompatible ABIs and show how ZL can be used to solve them.

References

  1. }}Itanium C++ ABI (revision: 1.86). http://www.codesourcery.com/cxx-abi/abi.html.Google ScholarGoogle Scholar
  2. }}Andrew Palay. C++ in a changing environment. In Proc. USENIX C++ Technical Conf., 1992.Google ScholarGoogle Scholar
  3. }}Theodore C. Goldstein and Alan D. Sloane. The object binary interface: C++ objects for evolvable shared class libraries. In Proc. USENIX C++ Technical Conf., 1994. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. }}R. Kent Dybvig, Robert Hieb, and Carl Bruggeman. Syntactic abstraction in Scheme. Lisp and Symbolic Computation, 5(4):295--326, 1992. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. }}GNOME. http://www.gnome.org.Google ScholarGoogle Scholar
  6. }}Aspell C API reference. http://aspell.net/man-html/Through-the-C-API.html.Google ScholarGoogle Scholar
  7. }}Eric Eide and John Regehr. Volatiles are miscompiled, and what to do about it. In Proc. Intl. Conf. on Embedded Software (EMSOFT), 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. }}A common C++ ABI for GNU/Linux. http://gcc.gnu.org/gcc-3.2/c++-abi.html.Google ScholarGoogle Scholar
  9. }}Intel C++ compiler man page. Available at http://software.intel.com/en-us/intel-compilers/.Google ScholarGoogle Scholar
  10. }}Ira R. Forman, Michael H. Conner, Scott H. Danforth, and Larry K. Raper. Release-to-release binary compatibility in SOM. In Proc. OOPSLA, 1995. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. }}James Gosling, Bill Joy, Guy Steele, and Gilad Bracha. The Java Language Specification, Third Edition. Addison Wesley, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. }}D. Yu, Z. Shao, and V. Trifonov. Supporting binary compatibility with static compilation. In Proc. Java Virtual Machine Research and Technology Symposium (JVM), 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. }}Tim Lindholm and Frank Yellin. The Java Virtual Machine Specification, Second Edition. Addison Wesley, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. }}GCJ web site. http://gcc.gnu.org/java/.Google ScholarGoogle Scholar
  15. }}Tom Tromey and Andrew Haley. GCJ: The new ABI and its implications. In Proc. GCC Developers' Summit, 2004.Google ScholarGoogle Scholar
  16. }}Michael Sperber (Ed.). The revised6 report on the algorithmic language Scheme, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. }}Oscar Waddell and R. Kent Dybvig. Extending the scope of syntactic abstraction. In Proc. POPL, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. }}Jason Baker and Wilson C. Hsieh. Maya: multiple-dispatch syntax extension in Java. In Proc. PLDI, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. }}Michiaki Tatsubori, Shigeru Chiba, Kozo Itano, and Marc-Olivier Killijian. OpenJava: A class-based macro system for Java. In Proc. 1st OOPSLA Workshop on Reflection and Software Engineering, 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. }}Avi Bryant, Andrew Catton, Kris De Volder, and Gail C. Murphy. Explicit programming. In Proc. Conf. Aspect-Oriented Software Development (AOSD), 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. }}Jay Earley. An efficient context-free parsing algorithm. Commun. ACM, 13(2):94--102, 1970. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. }}Donovan Kolbly. Extensible Language Implementation. PhD thesis, Univ. of Texas, Austin, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. }}Eric Allen, Ryan Culpepper, Janus Dam Nielsen, Jon Rafkind, and Sukyoung Ryu. Growing a syntax. In Proc.Workshop on Foundations of Object-Oriented Languages (FOOL), 2009.Google ScholarGoogle Scholar
  24. }}Andrew Shalit, David Moon, and Orca Starbuck. Dylan Reference Manual. Addison-Wesley, 1996.Google ScholarGoogle Scholar
  25. }}Jonathan Bachrach and Keith Playford. The Java syntactic extender (JSE). In Proc. OOPSLA, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. }}Daniel Weise and Roger Crew. Programmable syntax macros. In Proc. PLDI, 1993. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. }}Bill McCloskey and Eric Brewer. ASTEC: a new approach to refactoring C. In Proc. ESEC/FSE-13, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. }}Claus Brabrand and Michael I. Schwartzbach. Growing languages with metamorphic syntax macros. In Proc. Symposium on Partial Evaluation and Semantics-based Program Manipulation (PEPM), 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. }}Steven E. Ganz, Amr Sabry, and Walid Taha. Macros as multi-stage computations: type-safe, generative, binding macros in macroml. In Proc. Intl. Conf. Functional Programming (ICFP), 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. }}Russ Cox, Tom Bergan, Austin T. Clements, Frans Kaashoek, and Eddie Kohler. Xoc, an extension-oriented compiler for systems programming. In Proc. Architectural Support for Programming Languages and Operating Systems (ASPLOS), 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. }}Martin Bravenboer and Eelco Visser. Concrete syntax for objects: domain-specific language embedding and assimilation without restrictions. In Proc. OOPSLA, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. }}Eelco Visser. Program transformation with Stratego/XT. Rules, strategies, tools, and systems in Stratego/XT 0.9. In Lengauer et al., editor, Domain-Specific Program Generation, Lecture Notes in Computer Science, June 2004.Google ScholarGoogle Scholar
  33. }}Nathaniel Nystrom, Michael R. Clarkson, and Andrew C. Myers. Polyglot: An extensible compiler framework for java. In Proc. Conf. Compiler Construction, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. }}D. Batory, B. Lofaso, and Y. Smaragdakis. Jts: Tools for implementing domain-specific languages. In Proc. Intl. Conf. Software Reuse (ICSR), 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. }}George C. Necula, Scott McPeak, S. P. Rahul, and Westley Weimer. CIL: Intermediate language and tools for analysis and transformation of C programs. In Proc. Conf. Compiler Construction, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. ABI compatibility through a customizable language

    Recommendations

    Comments

    Login options

    Check if you have access through your login credentials or your institution to get full access on this article.

    Sign in

    Full Access

    • Published in

      cover image ACM SIGPLAN Notices
      ACM SIGPLAN Notices  Volume 46, Issue 2
      GPCE '10
      Febuary 2011
      185 pages
      ISSN:0362-1340
      EISSN:1558-1160
      DOI:10.1145/1942788
      Issue’s Table of Contents
      • cover image ACM Conferences
        GPCE '10: Proceedings of the ninth international conference on Generative programming and component engineering
        October 2010
        198 pages
        ISBN:9781450301541
        DOI:10.1145/1868294
        • General Chair:
        • Eelco Visser,
        • Program Chair:
        • Jaakko Järvi

      Copyright © 2010 ACM

      Publisher

      Association for Computing Machinery

      New York, NY, United States

      Publication History

      • Published: 10 October 2010

      Check for updates

      Qualifiers

      • research-article

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader
    About Cookies On This Site

    We use cookies to ensure that we give you the best experience on our website.

    Learn more

    Got it!