Portrait

Ronald Garcia

Research Interests
Refereed Publications
Technical Reports
Boost
Personal

I am a post-doctoral researcher at Rice University in the Resource-Aware Programming Lab, led by Walid Taha.

I was formerly a graduate student in Computer Science at Indiana University in Bloomington, Indiana. I was a member of the Open Systems Lab, led by Andrew Lumsdaine.


Research Interests

I am interested in many aspects of programming language semantics, design, and implementation, including language support for library-centric and modular software development, generic and generative programming, and domain specific languages and libraries. My current research focuses on language support for compile-time metaprogramming, inspired primarily by how C++ template metaprogramming techniques are used to implement high-performance production software.

Refereed Publications

Lazy Evaluation and Delimited Control
Ronald Garcia, Andrew Lumsdaine, and Amr Sabry. To Appear in POPL '09: the ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages.
An extended comparative study of language support for generic programming
Ronald Garcia, Jaakko Järvi, Andrew Lumsdaine, Jeremy Siek, and Jeremiah Willcock. In Journal of Functional Computing, Volume 17, Number 2, 2007.
This paper extends the work presented in the OOPSLA 2003 paper. It adds explorations of the generic programming style using the class system of Objective Caml and the symmetric multi-methods of Cecil. The analysis of the previously studied languages has been updated to reflect changes since 2003, some of which were inspired by that work.

Type classes without types
Ronald Garcia and Andrew Lumsdaine. In Scheme '05: the 2005 ACM SIGPLAN Workshop on Scheme and Functional Programming.

Haskell type classes are an interesting example of how static type information can be used to enhance the expressiveness of a programming language. Scheme macros are a powerful mechanism for developing syntactic abstractions. This paper explores how far macros can go toward extending a dynamically typed language with a feature normally associated with static typing.

MultiArray: a C++ library for generic programming with arrays
Ronald Garcia and Andrew Lumsdaine. In Software: Practice and Experience, Volume 35, Number 2, 2005.

This paper reports on the design and implementation of MultiArray, a library for multi-dimensional array programming. This library is based on the generic programming style popularized by the Standard Template Library. It provides array containers, adaptors, and views, all built on a consistent conceptual basis.

A comparative study of language support for generic programming
Ronald Garcia, Jaakko Järvi, Andrew Lumsdaine, Jeremy Siek, and Jeremiah Willcock. In Proceedings of OOPSLA '03: the 2003 ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, October 2003.

Both research and mainstream programming languages now provide mechanisms for type-based abstraction, including templates, parametric polymorphism, and sophisticated module systems. This paper uses a case-study to explore the capabilities and shortcomings of several programming languages with respect to their ability to express libraries of generic data structures and algorithms.

Technical Reports

Concepts for C++0x
Jeremy Siek, Douglas Gregor, Ronald Garcia, Jeremiah Willcock, Jaakko Järvi, and Andrew Lumsdaine. Technical report N1758=05-0018, ISO/IEC JTC 1, Information Technology, Subcommittee SC 22, Programming Language C++, 2005.

C++ has been a very capable language for implementing generic libraries, but provides limited explicit support for generic programming. Based on our experiences implementing C++ libraries and studying language support for the generic programming style, we designed C++ language extensions to directly support concepts, a modular constraint formalism for generics. The design has since evolved into a joint proposal with colleagues at Texas A&M, and is expected to be part of the next C++ standard (so-called C++0X).

Boost

I am an active participant in the Boost C++ Libraries project. I serve (with John Phillips) as Review Wizard, primarily responsible for coordinating review managers and library reviews.

I am the primary developer of the Boost MultiArray Library. MultiArray is a library of multi-dimensional array abstractions. MultiArray is based on generic programming. It provides a number of array types (self-managed containers, adaptors, and views) as well as a type-generic programming interface (or concept in generic programming terms) that enables the implementation of generic array algorithms.

I've contributed code to a variety of other Boost projects. For example, I implemented a flexible GraphViz parser for the Boost Graph Library. I have also provided an IOStreams codecvt facet for the Unicode UTF-8 encoding. This facet is used in several Boost libraries including the Serialization and Program Options libraries.

Personal

I am an avid fan and player of ultimate frisbee. I used to play for Notre Dame and Indiana University. I also like to ride my road bike around interesting places. While not particularly fond of cooking, I'm a big fan of eating.


PO Box 1892, MS-132
Houston TX 77251-1892
ronald dot garcia at acm dot org