News

How To Parallelise CSV Reader with C++17 - new chapter in C++17 in Detail

Just before Holiday Break, I've added a new chapter to my book:

How To Parallelise CSV Reader with C++17 - new chapter in C++17 in Detail

By Bartlomiej Filipek

From the new chapter:

In the new chapter, you’ll see how to build a tool that works on CSV files, parses lines into sales records and then performs calculations on the data. The code uses many C++17 features. You’ll see how easy it is to add parallel execution to selected algorithms and have a performance improvement across the whole application. In the end, we’ll discuss problems that we found along the way and possible future enhancements.

ReSharper C++ 2018.3 is released

ReSharper C++ extension makes Microsoft Visual Studio a much better C++ IDE. ReSharper C++ v2018.3 has had literally every smart feature in it tuned, making them work more precisely on modern C++ code.

ReSharper C++ 2018.3: every bit better!

by Anastasia Kazakova

From the article:

ReSharper C++ 2018.3 brought the following enhancements:

  • Performance improvements meaning a more responsive editor
  • Formatter: auto-detection of formatter settings, and C++ naming schemes
  • More information in Parameter info, especially on dependent code. Name hints. Better error diagnostics in templated code
  • New context actions and inspections
  • Support for Catch 2.5
  • Enhanced C++/CLI support and support for Unreal Engine projects
  • Visual Studio 2019 Preview 1 support

 

 

A brief introduction to Concepts – Part 1--Glennan Carnie

Useful new feature.

A brief introduction to Concepts – Part 1

by Glennan Carnie

From the article:

Concepts allow us to express constraints on template types with the goals of making generic code

  • Easier to use
  • Easier to debug
  • Easier to write

In this pair of articles we’ll look at the basics of Concepts, their syntax and usage.  To be open up-front:  this article is designed to get you started, not to make you an expert on Concepts or generic code...

Did anybody consider adding a language pragma to C++?

Interesting question.

Did anybody consider adding a language pragma to C++?

From the article:

For people who don't know, language pragmas are the way that ghc (Glasgow Haskell Compiler) allows you to turn on and off language features. In C++, this would mean that I can write something like:

#language <no_c_style_cast>

And that would disable C-style cast for that source file. Don't you think that it would be useful to standardize this to allow people to willingly disable some old legacy C++ features in newer code?

The SoA Vector – Part 1: Optimizing the Traversal of a Collection--Sidney Congard

It's all for speed.

The SoA Vector – Part 1: Optimizing the Traversal of a Collection

by Sidney Congard

From the article:

I like C++ because it offers a good compromise between writing expressive and fast code. But, I discovered a problem where I didn’t know any way to hide the implementation detail away from its use: The “Structure of Arrays” (SoA) versus the “Array of Structures” (AoS) problem.

This is the first part of a series of two articles:

  • what ‘SoA’ is about and what benefits it brings (part 1)
  • how to implement an SoA vector in C++ (part 2)

So let’s see what those SoA and AoS are all about...

Boost 1.69.0

New release.

Boost 1.69.0

From the article:

Notes for non-Windows users
The Boost build system now supports visibilities. If you are building shared libraries, they will use hidden visibility by default. As a result Boost shared libraries become smaller, load faster and have less chances to get a symbol collision.

See Boost.Build visibility and local-visibility for more info.

To disable that feature you can use use a command line ./b2 visibility=global to build...

C++Now 2019 Call for Submissions is Live

C++NowC++Now 2019 will be held in Aspen, May 5–10, 2017.

C++Now 2019 Call for Submissions

From the invitation:

The C++Now 2019 Call For Submissions is open! We invite all members of the C++ community, including first time submitters, to submit session proposals to the 8th annual C++Now Conference: C++Now 2018 (Aspen CO, USA, May 5 – 10, 2019).

C++Now builds upon the resounding success of previous BoostCon and C++Now conferences. We look forward to considering your proposals. You will be joining leading speakers from the entire C++ community in making C++Now 2018 better than ever.

CopperSpice: Linkage

New video on the CopperSpice YouTube Channel:

Linkage

by Barbara Geller and Ansel Sermersheim

About the video:

In this video, we cover the often overlooked topic of linkage and linkers. We talk about how translation units relate to object files, the various types of symbols, and debugging link errors. We also look at how anonymous namespaces interact with symbol linkage.

Please take a look and remember to subscribe!

Overload 148 is now available

ACCU’s Overload journal of December 2018 is out. It contains the following C++ related articles.

Overload 148 is now available

From the journal:

Revolution, Restoration and Revival.
Trends cycle in seasons. Frances Buontempo wonders what programmers should on the lookout for.

Diseconomies of Scale.
Bigger is not always better. Allan Kelly considers when smaller is more productive.

Flip Model: A Design Pattern.
Publishing dynamic, complex data to many clients in a threadsafe manner is challenging. Daniele Pallastrelli presents the Flip model pattern to overcome the challenges.

Memory Management Patterns in Business-Level Programs.
There are many memory management patterns. Sergey Ignatchenko considers these from an application level.

Compile-time Data Structures in C++17: Part 3, Map of Values.
A compile time map of values allows code to be tested more easily. Bronek Kozicki demonstrates how to avoid a central repository of values.

Algol 68 - A Retrospective.
Algol 68 has influenced programming languages in many ways. Daniel James reminds us just how many.

Measuring Throughput and the Impact of Cache-line Awareness.
How do you measure throughput? Richard Reich and Wesley Maness investigate suitable metrics.