The yearly C++ conference in Seattle will this year have quite a few talks touching on IncludeOS. The C++ community, with its unrelenting focus on performance and its low tolerance for run time overhead is near and dear to our hearts and the C++ conference is naturally an important arena for us. If you are interested in IncludeOS you might consider the following talks to learn more about IncludeOS and its surrounding ecosystem.
Lukas Bergdoll will give a talk titled Using IncludeOS to Write Fast and Secure Web Applications about writing web applications in C++ with IncludeOS. Bergdoll is the author of the delegates used to tie everything together in IncludeOS. His talk discusses the merits of using C++ to write web applications using modern asynchronous C++ as opposed to competing system languages such as Rust, D and Go.
The founder of the IncludeOS project, Alfred Bratterud, will in his talk titled Deconstructing the OS: the Devil’s In the Side Effects show you some exciting developments in unikernel OS- and hypervisor design, ranging from a single-function do-it-all hardware interface for everything needed to run a web server, to a full on object-oriented ecosystem giving your C++ application total control over everything from devices, drivers and plugins, to every protocol in an internet enabled host. We’re running a full IP stack on platforms ranging from full blown server hardware to inside a single unit test in userspace and we still want more. We’ll discuss how minimal can be combined with maximal - giving you lots of modern abstractions while keeping the final binary as lean and mean as possible.
There is also a separate talk on the topic of delegates and its use in IncludeOS - Delegate this!. Designing a fast IP stack from scratch is hard. Using delegates made it all easier for IncludeOS, the open source library operating system written from scratch in modern C++. Our header-only delegates are just as fast as C-style function pointers, compatible with std::function, and allows any object to delegate work to stateful member functions without knowing anything about the class they belong to. We use delegates for everything from routing packets to creating REST endpoints, and most importantly to tie the whole IP stack together. In this talk we’ll show you how we use delegates in IncludeOS, discuss pitfalls and alternatives, and give you all you need to get started.
Our own Ingve Vormestrand is giving a talk titled Tools and Techniques To Stay Up-to-date With Modern C++. As C++ has seen tremendous development with language standards coming out in 2011, 2014 and 2017 the language is on a roll. Keeping track of best practices and new concepts is harder than ever. Ingve shares from his experiences from working on IncludeOS to help you stay on top in the C++ world.
Teresa Johnson from Google has a talk ThinLTO: Building C++ Applications with Scalable Whole Program Optimization which could be very relevant for IncludeOS. Link Time Optimization is currently not something we support - we’re currently avoiding it in order to be able to randomize our address space. But at some point we might give the option to do LTO in order to have a build that is focused on performance, rather than the extra security gained by having a more random address space.
The ThinLTO compilation model looks very relevant for IncludeOS - especially since sizable, incremental builds will be common in production environments. Immutable images lead to a lot of compilation and linking.
There have been some interest in deploying IncludeOS for applications with very low latency requirements. As such Carl Cooks talk When a Microsecond Is an Eternity: High Performance Trading Systems in C++ might be very relevant to those of you who are looking into shaving every single microsecond off your response rate.
Rian Quinn and his talk A Test a Day Keeps Your Manager Away! is not about IncludeOS but rather on testing. His talk from Cppcon 2016 was interesting as we found that we’ve been banging our respective heads against many of the same walls. This years talk will focus on testing and CI with experiences and examples drawn from one of our favorite hypervisors, Bareflank.