April 2019

CppCast Episode 195: fmt with Victor Zverovich

Episode 195 of CppCast the first podcast for C++ developers by C++ developers. In this episode Rob and Jason are joined by Victor Zverovich to discuss the fmt modern formatting library and the proposal to bring it to C++20.

CppCast Episode 195: fmt with Victor Zverovich

by Rob Irving and Jason Turner

About the interviewee:

Victor Zverovich is a software engineer at Facebook working on the Thrift RPC framework. Before joining Facebook in 2016, he worked for several years on modeling systems for mathematical optimization. He is an active contributor to open-source projects, an author of the {fmt} library and the ISO proposal P0645 to add a new formatting facility to C++.

CppCon 2019 Call for Submissions

Will you answer?

CppCon 2019 Call for Submissions

From the article:

CppCon is the annual, week-long face-to-face gathering for the entire C++ community. The conference is organized by the C++ community for the community and so we invite you to present. The conference regular program consists of five days of seven tracks of one hour sessions...

Quick Q: Reusing a moved container?

Quick A: clear() to make sure and use it as normal.

Recently on SO:

Reusing a moved container?

From section 17.3.26 of the spec "valid but unspecified state":

an object state that is not specified except that the object’s invariants are met and operations on the object behave as specified for its type [ Example: If an object x of type std::vector<int> is in a valid but unspecified state, x.empty() can be called unconditionally, and x.front() can be called only if x.empty() returns false. —end example ]

Therefore, the object is live. You can perform any operation that does not require a precondition (unless you verify the precondition first).

clear, for example, has no preconditions. And it will return the object to a known state. So just clear it and use it as normal.

Report from the February 2019 ISO C++ meeting (Core Language working group)--Jason Merrill

Short and sweet.

Report from the February 2019 ISO C++ meeting (Core Language working group)

by Jason Merrill

From the article:

The February 2019 ISO C++ meeting was held in Kailua-Kona, Hawaii. As usual, Red Hat sent three developers to the meeting: I attended in the Core Language working group, Jonathan Wakely in Library, and Thomas Rodgers in SG1 (parallelism and concurrency). The meeting went smoothly, although there was significant uncertainty at the beginning where we would end up. In the end, Modules and Coroutines were accepted into the C++20 draft, so now we have our work cut out for us nailing down the remaining loose corners. Here ar highlights from the meeting...

CPPP--Jonathan Boccara

A new one!

CPPP

by Jonathan Boccara

From the article:

Here is an exciting piece of news for the C++ community: the CPPP conference has been officially announced!

The Day I Fell in Love with Fuzzing--Chris Wellons

Do you know about it?

The Day I Fell in Love with Fuzzing

by Chris Wellons

From the article:

In 2007 I wrote a pair of modding tools, binitools, for a space trading and combat simulation game named Freelancer. The game stores its non-art assets in the format of “binary INI” files, or “BINI” files. The motivation for the binary format over traditional INI files was probably performance: it’s faster to load and read these files than it is to parse arbitrary text in INI format...

Boost 1.70.0 released

Check it out:

Boost 1.70.0 released

From the release notes:

New Libraries​
  • Outcome: A set of tools for reporting and handling function failures in contexts where directly using C++ exception handling is unsuitable, from Niall Douglas.
  • Histogram: Fast and extensible multi-dimensional histograms with convenient interface for C++14, from Hans Dembinski.
Updated Libraries​
  1. Asio:
  • Fixed a Windows-specific memory leak that may occur when system_executor is used.
  • Improved dispatch, post and defer documentation.
  • Fixed compile errors that occur when using the composed read and write operations with MSVC 11.0.
  • Fixed a macOS-specific warning about the deprecation of OSMemoryBarrier.
  • Changed composed asynchronous read and write operations to move buffer sequence objects.
  • Added a fallback error code for when we OpenSSL produces an SSL_ERROR_SYSCALL result without an associated error.
  • Suppressed the eof error on SSL shutdown as it actually indicates success.
  • Ensured SSL handshake errors are propagated to the peer before the local operation completes.
  • Fixed buffer_sequence_begin and buffer_sequence_end to prevent implicit conversion.
  • Changed the range-based asynchronous connect operation to deduce the EndpointSequence iterator type.
  • Fixed calculation of absolute timeout when the backend uses pthread_cond_timedwait.
  • Changed receive operations to return the correct number of bytes transferred when truncation (error::message_size) occurs on a datagram-oriented socket.
  • Enabled recycling of the memory used to type-erase a function object with the polymorphic executor.
  • Added a new BOOST_ASIO_DISABLE_VISIBILITY configuration #define.
  • Added the noexcept qualifier to various functions.
  • Added a constructor for local::basic_endpoint that takes a string_view.
  • Relaxed the completion condition type requirements to only require move-constructibility rather than copy-constructibility.
  • Added a make_strand helper function.
  • Added a new async_compose function that simplifies the implementation of user-defined asynchronous operations.
  • Added a new DynamicBuffer_v2 concept which is CopyConstructible.
  • Updated the Coroutines TS support and promoted it to the asio namespace.
  • Added a new async_result form with an initiate static member function.
  • Added the ability to use custom I/O executors with I/O objects (such as sockets).
  • This release includes a number of new features, bug fixes, performance enhancements, and documentation improvements. Notable changes include:
  • Consult the Revision History for further details.

...