IO2D demo: CPULoad—Michael Kazakov

A walkthrough of the CPULoad demo from the 2D Graphics proposal:

IO2D demo: CPULoad

by Michael Kazakov

From the article:

In my humble opinion, the 2D graphics proposal might bring C++ a solid foundation for visualization support. It’s powerful enough to build complex structures on top of it – here I can refer to the sample SVG renderer as an example. At the same time, it’s not built around some particular low-level graphics API (i.e OpenGL/DirectX/Mantle/Metal/Vulkan), which come and go over time (who remembers Glide?). What is also very important about the proposal is its implementability – I wrote the CoreGraphics backend in ~3 months on a part-time basis. It can be assumed that writing a theoretical Direct2D backend might take about the same time. While it’s easy to propose “just” a support for PostScript, SVG or even HMTL5, the practical implementability of such extensive standards is very doubtful. Having said that, I do think that the proposal, while being a valid direction, is far from being perfect and needs a lot of polishing.

March 2018 ISO C++ Meeting Trip Report (SG1: Concurrency and Parallelism)—Thomas Rodgers

The future is still getting closer.

March 2018 ISO C++ Meeting Trip Report (SG1: Concurrency and Parallelism)

by Thomas Rodgers

From the article:

This year’s Winter ISO C++ Standard Committee meeting was held in March in Jacksonville, Florida. A number of larger features, for which there is substantial interest but which are also difficult to get right, were discussed:

  • Concepts, along with Concept types from the Ranges TS; see P0898 and n4685
  • Modules; see n4689
  • Coroutines; see n4723
  • Networking; see n4711
  • Executors; see p0443

2018-04 post-Jacksonville mailing available

The full 2018-04 mailing of new standards papers is now available.


2018-04 post-Jacksonville
N4729 WG21 telecon meeting: Modules TS publication Jonathan Wakely 2018-02-01 2018-04 WG21
N4730 WG21 pre-Jacksonville telecon minutes Jonathan Wakely 2018-03-02 2018-04 WG21
N4731 SC22 WG14 Liaison Report (C Standard) Barry Hedquist 2018-03-05 2018-04 WG21
N4732 WG21 2018-03 Jacksonville Minutes Patrice Roy 2018-04-02 2018-04 WG21
N4734 Working Draft, C ++ Extensions for Networking Jonathan Wakely 2018-04-04 2018-04 N4711 WG21
N4735 Networking TS - Editor's Report Jonathan Wakely 2018-04-04 2018-04 WG21
N4736 Working Draft, C ++ Extensions for Coroutines Gor Nishanov 2018-03-31 2018-04 N4723 WG21
N4737 Editor's report for the Coroutines TS Gor Nishanov 2018-03-27 2018-04 WG21
N4738 C++ Standardization Committee Meeting, HSR Rapperswil – Latest Info Peter Sommerlad 2018-04-01 2018-04 WG21
N4739 Jacksonville 2018 LEWG Summary Titus Winters 2018-03-27 2018-04 WG21
N4740 N4740 Editors' Report - Programming Languages - C++ Richard Smith 2018-04-02 2018-04 WG21
N4741 Working Draft, Standard for Programming Language C++ Richard Smith 2018-04-02 2018-04 N4727 WG21
N4742 Working Draft, Technical Specification for C++ Extensions for Parallelism Version 2 Jared Hoberock 2018-04-02 2018-04 N4725 WG21
N4743 Parallelism TS Editor’s Report, post-Jacksonville mailing Jared Hoberock 2018-04-02 2018-04 WG21
N4744 Programming Languages - Technical Specification for C++ Extensions for Parallelism Version 2 Jared Hoberock 2018-04-02 2018-04 WG21
P0052r7 Generic Scope Guard and RAII Wrapper for the Standard Library Peter Sommerlad, Andrew L. Sandoval 2018-03-26 2018-04 P0052r6 Library
P0122r7 span: bounds-safe views for sequences of objects Neil MacIntosh, Stephan T. Lavavej 2018-03-16 2018-04 P0122r6 Library Adopted 2018-03
P0194r6 Static reflection Matus Chochlik, Axel Naumann, David Sankel 2018-03-16 2018-04 P0194R5 Core, Library Adopted 2018-03
P0214r9 Data-Parallel Vector Types & Operations Matthias Kretz 2018-03-16 2018-04 P0214r8 Library Adopted 2018-03
P0318R1 unwrap_ref_decay and unwrap_reference Vicente J. Botet Escribá 2018-03-30 2018-04 P0318R0 Library
P0323r6 std::expected Vicente Botet, JF Bastien 2018-04-02 2018-04 P0323R5 Library
P0339R4 polymorphic_allocator<> as a vocabulary type Pablo Halpern, Dietmar Kühl 2018-04-02 2018-04 P0339R3 Library
P0355r7 Extending <chrono> to Calendars and Time Zones Howard E. Hinnant, Tomasz Kamiński 2018-03-16 2018-04 P0355R6 Library Adopted 2018-03
P0388R2 Permit conversions to arrays of unknown bound Robert Haberlach 2018-03-09 2018-04 P0388R1 Evolution
P0443r6 A Unified Executors Proposal for C++ Jared Hoberock, Michael Garland, Chris Kohlhoff, Chris Mysen, Carter Edwards, Gordon Brown 2018-04-02 2018-04 P0443R5 SG1, Library Evolution
P0466R2 Layout-compatibility and Pointer-interconvertibility Traits Lisa Lippincott 2018-03-29 2018-04 P0466R1 Evolution, Library Evolution, Library
P0479R5 Proposed wording for likely and unlikely attributes Clay Trychta 2018-03-16 2018-04 P0479R4 SG14, Core Adopted 2018-03
P0482R2 char8_t: A type for UTF-8 characters and strings Tom Honermann 2018-04-01 2018-04 P0482R1 Evolution, Library Evolution
P0528R2 The Curious Case of Padding Bits, Featuring Atomic Compare-and-Exchange JF Bastien, Michael Spencer 2018-03-16 2018-04 P0528R1 Core
P0542R4 Support for contract based programming in C++ J. Daniel Garcia 2018-04-02 2018-04 P0542R3 Evolution, Core
P0551R3 Thou Shalt Not Specialize std Function Templates! Walter E. Brown 2018-03-16 2018-04 P0551R2 Library Adopted 2018-03
P0561R4 An RAII Interface for Deferred Reclamation Geoff Romer, Andrew Hunter 2018-03-21 2018-04 P0561R3 SG1, Library
P0591R3 Utility functions to implement uses-allocator construction Pablo Halpern 2018-04-02 2018-04 P0591R2 Library
P0602R2 variant and optional should propagate copy/move triviality Zhihao Yuan 2018-03-12 2018-04 P0602R1 Library
P0634R3 Down with typename! Nina Ranns, Daveed Vandevoorde 2018-03-14 2018-04 P0634R2 Core Adopted 2018-03
P0664R2 C++ Coroutine TS Issues Gor Nishanov 2018-03-08 2018-04 P0664R1 Evolution, Library Evolution, Core
P0722R3 Efficient sized delete for variable sized classes Richard Smith, Andrew Hunter 2018-03-17 2018-04 P0722R2 Core, Library
P0732R1 Class Types in Non-Type Template Parameters Jeff Snyder, Louis Dionne 2018-03-30 2018-04 P0732R0 Evolution
P0753R2 Manipulators for C++ Synchronized Buffered Ostream Peter Sommerlad, Pablo Halpern 2018-03-16 2018-04 P0753R1 Library Adopted 2018-03
P0754R2 <version> Alan Talbot 2018-03-13 2018-04 P0754R1 Library Adopted 2018-03
P0780R2 Allow pack expansion in lambda init-capture Barry Revzin 2018-03-14 2018-04 P0780R1 Evolution Adopted 2018-03
P0782R1 Constraining Concepts Overload Sets Adam David Alan Martin, Erich Keane 2018-03-31 2018-04 P0782R0 Evolution
P0806R1 Deprecate implicit capture of this via [=] Thomas Köppe 2018-04-02 2018-04 P0806R0 Core
P0809R0 Comparing Unordered Containers Titus Winters 2017-10-12 2018-04 Library Evolution, Library Adopted 2018-03
P0811R2 Well-behaved interpolation for numbers and pointers S. Davis Herring 2018-03-29 2018-04 P0811R1 Library
P0820R3 Feedback on P0214 Tim Shen 2018-03-29 2018-04 P0820R2 Library Evolution
P0840R2 Language support for empty objects Richard Smith 2018-03-12 2018-04 P0840R1 Core Adopted 2018-03
P0858R0 Constexpr iterator requirements Antony Polukhin 2017-11-11 2018-04 Library Evolution, Library
P0887R1 The identity metafunction Timur Doumler 2018-03-18 2018-04 P0887R0 Library
P0888R0 C++ Standard Library Issues to be moved in Jacksonville Marshall Clow 2018-02-12 2018-04 WG21
P0898R1 Standard Library Concepts Casey Carter 2018-04-02 2018-04 P0898R0 Library Evolution, Library
P0903R1 Define basic_string_view(nullptr) Ashley Hedberg 2018-02-16 2018-04 P0903R0 Library Evolution, Library
P0905R1 Symmetry for spaceship Tomasz Kamiński, Herb Sutter, Richard Smith 2018-03-16 2018-04 P0905R0 Evolution, Library Evolution Adopted 2018-03
P0906R1 Improvement suggestions for the Modules TS Jens Maurer 2018-04-02 2018-04 P0906R0 Core
P0907R1 Signed Integers are Two’s Complement JF Bastien 2018-04-01 2018-04 P0907R0 Evolution
P0911R1 Rebase the Coroutines TS onto the C++17 Standard Gor Nishanov 2018-03-15 2018-04 P0911R0 Core, Library Adopted 2018-03
P0913R1 Add symmetric coroutine control transfer Gor Nishanov 2018-03-15 2018-04 P0913R0 Evolution Adopted 2018-03
P0914R1 Add parameter preview to coroutine promise constructor Gor Nishanov 2018-03-15 2018-04 P0914R0 Evolution Adopted 2018-03
P0918R1 More simd<> Operations Tim Shen 2018-03-29 2018-04 P0918R0 SG1, Library Evolution
P0919R1 Heterogeneous lookup for unordered containers Mateusz Pusz 2018-04-01 2018-04 P0919R0 Library
P0929R1 Checking for abstract class types Jens Maurer 2018-03-24 2018-04 P0929R0 Core
P0943R1 Support C atomics in C++ Hans-J. Boehm 2018-03-30 2018-04 P0943R0 Library Evolution
P0947R1 Another take on Modules Richard Smith 2018-03-06 2018-04 P0947R0 Evolution
P0961R1 Relaxing the structured bindings customization point finding rules Ville Voutilainen 2018-03-14 2018-04 P0961R0 Evolution Adopted 2018-03
P0962R1 Relaxing the range-for loop customization point finding rules Ville Voutilainen 2018-03-14 2018-04 P0962R0 Evolution Adopted 2018-03
P0966R1 string::reserve Should Not Shrink Mark Zeren, Andrew Luo 2018-02-08 2018-04 P0966R0 Library Evolution, Library Adopted 2018-03
P0968R0 Core Language Working Group "tentatively ready" Issues for the March, 2018 (Jacksonville) meeting William M. Miller 2018-03-12 2018-04 WG21 Adopted 2018-03
P0969R0 Allow structured bindings to accessible members Timur Doumler 2018-03-14 2018-04 Evolution, Core Adopted 2018-03
P0970R0 Better, Safer Range Access Customization Points Eric Niebler 2018-04-01 2018-04 Library Evolution
P0973R0 Coroutines TS Use Cases and Design Issues Geoff Romer, James Dennett 2018-03-23 2018-04 Evolution
P0974R0 A Function Returning Whether An Underlying Type Value Is a Valid Enumerator of a Given Enumeration Jonathan Ringle 2018-03-30 2018-04 Library Evolution, Library
P0975R0 Impact of coroutines on current and upcoming library facilities Gor Nishanov 2018-03-10 2018-04 SG1, SG14, Evolution, Library Evolution, Library
P0976R0 The Evils of Paradigms Bjarne Stroustrup 2018-03-06 2018-04 WG21
P0978R0 A Response to "P0973r0: Coroutines TS Use Cases and Design Issues" Gor Nishanov 2018-03-31 2018-04 Evolution
P0981R0 Halo: coroutine Heap Allocation eLision Optimization: the joint response Richard Smith, Gor Nishanov 2018-03-18 2018-04 Evolution
P0982R0 Weaken Release Sequences Hans-J. Boehm, Olivier Giroux, Viktor Vafeiades 2018-04-01 2018-04 SG1, Core
P0983R0 Plan of Record for Making C++ Modules Available in C++ Standards Gabriel Dos Reis, Richard Smith 2018-04-01 2018-04 WG21
P0984R0 All (*)()-Pointers Replaced by Ideal Lambdas Peter Sommerlad 2018-04-01 2018-04 Evolution, Library Evolution
P0985R0 LWG Chair post-meeting report Marshall Clow 2017-03-31 2018-04 WG21
P0986R0 Comparison of Modules Proposals Richard Smith, David Jones 2018-03-09 2018-04 Evolution
P0987R0 polymorphic_allocator<byte> instead of type-erasure Pablo Halpern 2018-04-02 2018-04 Library
P0989R0 Standardizing Extended Integers Tony Van Eerd 2018-04-01 2018-04 Evolution
P0990R0 Rebuttal of Implementation Concerns for Bit Entanglement Tony Van Eerd 2018-04-01 2018-04 Evolution
P0991R0 Comparison of Stackful Coroutine Proposals Detlef Vollmann 2018-03-12 2018-04 SG1
P0992R0 Translation and evaluation Andrew Sutton 2018-04-02 2018-04 SG7
P0993R0 Value-based Reflection Andrew Sutton, Herb Sutter 2014-04-02 2018-04 SG7
P0994R0 String View Conversion for Function Arguments Adam David Alan Martin, Jason Carey 2018-03-20 2018-04 Library Evolution
P0995R0 Improving atomic_flag JF Bastien, Olivier Giroux, Andrew Hunter 2018-03-17 2018-04 SG1, Library Evolution
P0996R1 Rebase Library Fundamentals TS on C++17 Alisdair Meredith 2018-03-16 2018-04 P0996R0 Library Evolution, Library Adopted 2018-03
P0999R0 More Natural Arithmetic in C++ James Dennett 2018-­04-­01 2018-04 SG6, SG12, Evolution, Core
P1000R0 C++ IS schedule Herb Sutter 2018-04-02 2018-04 WG21
P1001R0 Target Vectorization Policies from Parallelism V2 TS to C++20 Alisdair Meredith 2018-03-14 2018-04 SG1, Library Evolution
P1001R1 Target Vectorization Policies from Parallelism V2 TS to C++20 Alisdair Meredith 2018-03-16 2018-04 P1001R0 SG1, Library Evolution
P1002R0 Try-catch blocks in constexpr functions Louis Dionne 2018-04-01 2018-04 Evolution
P1003R0 C++ Standard Library Issues Resolved Directly In Jacksonville Marshall Clow 2018-03-16 2018-04 WG21 Adopted 2018-03
P1004R0 Making std::vector constexpr Louis Dionne 2018-04-01 2018-04 Library Evolution
P1005R0 namespace std { namespace fs = filesystem; } Bryce Adelstein Lelbach, S. Davis Herring 2018-03-16 2018-04 SG3, Library Evolution, Library
P1006R0 Constexpr in std::pointer_traits Louis Dionne 2018-04-01 2018-04 Library Evolution
P1011R0 Constant Pointer View - std::as_const Strikes Back! Adam David Alan Martin 2018-03-20 2018-04 Library Evolution
P1013R0 Explicit concept expressions Thomas Köppe, Hubert S.K. Tong 2018-04-02 2018-04 Evolution
P1014R0 A Unit Type for C++ Andrew Sutton, Nevin Liber 2018-04-01 2018-04 Evolution
P1015R0 WG21 2018-03 Jacksonville Record of Discussion Patrice Roy 2018-04-02 2018-04 WG21
P1018R0 Evolution status after Jacksonville 2018 Ville Voutilainen 2018-03-18 2018-04 WG21

Trip report: Winter ISO C++ standards meeting (Jacksonville)—Herb Sutter

Lots of things happened.

Trip report: Winter ISO C++ standards meeting (Jacksonville)

by Herb Sutter

From the article:

On Saturday March 17, the ISO C++ committee completed its winter meeting in Jacksonville, Florida, USA, hosted with thanks by the Standard C++ Foundation and Perennial. We had some 140 people at the meeting, representing 8 national bodies. As usual, we met for six days Monday through Saturday, including all evenings...

ISO C++ Committee – Jacksonville 2018, trip report—Timur Doumler

Timur Doumler has joined the CLion team in fall 2017. He continues to be active on the C++ Committee, as it fits well into JetBrains' strategy: our C++ team would like to be actively involved in the committee and feed our experience with implementing language features in our C++ tools back into the ongoing work on the evolution of the C++ language.

ISO C++ Committee – Jacksonville 2018 trip report

by Timur Doumler

From the article:

From the 12th to the 17th of March 2018, I travelled to Jacksonville, Florida, to attend the ISO C++ Committee meeting as JetBrains’ representative on the committee. I decided to focus on Evolution Working Group and cover the most relevant discussions concerning language evolution:

  • Day 1: Structured bindings and concepts
  • Day 2: Let’s break some code!
  • Day 3: Coroutines and Modules
  • Day 4: Compile-time programming
  • Day 5: New Tooling Study Group
  • Day 6: Plenary

Dependency Management For C++—Hans Klabbers

Dependency management is a missing piece in the C++ eco system.

Dependency Management For C++

by Hans Klabbers

About the article

The writer took part in the developer survey and followed up on the outcome. Depenendency management is seen as a missing piece in the C++ standard. The article is written as a response on a tweet by Bryce Lelbach and an article on medium by Corentin. It describes the author's ideas for dependency management. 

trip report: first ISO C++ meeting experience—Vittorio Romeo

This trip report covers the author's first ISO C++ meeting experience. Vittorio talks about the most interesting interactions and papers discussed in Jacksonville, while also sharing some of his thoughts regarding controversial topics such as modules and 2D graphics.

trip report: first ISO C++ meeting experience

By Vittorio Romeo

From the article:

I'm back in London from Jacksonville, where I attended my first ISO C++ meeting. Apart from the long flights and long working hours, it has been a very enjoyable experience for multiple reasons: [...]

[...] almost every interaction when debating a paper was very well motivated, and I found myself thinking "that's a very good point" very often, even when two conflicting opinions were being stated one right after the other [...]

Guy Davidson’s Jacksonville Trip Report

Having landed safely in Britain and recovered somewhat from his mystery illness, Guy has prepared a trip report, paying particular attention to the drama of the 2D Graphics paper and the unexpected interruption to the closing plenary.

Oh, lock-free circular buffers, yay! Hey, no 2D graphics? Jacksonville trip report

by Guy Davidson

From the article:

Right now, both library groups are processing fewer papers than they receive. There are 19 sessions of about two hours during each meeting, and LWG spent the first five sessions on P0214, Data-Parallel Vector Types & Operations (for the Parallelism TS), which defines some SIMD types. I was delighted to be in on this, and even offered to scribe but found it impossibly hard, unlike my stint in LEWG at Toronto. However, it was during the fourth of these sessions that I started to feel distinctly unwell.

Text Formatting at the ISO C++ standards meeting in Jacksonville—Victor Zverovich

A good library fro formatting in the standard, soon?

Text Formatting at the ISO C++ standards meeting in Jacksonville

by Victor Zverovich

From the article:

This week I attended the ISO C++ standards committee meeting to present the second revision of my paper P0645R1 Text Formatting, based on the {fmt} formatting library. The first revision was reviewed by Library Evolution Working Group (LEWG) in June 2017 in Toronto and there was a lot of feedback, particularly I’ve been asked to

  • investigate compile-time format string processing,
  • look at using or explain why not to use an output iterator,
  • use string_view,
  • allow pre-computation of output size,
  • add benchmarks.

It took me a while to address all the feedback, especially the first two items which required substantial API and implementation changes, so I had to skip the meeting in Albuquerque. However, this ultimately resulted in a much better API so I’m grateful to LEWG for the helpful guidance. Despite all the negative press covfefe “design by committee” sometimes works surprisingly well...