November 2014

Ranges, Concepts, and the Future of the Standard Library -- Eric Niebler

Some of the promising news from this week's ISO C++ meeting, which concludes tomorrow.

Ranges, Concepts, and the Future of the Standard Library

by Eric Niebler

From the article:

Frequent readers of this blog know that over the past year, I’ve been working on a modern range library suitable for standardization, integrating good ideas from hither and thither — particularly from Sean Parent and Andrew Sutton — resulting in a library that’s available immediately, and a proposal to the standardization committee. This week I presented my work to the C++ Committee Meeting in Urbana-Champaign. The ensuing discussion has implications for the future of the Standard Library...

FUNGENOOP Programming -- Tony DaSilva

fungenoop.PNGIn case you missed it, here's a nice little Friday nugget:

FUNGENOOP Programming

by Tony DaSilva

From the article:

In his recent talks on C++, Bjarne Stroustrup always sets aside a couple of minutes to go off on a mini-rant against "paradigm shifts"...

From Mathematics to Generic Programming -- Alexander A. Stepanov, Daniel E. Rose

Hot off the presses today, at 320 pages:

From Mathematics to Generic Programming

By Alexander A. Stepanov, Daniel E. Rose

From the book description:

In this substantive yet accessible book, pioneering software designer Alexander Stepanov and his colleague Daniel Rose illuminate the principles of generic programming and the mathematical concept of abstraction on which it is based, helping you write code that is both simpler and more powerful.

If you’re a reasonably proficient programmer who can think logically, you have all the background you’ll need. Stepanov and Rose introduce the relevant abstract algebra and number theory with exceptional clarity. They carefully explain the problems mathematicians first needed to solve, and then show how these mathematical solutions translate to generic programming and the creation of more effective and elegant code. To demonstrate the crucial role these mathematical principles play in many modern applications, the authors show how to use these results and generalized algorithms to implement a real-world public-key cryptosystem.

As you read this book, you’ll master the thought processes necessary for effective programming and learn how to generalize narrowly conceived algorithms to widen their usefulness without losing efficiency. You’ll also gain deep insight into the value of mathematics to programming–insight that will prove invaluable no matter what programming languages and paradigms you use.

You will learn about

  • How to generalize a four thousand-year-old algorithm, demonstrating indispensable lessons about clarity and efficiency
  • Ancient paradoxes, beautiful theorems, and the productive tension between continuous and discrete
  • A simple algorithm for finding greatest common divisor (GCD) and modern abstractions that build on it
  • Powerful mathematical approaches to abstraction
  • How abstract algebra provides the idea at the heart of generic programming
  • Axioms, proofs, theories, and models: using mathematical techniques to organize knowledge about your algorithms and data structures
  • Surprising subtleties of simple programming tasks and what you can learn from them
  • How practical implementations can exploit theoretical knowledge

Introducing Proxygen, Facebook's C++ HTTP framework -- Daniel Sommermann and Alan Frindell

proxygen.PNGFresh from Facebook's coding blog:

Introducing Proxygen, Facebook's C++ HTTP framework

by Daniel Sommermann and Alan Frindell

From the announcement:

We are excited to announce the release of Proxygen, a collection of C++ HTTP libraries, including an easy-to-use HTTP server. In addition to HTTP/1.1, Proxygen (rhymes with "oxygen") supports SPDY/3 and SPDY/3.1. We are also iterating and developing support for HTTP/2. ...

Proxygen began as a project to write a customizable, high-performance HTTP(S) reverse-proxy load balancer nearly four years ago. We initially planned for Proxygen to be a software library for generating proxies, hence the name. But Proxygen has evolved considerably since the early days of the project. While there were a variety of software stacks that provided similar functionality to Proxygen at the time (Apache, nginx, HAProxy, Varnish, etc), we opted go in a different direction...

spdlog: Fast C++ logging library

Just announced:

spdlog: Super fast C++ logging library [GitHub]

The description is really "in a nut":

Very fast, header only, C++ logging library.

Install: Just copy the files to your build tree and use a C++11 compiler

Features:

  • Very fast -- performance is the primary goal (see becnhmarks below)
  • Headers only
  • No dependencies
  • Cross platform - Linux / Windows on 32/64 bits
  • Mult/Single threaded loggers
  • Rotating log files
  • Daily log files
  • Console logging
  • Optional async logging
  • Logging levels
  • Custom formatting with user defined patterns

Boost 1.57.0 has been released

Some welcome news from Boost.org...

Boost 1.57.0 has been released

These open-source libraries work well with the C++ Standard Library, and are usable across a broad spectrum of applications. The Boost license encourages both commercial and non-commercial use.

This release contains one new library and numerous enhancements and bug fixes for existing libraries.

Read the full announcement for all the details, and for download links.

Perfect forwarding and universal references in C++ -- Eli Bendersky

plusprofilephoto.pngA nice tutorial on a feature that leads to convenient and safe calling code:

Perfect forwarding and universal references in C++

by Eli Bendersky

From the article:

One of the new features in C++11 aimed at increased code efficiency is the emplace family of methods in containers. std::vector, for example, has an emplace_back method to parallel push_back, and emplace to parallel insert.

Here's a short demonstration of the benefits these new methods bring: ...

HPX version 0.9.9 released -- STE||AR Group

The STE||AR Group has released V0.9.9 of HPX -- A general purpose parallel C++ runtime system for applications of any scale.

HPX V0.9.9 Released

The newest version of HPX (V0.9.9) is now available for download! Please see here for the release notes.

HPX now exposes an API fully conforming to the concurrency related parts of the C++11 and C++14 standards, extended and applied to distributed computing.

From the announcement:

  • We completed the refactoring of hpx::future to be properly C++11 standards conforming.
  • We overhauled our build system to support newer CMake features to make it more robust and more portable.
  • We implemented a large part of the parallel algorithms and other parallel facilities proposed by C++ Technical Specifications N4104, N4088, and N4107.
  • We added many examples such as the 1D Stencil and the Matrix Transpose series.
  • We significantly improved the performance of the library and the existing documentation

28 C++ User Group Meetings in November!

The monthly listing of the upcoming C++ User Group meetings brings a new record in November: 28 User Groups are meeting so far:

C++ User Group meetings in November

by Jens Weller

From the article:

Meetings in November

    4.11 C++ UG OC Qt - Qt Developer Days 2014 San Francisco
    4.11 C++ UG Warsaw - "Co nowego w C++14"
    5.11 C++ UG Saint Louis - First official meeting for our group
    5.11 C++ UG Austin - Austin C/C++ Boost Double Feature
    6.11 C++ UG Malmö/c++ folk - LLVM/Clang on Windows
    8.11 C++ UG C++ Italy - Italian C++ Community Meetup Bologna
    8.11 C++ UG Pune, India - C++11 Move Semantics and STL optimizations + A look at LibreOffic
    12.11 C++ UG Utah - Efficient Parsing with Boost.Spirit
    12.11 C++ UG San Francisco/ Bay area - Presentation and Q&A
    13.11 C++ UG NRW/Aachen - C++ User Gruppe (November)
    13.11 C++ UG Dresden - TDD
    13.11 C++ UG New York - Experience with C++11 in ArangoDB
    17.11 C++ UG Juce - JUCE Meetup Helsinki
    17.11 C++ UG Denver - Denver Tech Center C++ Developers
    17.11 C++ UG Austin - North Austin Monthly C/C++ Pub Social
    18.11 C++ UG Chicago - Highlights of the Standards Committee Meeting
    19.11 C++ UG Düsseldorf - Treffen der C++ User Gruppe NRW
    19.11 C++ UG Santa Barbara - Brett Hall will give a talk on Transactional Memory and C++
    19.11 C++ UG Seattle/NorthWest - Debugging, Profiling, and Diagnostics for C++ in Visual Studio vNext
    19.11 C++ UG Hamburg - C++14
    20.11 C++ UG Juce - JUCE Meetup Paris
    20.11 C++ UG Bristol - Save the date
    25.11 C++ UG Montpellier - Meetup C++ novembre
    26.11 C++ UG San Francisco/ Bay area - Workshop and Discussion Group
    26.11 C++ UG London - monthly MeetUp
    27.11 C++ UG Rhein-Neckar - C++ Usergroup Meeting
    28.11 C++ UG Istanbul - Debugging with GDB
    29.11 C++ UG Russia - Novosibirsk Meeting

Looking for C++17 - Urbana Proposals for Core, Modules, Networking, Reflection and UB

The second part of my series on the C++ Proposals for the next Committee meeting in Urbana:

Looking for C++17 - Urbana Proposals for Core, Modules, Networking, Reflection and UB

by Jens Weller

From the Article:

The second part of my series about the proposals for Urbana, where the next C++ committee meeting will be held. The papers grand us a first view on a distant future - C++17...