News & Events

  • Larisse Voufo passed her final oral defense for the Ph.D. program!

    Date: 04/30/2014

    Abstract: Concepts are an essential component of generic programming. They constitute a mechanism of abstraction that promotes the separation of algorithms from data structures via expressing the algorithms in terms of properties of types rather than types. In C++, they have been anticipated as an extension that would improve the safety and usability of templates. Albeit a universal agreement on this extension, different design proposals have been the subject of ongoing discussions throughout at least the last decade. To aid the discussions and guide them towards a final unanimous design proposal, I have developed a modular and generic implementation of C++ concepts called ConceptClang, based on a compilation model that I designed. My experience with ConceptClang leads to novel approaches to name binding and the expression problem. In particular, I have developed a framework for understanding and specifying name binding. The framework allows to express complex language features like argument-dependent lookup in C++. The framework also allows me to propose a novel scoping rule named weak hiding and a novel mechanism for name binding called two-stage name binding (Bind^2). Weak hiding and Bind^2 are designed to maintain the backward compatibility of valid programs as languages like C++ transition from unconstrained to constrained polymorphism. Exploring mechanisms for name binding like Bind^2 uncovers a specific way in which the support for concepts in C++ is particularly different from that in other languages like Haskell. Essentially, the support for associated members in C++ concepts, surprisingly, encompasses properties that give open classes (or extensible structures) – a solution for the expression problem in object-oriented languages – for free. To demonstrate this, I have had to introduce a new notion of archetypes in C++, dubbed structure-opening archetypes, as part of a broader paradigm for extending current compilers with weak hiding through Bind^2. This work concludes with a comparative study of designs for C++ concepts that is intended to guide designs for concepts in most languages, including and beyond C++.

    In related news, Larisse will be on the program committe for the Broader Engagement Travel Grants for SC15 for next year. Please let her know if she can provide further information.

    Lastly, Larisse will be working at Google where she will be joining the Clang/LLVM team under the programming languages platform at Google, and continuing to work on the design and implementation of features for C++ in Clang.

    Congratulations, Dr. Voufo! All of us at CREST are very happy for your success!