New paper: N3774, C++ Needs Language Support For Vectorization -- Axel Naumann, Sandro Wenzel

A new WG21 paper is available. A copy is linked below, and the paper will also appear in the next normal WG21 mailing. If you are not a committee member, please use the comments section below or the std-proposals forum for public discussion.

Document number: N3774

Date: 2013-09-19

C++ Needs Language Support For Vectorization

by Axel Naumann, Sandro Wenzel

Excerpt:

In this paper we argue that vectorization is a very different concept to parallelization and needs to be supported explicitly by the language. The lack of C++ support for explicit vectorization costs factors (2 to 4 in real code) of performance on current commodity hardware. We demonstrate why we believe vectorization is a much needed language feature. The arguments presented in this paper are based on, and accompanied by, performance measurements of code used at CERN.

POCO 1.4.6p2 and Development Release 1.5.2 are available

Now available:

POCO Stable Release 1.4.6p2 and Development Release 1.5.2 Available

From the announcement:

Stable release 1.4.6p2 contains mostly bugfixes, upgrades to some bundled libraries (expat, zlib and sqlite) and a few new features (e.g. ColorConsoleChannel). ...

Development release 1.5.2 adds the MongoDB client library, contains significant updates to the JSON library, adds all changes from 1.4.6p2 and a whole lot of other improvements and fixes. ...

Startup Cloudius announces OSv, a new C++ open-source VM operating system

Froosv.PNGm Cloudius comes OSv: An alternative to Linux running in a virtual machine, written in modern C++. Cloudius is a startup formed by a group of ex-Red Hat OS virtualization experts.

Announcement: OSv, a new open-source operating system for virtual machines

InformationWeek, Charles Babcock: "Cloudius Takes On Linux as Cloud OS"

From the announcement:

Another refreshing feature of OSv is that is written in C++. It's been 40 years since Unix was (re)written in C, and the time has come for something better.

C++ is not about writing super-complex type hierarchies (as some people might have you believe). Rather, it allowed us to write shorter code with less boiler-plate repetition and less chances for bugs. It allowed us to more easily reuse quality code and data structures. And using newly standardized C++11 features, we were able to write safe concurrent code with standard language features instead of processor-specific hacks. And all of this with zero performance overheads -- most of C++'s features, most notably templates, are compile-time features which result in no run-time overhead compared to C code.

 

New paper: N3767, WG21 Teleconference 2013-09-13 Minutes -- Kyle Kloepper

A new WG21 paper is available. A copy is linked below, and the paper will also appear in the next normal WG21 mailing. If you are not a committee member, please use the comments section below or the std-proposals forum for public discussion.

Document number: N3767

Date: 2013-09-13

WG21 Teleconference 2013-09-13 Minutes

by Kyle Kloepper

This was the pre-Chicago WG21 administrative telecon.

New paper: N3773, async and ~future (Revision 4) -- Herb Sutter, Chandler Carruth, Niklas Gustafsson

A new WG21 paper is available. A copy is linked below, and the paper will also appear in the next normal WG21 mailing. If you are not a committee member, please use the comments section below or the std-proposals forum for public discussion.

Document number: N3773

Date: 2013-09-12

async and ~future (Revision 4)

by Herb Sutter, Chandler Carruth, Niklas Gustafsson

Excerpt:

N3637 documented the consensus of SG1 in Bristol. This paper is a minor update to N3637 to make the “change std::async” part of the proposal explicitly separable by updating the example code and adding three alternate sections to section 3 (3.1, 3.2, 3.3). This is to reflect that the main question at the end of Bristol was about how changing std::async affects binary compatibility, and to reflect the “N3637 except {remove|deprecate|leave-as-is} std::async instead of changing it” straw polls that had the most support in the July Santa Clara SG1 meeting.

Papers for Chicago: Concurrency

The start of my series about the papers for the upcoming Chicago meeting, starting with C for Concurrency:

C++ Papers for Chicago: Part 1 -- Concurrency

by Jens Weller

From the article:

As I did write a series about the papers for Bristol, this is the start of the series for Chicago, as at the end of this month the C++ committee will meet again for standardization. I try to...

GoingNative 2013 videos now available

gn13-signed.jpgThe videos from last week's GoingNative 2013 are now posted and available for on-demand viewing on Channel 9. Over 20 hours of live presentations cover everything from the latest in the language and the standard library, to C++'s evolution and momentum across the industry, to style guidance and the latest in C++11/14 features, to the optimizer and code generation for modern processors like Haswell, to experience in specific domains and platforms, and more.

GN'13 was a huge success thanks to Channel 9 and all the speakers, including headliner Bjarne Stroustrup and esteemed speakers Sean Parent, Andrei Alexandrescu, Stephan T. Lavavej, Jim Radigan, Herb Sutter, Scott Meyers, Michael Wong, Chandler Carruth, Ales Holecek, Elliot Omiya, Deon Brewis, Niklas Gustafsson, Eric Brumer, and Garrett Serack. Thanks to everyone who came to present and participate in this year's event.

The GN folks and others are working hard on next year. Stay tuned for more information in the months ahead. In the meantime, enjoy this material and be sure to share the ones you find most interesting and useful with your friends and colleagues.

Value-initialization with C++ -- Andrzej KrzemieĊ„ski

Do you know what value-initialization means, and why it's simpler in C++11?

Value-initialization with C++

by Andrzej Krzemieński

From the article:

Some time ago, I showed how boost::value_initialized can be used to value-initialize objects in generic components in C++03. In C++11 it is practically not necessary. C++11 gives you a way to force value-initialization of your objects in any possible initialization context.

Are you familiar with term “value initialization”? It is sometimes confused with “default-initialization”...

Pre-Chicago standards papers mailing available

The official pre-meeting standards papers mailing is now available. It includes the spring meeting agenda, updated issues lists, and a number of new papers including some that came through the public std-proposals forum. (Update: Please also direct discussion about these papers to that forum.)

Note: All of these papers have also been posted already to this site’s Standardization RSS feed. Subscribe to that feed to see the papers as they appear.

 

N3704 AGENDA, PL22.16 Meeting No. 61, WG21 Meeting No. 56, September 23-28, 2013 - Chicago, IL, USA Stephen D. Clamage 2013-07-13 2013-09      
N3705 Agenda and Meeting Notice for WG21 Telecon Meeting Herb Sutter 2013-07-23 2013-09      
N3706 C++ Distributed Counters Lawrence Crowl 2013-09-01 2013-09 N3355 Concurrency  
N3707 2014-02 Meeting Invitation and Information Herb Sutter 2013-08-06 2013-09      
N3708 A proposal to add coroutines to the C++ standard library O. Kowalke, N. Godspeed 2013-03-04 2013-09   Library  
N3709 Minutes for July 2013 Santa Clara SG1 Meeting H.. Boehm, J. Hoberock, A. Mackintosh 2013-8-29 2013-09      
N3710 Specifying the absence of "out of thin air" results (LWG2265) H. Boehm, et al. 2013-8-29 2013-09   Concurrency  
N3711 Task Groups As a Lower Level C++ Library Solution To Fork-Join Parallelism A. Laksberg, H. Sutter 2013-08-15 2013-09   Concurrency  
N3712 Policy-Based Design for Safe Destruction in Concurrent Containers Arch D. Robison 2013-08-30 2013-09   Concurrency  
N3713 C++ Standard Core Language Active Issues, Revision 85 William M. Miller 2013-09-03 2013-09 N3674 Core  
N3714 C++ Standard Core Language Defect Reports and Accepted Issues, Revision 85 William M. Miller 2013-09-03 2013-09 N3675 Core  
N3715 C++ Standard Core Language Closed Issues, Revision 85 William M. Miller 2013-09-03 2013-09 N3676 Core  
N3716 A printf-like Interface for the Streams Library Zhihao Yuan 2013-08-18 2013-09 N3506 Library  
N3717 SG5: Transactional Memory (TM) Meeting Minutes 2013/06/24-2013/08/26 Michael Wong 2013-08-30 2013-09      
N3718 Transactional Memory Support for C++ M. Wong, V. Luchangco, J. Maurer, M. Moir, et al. 2013-08-30 2013-09   Evolution  
N3719 Extend INVOKE to support types convertible to target class Tomasz Kamiński 2013-08-17 2013-09   Library  
N3720 Working Draft Technical Specification - URI G. Matthews, D. Berris 2013-08-30 2013-09 N3625 Networking  
N3721 Improvements to std::future<T> and Related APIs N. Gustafsson, A. Laksberg, H. Sutter, S. Mithani 2013-08-30 2013-09 N3634 Concurrency  
N3722 Resumable Functions N. Gustafsson, D. Brewis, H. Sutter, S. Mithani 2013-08-30 2013-09 N3650 Concurrency  
N3723 Extend operator-> to support rvalues Pascal Constanza 2013-08-23 2013-09   Evolution  
N3724 A Parallel Algorithms Library J. Hoberock, O. Giroux, V. Grover, H. Sutter, et al. 2013-08-30 2013-09 N3554 Concurrency  
N3725 Original Draft Specification of Transactional Language Constructs for C++ Version 1.1 (February 3, 2012) M. Wong, A. Adl-Tabatabai, T. Shpeisman, J. Gottschlich 2013-08-30 2013-09   Evolution  
N3726 Polymorphic Memory Resources Pablo Halpern 2013-09-02 2013-09 N3525 Library  
N3727 A proposal to add invoke function template Tomasz Kamiński 2013-08-01 2013-09   Library  
N3728 Packaging Parameter Packs (Rev. 2) Mike Spertus 2013-09-03 2013-09 N3416 Reflection  
N3729 Invocation type traits Mike Spertus 2013-09-02 2013-09 N3579 Library  
N3730 Specializations and namespaces Mike Spertus 2013-08-28 2013-09   Evolution  
N3731 Executors and schedulers, revision 2 C. Mysen, N. Gustafsson 20130825 2013-09 N3562 Concurrency  
N3732 Value-Oriented Concurrent Unordered Containers A. Robison, A. Potapov, A. Malakhov 2013-08-30 2013-09   Concurrency  
N3733 ISO/IEC CD 14882, C++ 2014, National Body Comments Barry Hedquist 2013-08-26 2013-09      
N3734 Vector Programming: A proposal for WG21 Robert Geva 2013-09-02 2013-09   Concurrency  
N3735 On the difference between parallel loops and vector loops Robert Geva 2013-09-02 2013-09   Concurrency  
N3736 C++ Standard Evolution Active Issues List (Revision R03) Ville Voutilainen 2013-08-27 2013-09 N3682 Evolution  
N3737 C++ Standard Evolution Completed Issues List (Revision R03) Ville Voutilainen 2013-08-27 2013-09 N3683 Evolution  
N3738 C++ Standard Evolution Closed Issues List (Revision R03) Ville Voutilainen 2013-08-27 2013-09 N3684 Evolution  
N3739 Improving pair and tuple, revision 1 Daniel Krügler 2013-09-02 2013-09 N3680 Library  
N3740 A Proposal for the World's Dumbest Smart Pointer, v2 Walter E. Brown 2013-08-30 2013-09 N3514 Library  
N3741 Toward Opaque Typedefs for C++1Y, v2 Walter E. Brown 2013-08-30 2013-09 N3515 Evolution  
N3742 Three <random>-related Proposals, v2 Walter E. Brown 2013-08-30 2013-09 N3547 Library  
N3743 Conditionally-supported Special Math Functions for C++14, v2 Walter E. Brown 2013-08-30 2013-09 N3548 Library  
N3744 Proposing [[pure]] Walter E. Brown 2013-08-30 2013-09   Evolution  
N3745 Feature-testing recommendations for C++ Clark Nelson 2013-08-28 2013-09 N3694 Evolution  
N3746 Proposing a C++1Y Swap Operator, v2 Walter E. Brown 2013-08-30 2013-09 N3553 Evolution  
N3747 A Universal Model for Asynchronous Operations Christopher Kohlhoff 2013-09-01 2013-09   Concurrency  
N3748 Implicit Evaluation of "auto" Variables and Arguments P. Gottschling, J. Falcou, H. Sutter 2013-08-30 2013-09   Evolution  
N3749 Constexpr Library Additions: functional Marshall Clow 2013-08-31 2013-09   Library  
N3750 C++ Ostream Buffers Lawrence Crowl 2013-09-01 2013-09   Concurrency  
N3751 Object Lifetime, Low-level Programming, and memcpy Gabriel Dos Reis 2013-09-03 2013-09   Undefined behavior  
N3752 Index Based Ranges A. Shödl, F. Fracassi 2013-08-30 2013-09   Ranges  
N3753 Centralized Defensive-Programming Support for Narrow Contracts (Revision 1) J. Lakos, A. Zakharov 2013-08-30 2013-09 N3604 Library  
N3754 C++ Standard Library Active Issues List (Revision R84) Alisdair Meredith 2013-09-03 2013-09 N3687 Library  
N3755 C++ Standard Library Defect Report List (Revision R84) Alisdair Meredith 2013-09-03 2013-09 N3688 Library  
N3756 C++ Standard Library Closed Issues List (Revision R84) Alisdair Meredith 2013-09-03 2013-09 N3689 Library  
N3757 Support for user-defined exception information and diagnostic information in std::exception Emil Dotchevski 2013-08-30 2013-09   Library  
N3758 Standard exception information types for std::exception Emil Dotchevski 2013-08-30 2013-09   Library  
N3759 SIMD Vector Types Matthias Kretz 2013-08-30 2013-09   Library  
N3760 [[deprecated]] attribute Alberto Ganesh Barbati 2013-09-01 2013-09 N3394 Core  
N3761 Proposing type_at<> Sean Middleditch 2013-08-29 2013-09   Library  
N3762 string_view: a non-owning reference to a string, revision 5 Jeffrey Yasskin 2013-09-01 2013-09 N3685 Library  
N3763 Traversable arguments for container constructors and methods, wording revision 4 Jeffrey Yasskin 2013-09-01 2013-09 N3686 Library  
N3764 Ruminations on relational operators Ville Voutilainen 2013-09-02 2013-09   Library  
N3765 On Optional Tony Van Eerd 2013-9-01 2013-09   Library  
N3766 The identity type transformation Jeffrey Yasskin 2013-09-03 2013-09   Library