One of the major things holding C++ back is the lack of a good component system. Other languages have the ability to easily incorporate prebuilt libraries into your project. With C++, you are often stuck rebuilding (or trying to rebuild) code, since C++ code built with a different compiler, with a different version of the same compiler, or as debug and release builds with the same compiler is ABI incompatible. With a good component system, it is easier to both package and consume libraries. This presentation introduces you to CppComponents, a component system for C++ that allows you to easily use binary components created with one compiler in a project compiled with another compiler and/or standard library. You can do this while still using your favorites from the Standard Library — such as string, vector, tuple, chrono, etc. — as function parameters and return values, as well as using exceptions. In addition, CppComponent provides cross ABI compatible function objects, futures, promises, executors, and channels. All of these are available in a header-only library that only depends on the C++11 standard library.
In this talk we will look at the techniques that underlie this library, provide examples of how to easily consume and create binary components that can be used from many compilers, and look at some example components that make multithreading and network programming much simpler. We will also look at some advanced uses of the library such as easy dependency injection and dynamic, name-based method calling. We will wrap up the talk looking at future directions, including how this library can enable a "C++ PyPI", and a C++ component renaissance that will make C++ easier to use in a wide variety of domains. The target audience for this talk is intermediate and advanced C++ programmers, though beginners will also find this talk to be helpful.
John Bandela first started programming in C++ at age 14 in 1994 when he cajoled his parents into buying him Visual C++ 1.0 for his birthday. It took a while, but as he learned the language, he decided he really liked C++. He attended the University of Florida and obtained his undergraduate degree in Computer and Information Science. During his undergraduate time, he created and submitted Boost.Tokenizer. After a 10 year detour into medicine and... Read More →
Thursday May 15, 2014 2:30pm - 4:00pm
Attendance numbers do not account for private attendees. Get there early!