Loading…
CppCon 2018 has ended

Sign up or log in to bookmark your favorites and sync them to your phone or calendar.

• Build and Package Systems [clear filter]
Monday, September 24
 

11:00

C++ Dependency Management: from Package Consumption to Project Development
TL;DR: Want to see what Cargo for C++ looks like? Then this talk is for you.

Existing C++ package managers focus primarily on consumption: there is a repository of released packages that we can download, build, and install. But what happens between releases of these packages? In other words, how are they developed, tested, and delivered? Currently, the answer is "painfully" (and rarely by mere mortals).

Meantime, as languages competing with C++ have shown (see Rust's Cargo, Go's dep/vgo), the state of the art has moved on and a "consumption manager" alone is no longer sufficient: we need support for managing dependencies of a project over its entire development lifecycle -- a tool commonly referred to as a project dependency manager.

In this talk I would like to show the C++ dependency management workflow focused on development as supported by the build2 toolchain. Specifically, we will create from scratch a cross-platform C++ project, add/manage a few dependencies (that can come both from a central package repository as well as individual git repositories), setup CI for all the major platform/compiler combinations, go through a couple of releases, and, finally, publish our package to a central repository and see how our users can reproduce the exact set of dependencies we used in our builds (the lockfile functionality).

And this won't be an entirely toy example either: in the process we will touch on quite a few real-world challenges, including continuous versioning between releases, how to depend on unreleased revisions in version control repositories, dependency auto-synchronization through build system integration, as well as how the upcoming C++ Modules will likely affect packaging.

Speakers
avatar for Boris Kolpackov

Boris Kolpackov

Chief Hacking Officer, Code Synthesis
Boris Kolpackov is a founder and CHO (Chief Hacking Officer) at Code Synthesis, a company focusing on the development of open-source tools and libraries for C++. For the past 10 years Boris has been working on solving interesting problems in the context of C++ using domain-specific... Read More →


Monday September 24, 2018 11:00 - 12:00
Copper Mountain Theater (2nd Floor)

16:45

Git, CMake, Conan - How to ship and reuse our C++ projects
Git and CMake are already established standards in our community. However, it is uncommon to see them being used in an efficient way. As a result, many C++ projects have big problems with either importing other dependencies or making themselves easy to import by others. It gets even worse when we need to build many different configurations of our package on one machine.

That presentation lists and addresses the problems of build system and packaging that we have with large, multi-platform, C++ projects that often have many external and internal dependencies. The talk will present how proper use of CMake and Conan package manager can address those use cases. It will also describe current issues with the cooperation of those tools.

If you've attended or seen my talk at C++Now 2018, that time you can expect much more information on Conan and package creation using that tool. I will also describe how the integration of CMake and Conan changed over the last few months.

Speakers
avatar for Mateusz Pusz

Mateusz Pusz

Chief Software Engineer | C++ Trainer, Epam Systems | Train IT
Software architect, chief developer, and security champion with more than 14 years of experience in designing, writing and maintaining C++ code for fun and living. C++ consultant, trainer, and evangelist focused on Modern C++. His main areas of interest and expertise are code performance... Read More →


Monday September 24, 2018 16:45 - 17:45
Keystone (404)
 
Tuesday, September 25
 

12:30

Make World: The Most Miserable Place In C++
Although we have a panel on packaging and modules, and have had plenty of presentations on build systems, we still haven't gotten a group of people into a room to discuss build systems and all the things we can do better to improve our build system story.

What can we do to move the entire community forward towards a federated build system environment? What obstacles do we have on improving the boilerplate that each project has to create? Is the concept of a zero config build system that difficult? Is C++ doomed to require separate macro languages to construct our build, while other languages (e.g., Haskell, C#, OCaml, Rust, Ruby, Python, Go, Typescript, etc.) can and do express their builds natively? Why can't we just let my build system glob these files for me? Why can't we tie modules to the filesystem? Is making the compiler a build system really such a bad idea?

Join our panelists, each of whom has given a talk on build systems at CppCon as they debate and try to compromise over C++'s future with building our projects. This panel will focus less on packaging and more on building our software.

Moderator
avatar for Jason Turner

Jason Turner

Developer, Trainer, Speaker
Host of C++Weekly https://www.youtube.com/c/JasonTurner-lefticus, Co-host of CppCast http://cppcast.com, Co-creator and maintainer of the embedded scripting language for C++, ChaiScript http://chaiscript.com, and author and curator of the forkable coding standards document http://cppbestpractices.com.I'm... Read More →

Speakers
avatar for Peter Bindels

Peter Bindels

Software Engineer, TomTom
avatar for Robert Maynard

Robert Maynard

Principal Engineer, Kitware, Inc
I am that person that did the CMake reddit AMA. I am a principal engineer at Kitware, and most of my time is spent developing VTK-m. VTK-m is a HPC framework for scientific visualization algorithms, which basically means I love highly data parallel algorithms that can execute on GPU's... Read More →
avatar for Isabella Muerte

Isabella Muerte

Isabella Muerte is a C++ Bruja and Build System Trash Goblin. She cares deeply about improving the workflow the C++ community currently has and is currently designing an experimental next-generation build system called Coven based on ideas given in her CppCon 2017 talk "There Will... Read More →
JP

Jussi Pakkanen

Consultant, Rakettitiede oy
Jussi Pakkanen is the creator and project lead of the Meson build system. He is currently working as a consultant. He has experience in many different fields of computing ranging from slot machines to mail sorting, computer security, Linux desktop development and gaming. His free... Read More →


Tuesday September 25, 2018 12:30 - 13:30
Copper Mountain Theater (2nd Floor)
 
Wednesday, September 26
 

14:00

What to Expect from a Next-Generation C++ Build System
Few will argue that a standard build system would greatly benefit the C++ community. And the change is in the air: the upcoming C++ Modules are bound to shake things up, the need to support multiple build systems is putting pressure on our packaging efforts, and languages like Rust and Go clearly show things work much better if the build system and package manager are well integrated. Perhaps then this is the C++ community's "git moment": an opportunity to get a next-generation build system that everyone is finally happy to use.

In this talk I will demonstrate key features the next-generation C++ build system should have in order to achieve that elusive happy-to-use property. It is based on our experience developing the build2 toolchain, an integrated build system and package/project dependency managers (and which already supports C++ Modules).

We start with a brief discussion of overall design choices: native or project generator/meta build system, black box or a concept of build, declarative or scripted (or perhaps a hybrid), uniform or platform-specific, in which language can/should it be implemented, and, finally, what about IDE/tools integration?

Next, we go over what any current-generation build system should already support: build configuration management, cross-compilation, additional operations (test, install/uninstall, dist), out of source builds, and wildcard patterns.

Then on to the next-generation: high-fidelity hermetic builds, precise change detection, portable, parallel testing, project importing/composability, and support for C++ Modules which should pave the way to reliable, generally-available distribution compilation.

Speakers
avatar for Boris Kolpackov

Boris Kolpackov

Chief Hacking Officer, Code Synthesis
Boris Kolpackov is a founder and CHO (Chief Hacking Officer) at Code Synthesis, a company focusing on the development of open-source tools and libraries for C++. For the past 10 years Boris has been working on solving interesting problems in the context of C++ using domain-specific... Read More →


Wednesday September 26, 2018 14:00 - 15:00
Keystone (404)

15:15

Don't package your libraries, write packagable libraries!
Amid an avalanche of packaging solutions, who's side should you take? Trick question; you can support all of them! Discover the fundamental principles that make your library easy for _others_ to package so you don't have to! As a bonus, your builds will be faster, simpler, and more maintainable.

This talk covers the lessons learned from packaging over 700 libraries in vcpkg, from the simplest single-header to the massive framework of Qt. We'll dissect the open source package maintainer's perspective and walk through the top library mistakes, supported by real-world examples from the vcpkg catalog.

Speakers
RS

Robert Schumacher

Software Developer, Microsoft


Wednesday September 26, 2018 15:15 - 15:45
Copper Mountain Theater (2nd Floor)

15:50

Compiling Multi-Million Line C++ Code Bases Effortlessly with the Meson Build System
The Meson build system is a fresh build system designed from the ground up to solve the build problems of today. It is currently seeing growing adoption across many domains and is already being used to build large chunks of most modern Linux distributions. One of the main reasons for this is Meson's heavy focus on usability, meaning that build definitions are both powerful and easy to understand.

In this talk we shall look into the design and use of Meson from the ground up going up all the way to projects with millions of lines of code and complex build setups such as code generators and cross compilation. We shall especially examine the problem of dependencies and how Meson solves this age old problem with a composable design that supports both system provided and self built dependencies from the same build definition. Finally we will examine the multi-language support of Meson for easily combining C++ with other languages such as Java, C#, D and Python.

Speakers
JP

Jussi Pakkanen

Consultant, Rakettitiede oy
Jussi Pakkanen is the creator and project lead of the Meson build system. He is currently working as a consultant. He has experience in many different fields of computing ranging from slot machines to mail sorting, computer security, Linux desktop development and gaming. His free... Read More →


Wednesday September 26, 2018 15:50 - 16:20
Aspen Highlands Hall (1st Floor)

20:30

Optimizing Code Speed and Space with Build Time Switches
Our compilers and linkers are powerful tools and like many power tools, mastery means understanding the settings. Come join compiler experts to get your questions answered on how to get the best from your code whether you are building for speed or space.

Speakers
avatar for Ian Bearman

Ian Bearman

Software engineer working on various technologies for over 17 years. Has a rich engineering experience in code generation and optimization with multiple languages, architectures and platforms. Currently is software engineering manager at Microsoft on the Visual C++ compiler team... Read More →
avatar for Chandler Carruth

Chandler Carruth

Software Engineer, Google
Chandler Carruth leads the Clang team at Google, building better diagnostics, tools, and more. Previously, he worked on several pieces of Google’s distributed build system. He makes guest appearances helping to maintain a few core C++ libraries across Google’s codebase, and is... Read More →
avatar for Xiang Fan

Xiang Fan

Principal Software Engineer, Microsoft
Xiang is the Principal Software Engineer in Visual C++ compiler front end team and works with game studios to analyze and improve their build time.
avatar for Brett Searles

Brett Searles

Principal Architect, 1968
Work in hardware, embedded, graphics and web-based software space. Currently working on a Holographic Surgical Center to allow surgeons to perform simulated surgeries on real patient data. Also working with a major electronics distributor on a SAAS tool for their customers to easily... Read More →
avatar for Michael Wong

Michael Wong

VP Research & Development, Codeplay Software
wongmichael.com/about


Wednesday September 26, 2018 20:30 - 22:00
Keystone (404)
 
Thursday, September 27
 

09:00

Build Systems: a Simple Solution to a Complicated Problem
New developers starting out with C++ nearly universally hit a brick wall - it's very hard to start programming and get something working. Unlike other languages such as Java, NodeJS, Rust and Python, where a standard package manager and build system take care of these problems for you, C++ has all the ability and variation under the sun to create nearly anything - if you've understood how to make the tools do what you want them to.

Things don't need to be so complicated. Nearly always, the things you're making aren't as complicated as the tools allow you to express. There is a good reason why C++ build systems are so complicated though, but it's not one that requires them to be. In this talk we'll explore the design space for build tools (with a focus on C++) and discover a simpler way of building software.

Speakers
avatar for Peter Bindels

Peter Bindels

Software Engineer, TomTom


Thursday September 27, 2018 09:00 - 10:00
Keystone (404)

20:30

Creating the Complete Build Package
Even though we all have to build our application, there may be issues that are necessary to consider. Like, how do we create build packages so that our application can be cross-platform? What about Modules? How can unit testing and end to end testing be integrated at the end of the build? Please bring questions so that you can get answers from our panelists.

Speakers
MK

Manuel Klimek

Software Engineer, Google
Manuel Klimek is a software engineer at Google since 2008 and a professional code monkey since 2003. After developing embedded Linux terminals for the payment industry and distributed storage technology at Google in C++, he decided that C++ productivity lags significantly behind other... Read More →
avatar for Boris Kolpackov

Boris Kolpackov

Chief Hacking Officer, Code Synthesis
Boris Kolpackov is a founder and CHO (Chief Hacking Officer) at Code Synthesis, a company focusing on the development of open-source tools and libraries for C++. For the past 10 years Boris has been working on solving interesting problems in the context of C++ using domain-specific... Read More →
PM

Paddy McDonald

Principal Software Engineer Manager, Microsoft
Paddy McDonald has worked at Microsoft on various internal and public developer tools since 1998 in Visual C++, Microsoft Research and Windows. He currently leads a team in Visual C++ working on various post-link binary analysis and editing technologies as well as being involved... Read More →
RS

Robert Schumacher

Software Developer, Microsoft
avatar for Brett Searles

Brett Searles

Principal Architect, 1968
Work in hardware, embedded, graphics and web-based software space. Currently working on a Holographic Surgical Center to allow surgeons to perform simulated surgeries on real patient data. Also working with a major electronics distributor on a SAAS tool for their customers to easily... Read More →
avatar for Titus Winters

Titus Winters

C++ Codebase Cultivator, Google
Titus Winters has spent the past 6 years working on Google's core C++ libraries. He's particularly interested in issues of large scale software engineer and codebase maintenance: how do we keep a codebase of over 100M lines of code consistent and flexible for the next decade? Along... Read More →


Thursday September 27, 2018 20:30 - 22:00
Telluride (407)