GCC, C++ and Transactional Memory
About a year of development later, a new GCC series is out, sporting a good number of smaller and larger improvements (and some regressions!), as usual. For example, the new C++11 Standard, finally released a few months ago, required the implementation of a new set of flexible memory builtins, exploited by the runtime library; Transactional memory support is available for the first time, both for C and C++. The presentation will go through some of the new features, in particular those likely to be of interest to the parallel programming community, without hiding at the same time a few known issues and also some recurring criticisms (eg, diagnostics quality) hopefully to be in part addressed before we meet again.
The talk will also give an overview of the C++11 memory model and the transactional language constructs for C and C++. Both are programming abstractions that make it easier for programmers to deal with concurrency. The former, including the new atomic types, enables portable low-level concurrent programming. The latter enables threads to synchronize on normal program state using transactions, which allows for a higher degree of composability compared to other synchronization mechanisms; also, it serves as a portable interface to Transactional Memory implementations in both software and hardware (e.g., Intel's TSX).