CppCon 2017: EA’s Secret Weapon: Packages and Modules--Scott Wardle

Have you registered for CppCon 2018 in September? Early bird registration is open now.

While we wait for this year’s event, we’re featuring videos of some of the 100+ talks from CppCon 2017 for you to enjoy. Here is today’s feature:

EA’s Secret Weapon: Packages and Modules

by Scott Wardle

(watch on YouTube) (watch on Channel 9)

Summary of the talk:

A lot of people hate build systems. What if using a library was just as easy as header-only libraries?

EA has had a Secret Weapon called “packages” for over 14 years. EA's Packages are like Ruby’s Gems or Perl’s CPAN or Rust’s cargo. If you build a package from the package server it will download all of its dependencies.

This talk will be about what we have learned about packages and versioning while building our large AAA games over the last 10+ years. Finally, what do we see for the future, like how will C++ modules fit in?

In detail I will talk about:
-Package layout
-Package server
-Versioning control and packages
-Libraries teams and platform fragmentation
-Packages' effect on large scale architecture
-C++ Modules TS prototypes

Start speaking at Meeting C++ 2018

As it was a big success last year, Meeting C++ has again a track for new speakers, and is looking for folks which like to submit their talk ideas to the conference!

The call for Talks for Meeting C++ 2018 ends on June 17th.

Call for a more diverse program at Meeting C++ 2018!

by Jens Weller

From the article:

Last years track for new speakers was a great success, so Meeting C++ will dedicate a track to this now in every year. So I'd like to reach out to the C++ Community, who do you think has something interesting to say about C++ and could start speaking at this years Meeting C++?

C++ User Group Meetings in June

Lots of User Groups are meeting in June, Meeting C++ has posted an detailed overview:

C++ User Group Meetings in June 2018

by Jens Weller

From the article:

The monthly overview of upcoming C++ User Group meetings. Join a C++ User Group near you, or learn how to start your own!

There are 4 new C++ User Groups: Houston, Prague, Cluj, New York.

 

App-level Developer on std::error Exceptions Proposal for C++. Part II. The Discussion.--"No Bugs" H

Nothing is easy.

App-level Developer on std::error Exceptions Proposal for C++. Part II. The Discussion.

by "No Bugs" Hare

From the article:

For quite a long while, in certain parts of C++ community, there is a substantial resistance to existing C++ exceptions; this leads to an alternative subculture of using error codes instead of exceptions, so there are effectively two barely-compatible C++ worlds: world-using-exceptions, and world-using-error-codes...

CopperSpice: Overload Resolution

New video on the CopperSpice YouTube Channel:

Overload Resolution

by Barbara Geller and Ansel Sermersheim

About the video:

This video discusses overload resolution and the complications involved in debugging when the compiler does not choose the overload you think it should. This video was very interesting to put together, since we had no idea how much of the standard you need in order to understand the intricacies of overload resolution. Not only is overload resolution complex, but you also need to understand the details of type conversions and template argument deduction.

Please take a look and remember to subscribe!

Revisting Regular Types -- Titus Winters

An updated discussion on C++ type design, especially the overlap between Regular and reference types.

Revisiting Regular Types

By Titus Winters

From the article:

With 20 years of experience, we know that Regular type design is a good pattern - we should model user-defined types based on the syntax and semantics of built-in types where possible. However, common formulations of Regular type semantics only apply to values, and for performance reasons we commonly pass by reference in C++. In order to use such a reference as if it were its underlying Regular type we need some structural knowledge of the program to guarantee that the type isn’t being concurrently accessed. Using similar structural knowledge, we can treat some non-Regular types as if they were Regular, including reference types which don’t own their data. Under such an analysis, string_view indeed behaves as if it were Regular when applied to common usage (as a parameter). However, span does not, and further it is (currently) impossible to have shallow copy, deep compare, and Regular const semantics in the same type in C++.

This analysis provides us some basis to evaluate non-owning reference parameters types (like string_view and span) in a practical fashion, without discarding Regular design.

Automatic Object Linkage, with Include Graphs -- Thomas Young

For C++ code-bases with multiple targets and shared code elements, static libraries are kind of the default approach, but is there a better way to set this up?

Automatic Object Linkage, with Include Graphs

by Thomas Young

From the article:

In this post I describe an alternative approach to sharing source code elements between multiple build targets.

 

...

We'll need to enforce some constraints on the way the source code is set up, notably with regards to header file organisation, but can then automatically determine what to include in the link operation for each build target, based on a graph of include relationships extracted from the source files.

The resulting dynamic, fine grained, object-file centric approach to code sharing avoids the need for problematic static library decomposition, and the associated 'false dependencies'.