New paper: N3720, Working Draft Technical Specification - URI -- Glyn Matthews, Dean Michael Berris

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: N3720

Date: 2013-08-30

Working Draft Technical Specification - URI

by Glyn Matthews, Dean Michael Berris

Excerpt:

The scope of this Technical Specification will include a single std::experimental::uri type, specifications about how the are intended to be processed and extended, including some additional helper types and functions. It will include a std::experimental::uri_builder type to build a URI from its components. Finally, it will include types and functions for percent encoding, URI references, reference resolution and URI normalization and comparison.

New paper: N3719, Extend INVOKE to support types convertible to target class -- Tomasz KamiƄski

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: N3719

Date: 2013-08-17

Extend INVOKE to support types convertible to target class

by Tomasz Kamiński

Excerpt:

This proposal is to extend the definition of INVOKE for class member pointers to cover types convertible to a target class of the pointer, like std::reference_wrapper.

Proposal also resolves LWG issue #2219

New paper: N3718, Transactional Memory Support for C++ -- V. Luchangco, J. Maurer, M. Moir, et al.

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: N3718

Date: 2013-08-30

Transactional Memory Support for C++

by Victor Luchangco, Jens Maurer, Mark Moir, et al.

Excerpt:

Transactional memory supports a programming style that is intended to facilitate parallel execution with a comparatively gentle learning curve. This document describes a proposal developed by SG5 to introduce transactional constructs into C++ as a Technical Specification. It is based in part on the Draft Specification for Transactional Constructs in C++ (Version 1.1) published by the Transactional Memory Specification Drafting Group in February 2012. This proposal represents a pragmatic basic set of features, and omits or simplifies a number of controversial or complicated features from the Draft Specification. Our goal has been to focus the SG5’s efforts towards a basic set of features that is useful and can support progress towards possible inclusion in the C++ standard. Reflecting this goal, for the first time, we present precise wording changes relative to the Working Draft of the C++ Standard (N3690) to implement this proposal. This document consists of an informal overview of the proposal, several illustrative examples, a summary of some of the discussion in SG5 and the earlier drafting group about design choices, and the above-mentioned wording changes.

New paper: N3717, SG5: Transactional Memory (TM) Meeting Minutes 2013/06/24-2013/08/26 -- M. Wong

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: N3717

Date: 2013-08-30

SG5: Transactional Memory (TM) Meeting Minutes 2013/06/24-2013/08/26

by Michael Wong

Excerpt:

Minutes for 2013/06/24 SG5 Conference Call

Minutes for 2013/07/08 SG5 Conference Call

Minutes for 2013/07/22 SG5 Conference Call

Minutes for 2013/08/05 SG5 Conference Call

Minutes for 2013/08/19 SG5 Conference Call

Minutes for 2013/08/26 SG5 Conference Call

New papers: N3713-15, Core Issues Lists -- William M. Miller

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: N3713, N3714, N2715

Date: 2013-09-03

C++ Standard Core Language Active Issues, Revision 85

C++ Standard Core Language Defect Reports and Accepted Issues, Revision 85

C++ Standard Core Language Closed Issues, Revision 85

by William M. Miller

Excerpt:

The purpose of these documents is to record the disposition of issues that have come before the Core Language Working Group of the ANSI (INCITS PL22.16) and ISO (WG21) C++ Standard Committee.

New paper: N3712, Policy-Based Design for Safe Destruction in Concurrent Containers -- Arch Robison

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: N3712

Date: 2013-08-30

Policy-Based Design for Safe Destruction in Concurrent Containers

by Arch Robison

Excerpt:

Writing containers that support concurrent access/modi cation by multiple threads incurs a special problem: when is it safe to delete an object? The problem is surprisingly tricky when lock-free operations are involved. Numerous general means have been proposed, ...

This paper sketches a way of abstracting these means so that concurrent container implementations could be parameterized over these means, thus allowing users to select the means best for their context. ...

This paper presents a sketch, not a complete proposal. It is intended to elicit discussion from experts as to whether the abstraction is viable. As such, this paper presents a fairly minimal interface that omits knobs for weak memory consistency and and extensive overloading of operators, so that experts can focus on a core question: Is the abstraction sufficient to support various means for deferred object deletion?

New paper: N3706, C++ Distributed Counters -- Lawrence Crowl

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: N3706

Date: 2013-09-01

C++ Distributed Counters

by Lawrence Crowl

Excerpt:

We propose a set of coordinated counter types that collectively provide for distributed counting. The essential component of the design is a trade-off between the cost of incrementing the counter, the cost of loading (reading) the counter value, and the "lag" between an increment and its appearance in a "read" value. That is, the read of a counter value may not reflect the most recent increments. However, no count will be lost.

These counters are parameterized by the base integer type that maintains the count. Avoid situations that overflow the integer, as that may have undefined behavior. This constraint implies that counters must be sized to their use. (For dynamic mitigation, see the exchange operation below.)

LLVM Toolchain on Windows -- Chandler Carruth

Have you been waiting to use clang until it works on Windows? Your wait is over. The inimitable Chandler Carruth from Google announced an honest-to-god Windows installer for the LLVM toolchain that integrates into Visual Studio, and links with the native C++ runtime.

A Path Forward for an LLVM Toolchain on Windows

by Chandler Carruth

[...] we’ve been driving many of the efforts around compatibility with Visual Studio and native Windows C++ code in Clang and LLD (the LLVM linker). Today, as announced at my GoingNative 2013 talk, we are able to build a trivial C++ application that in turn links against native C++ libraries and uses them in real, interesting ways. This is a huge milestone for the project, and something we’re really excited to be talking more about.

Continue reading...

Planetary: First Smithsonian curation of code created using C++ and Cinder-- S Chan & A Cope

The first piece of code acquired by the Smithsonian's Cooper-Hewitt National Design Museum -- "Planetary", written in C++.

Planetary: collecting and preserving code as a living object

Posted by Sebastian Chan & Aaron Cope on Monday August 26, 2013

From the article:

Cooper-Hewitt has just acquired its first piece of code. Although the collection has objects that are the end result of algorithmic processes, notably Patrick Jouin's 3D printed chair, Solid C2, this is the first time that code, itself, has been collected.

Almost all contemporary design practice involves digital processes -- from the ubiquitous Adobe design software to CAD packages used by product designers and architects, to the simple day-to-day office management and accounting software -- it would be difficult to find a designer who lives entirely 'off the grid.’ Despite this, design museums have been slow to start to add software to their permanent collections.

Some of this reticence to collect digital objects stems from deep uncertainties as to how to preserve and present such objects to future visitors and future scholars. But for Cooper-Hewitt these uncertainties have been a strong driver to experiment.

So, here we have Planetary.

Planetary is an iPad application written in C++ using the Cinder framework. Planetary offers an alternative music player application for the iPad that visualizes your music collection as a series of celestial bodies. Songs are moons, albums are planets, artists are suns—and the orbits of each are determined by the length of albums and tracks. Their brightness represents their frequency of playback.

Continue reading...

Tales of C++ - Episode Six: Boollocks--K-ballo

Tales of C++, Episode 6:

Boollocks

by K-Ballo

From the article:

In the beginning there was no bool. And C++ said "let there be bool", and there was bool...

The Boolean data type is an integral type with only two values: true and false, intended to represent the truth values of logic and Boolean algebra. With only two values, what can possibly go wrong?

Continue reading...