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.
- }}Itanium C++ ABI (revision: 1.86). http://www.codesourcery.com/cxx-abi/abi.html.Google Scholar
- }}Andrew Palay. C++ in a changing environment. In Proc. USENIX C++ Technical Conf., 1992.Google Scholar
- }}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 Scholar
Digital Library
- }}R. Kent Dybvig, Robert Hieb, and Carl Bruggeman. Syntactic abstraction in Scheme. Lisp and Symbolic Computation, 5(4):295--326, 1992. Google Scholar
Digital Library
- }}GNOME. http://www.gnome.org.Google Scholar
- }}Aspell C API reference. http://aspell.net/man-html/Through-the-C-API.html.Google Scholar
- }}Eric Eide and John Regehr. Volatiles are miscompiled, and what to do about it. In Proc. Intl. Conf. on Embedded Software (EMSOFT), 2008. Google Scholar
Digital Library
- }}A common C++ ABI for GNU/Linux. http://gcc.gnu.org/gcc-3.2/c++-abi.html.Google Scholar
- }}Intel C++ compiler man page. Available at http://software.intel.com/en-us/intel-compilers/.Google Scholar
- }}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 Scholar
Digital Library
- }}James Gosling, Bill Joy, Guy Steele, and Gilad Bracha. The Java Language Specification, Third Edition. Addison Wesley, 2005. Google Scholar
Digital Library
- }}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 Scholar
Digital Library
- }}Tim Lindholm and Frank Yellin. The Java Virtual Machine Specification, Second Edition. Addison Wesley, 1999. Google Scholar
Digital Library
- }}GCJ web site. http://gcc.gnu.org/java/.Google Scholar
- }}Tom Tromey and Andrew Haley. GCJ: The new ABI and its implications. In Proc. GCC Developers' Summit, 2004.Google Scholar
- }}Michael Sperber (Ed.). The revised6 report on the algorithmic language Scheme, 2007. Google Scholar
Digital Library
- }}Oscar Waddell and R. Kent Dybvig. Extending the scope of syntactic abstraction. In Proc. POPL, 1999. Google Scholar
Digital Library
- }}Jason Baker and Wilson C. Hsieh. Maya: multiple-dispatch syntax extension in Java. In Proc. PLDI, 2002. Google Scholar
Digital Library
- }}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 Scholar
Digital Library
- }}Avi Bryant, Andrew Catton, Kris De Volder, and Gail C. Murphy. Explicit programming. In Proc. Conf. Aspect-Oriented Software Development (AOSD), 2002. Google Scholar
Digital Library
- }}Jay Earley. An efficient context-free parsing algorithm. Commun. ACM, 13(2):94--102, 1970. Google Scholar
Digital Library
- }}Donovan Kolbly. Extensible Language Implementation. PhD thesis, Univ. of Texas, Austin, 2002. Google Scholar
Digital Library
- }}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 Scholar
- }}Andrew Shalit, David Moon, and Orca Starbuck. Dylan Reference Manual. Addison-Wesley, 1996.Google Scholar
- }}Jonathan Bachrach and Keith Playford. The Java syntactic extender (JSE). In Proc. OOPSLA, 2001. Google Scholar
Digital Library
- }}Daniel Weise and Roger Crew. Programmable syntax macros. In Proc. PLDI, 1993. Google Scholar
Digital Library
- }}Bill McCloskey and Eric Brewer. ASTEC: a new approach to refactoring C. In Proc. ESEC/FSE-13, 2005. Google Scholar
Digital Library
- }}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 Scholar
Digital Library
- }}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 Scholar
Digital Library
- }}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 Scholar
Digital Library
- }}Martin Bravenboer and Eelco Visser. Concrete syntax for objects: domain-specific language embedding and assimilation without restrictions. In Proc. OOPSLA, 2004. Google Scholar
Digital Library
- }}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 Scholar
- }}Nathaniel Nystrom, Michael R. Clarkson, and Andrew C. Myers. Polyglot: An extensible compiler framework for java. In Proc. Conf. Compiler Construction, 2003. Google Scholar
Digital Library
- }}D. Batory, B. Lofaso, and Y. Smaragdakis. Jts: Tools for implementing domain-specific languages. In Proc. Intl. Conf. Software Reuse (ICSR), 1998. Google Scholar
Digital Library
- }}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 Scholar
Digital Library
Index Terms
ABI compatibility through a customizable language
Recommendations
ABI compatibility through a customizable language
GPCE '10: Proceedings of the ninth international conference on Generative programming and component engineeringZL 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 ...
Languages as libraries
PLDI '11Programming language design benefits from constructs for extending the syntax and semantics of a host language. While C's string-based macros empower programmers to introduce notational shorthands, the parser-level macros of Lisp encourage ...







Comments