Product News

Rapid prototyping and teaching ZeroMQ in C++ with biicode—Diego Rodriguez-Losada

From the biicode beta product blog:

Rapid prototyping and teaching ZeroMQ in C++ with biicode

by Diego Rodriguez-Losada

From the article:

Today, if you try to build the basic C++ client-server example that ZeroMQ provides in their site, you might encounter some problems. You have to guess that the C++ binding is not in the library, instead, it’s inside another repo (zmqcpp). I had to google it myself to find it. You have to get, configure and build the library, then setup your own project to use it.

The question is: Given some example source code snippets that use zmq, can anyone, even unexperienced developers build them quickly and easily, even without writing a single line of configuration, in any of the major OS? We think that it can be done, in a few simple steps...

KDE Frameworks 5.2.0 released

If you're using Qt, have you looked at KDE Fx?

Release of KDE Frameworks 5.2.0

KDE Frameworks are 60 addon libraries to Qt which provide a wide variety of commonly needed functionality in mature, peer reviewed and well tested libraries with friendly licensing terms. For an introduction see the Frameworks 5.0 release announcement.

New in this version: ... [read the announcement for the complete list]

CppCon news: Dropbox announces and open sources C++ Djinni for iOS/Android cross-platform apps

djinni.PNGAt CppCon last week, Dropbox announced Djinni (pronounced "genie"), a new open source C++ library. From the announcement:

Djinni is a tool for generating cross-language type declarations and interface bindings. It's designed to connect C++ with either Java or Objective-C.

We at Dropbox use Djinni to interface cross-platform C++ library code with platform-specific Java and Objective-C on Android and iOS.

We announced Djinni at CppCon 2014. See the slides here: https://bit.ly/djinnitalk Video coming soon!

Main Features

  • Generates parallel C++, Java and Objective-C type definitions from a single interface description file.
  • Supports the intersection of the three core languages' primitive types, and user-defined enums, records, and interfaces.
  • Generates interface code allowing bidirectional calls between C++ and Java (with JNI) or Objective-C (with Objective-C++).
  • Can autogenerate comparator functions (equality, ordering) on data types.

Dropbox's CppCon talk slides explain more details, including that Dropbox is using C++ not for "legacy" reasons. Rather, Dropbox is "building (mostly) new apps. Not dealing with lots of legacy code. Not dealing with (very) old platforms. We're building multiple apps." And the language of choice for having a single source code base that can target iOS, Android, OS X, Linux, and Windows is... C++. Their approach is to use C++ for the common code, and a thin bridge (via Djinni) to the Java-specific code on Android, the Objective-C-specific code on iOS, and so on.

A full video of the presentation will be available in approximately one month.

Cinder 0.8.6 released

In case you missed it:

Cinder 0.8.6 Released

The award-winning C++ graphics library Cinder has been updated with support for:

  • New audio API
  • WinRT and DirectX 11 support
  • Unicode APIs for UTF-16 and UTF-32 strings
  • Path2d extensions for calculating tangents and Bezier optimizations
  • New events for foregrounding/backgrounding apps
  • And more

Near-final version of Effective Modern C++ available—Scott Meyers

Scott's long-awaited book on using C++11 and C++14 is nearing completion:

Near-Final Draft of Effective Modern C++ Now Available (plus TOC and sample Item)

by Scott Meyers

From the announcement:

Effective Modern C++ is moving closer and closer to reality. This post contains:

  •     Information about availability of an almost-final draft of the book.
  •     The current (and probably final) table of contents.
  •     A link to the I-hope-I-got-it-right-this-time version of my Item on noexcept.

Note: Scott's session at CppCon ("Type Deduction and Why You Care") is based on the first chapter of Effective Modern C++.

G3log released, asynchronous logging with custom log sinks

[In addition to major product announcements, we're also interested in announcements like this of major releases of smaller and indie projects that our C++ readers might like to know about via our Products category. When you have a big release of your own project and would like to provide a writeup to let people know, feel free to suggest an article like this one. The "Suggest an Article" link appears in the top isocpp.org navbar when you are logged in; logins are free. --Ed.]

G3log is an asynchronous logger with support for adding custom made logging sinks. 

G3log is open source and cross-platform. G3logs builds on the asynchronous logger g2log that was released in 2011.  The current release supports dynamic adding of logging sinks and significant performance improvements. 

G3log features compelling functionality such as:

  • Logging and design-by-contract framework
  • LOG calls are asynchronous to avoid slowing down the LOG calling thread
  • LOG calls are thread safe
  • Queued LOG entries are flushed to log sinks before exiting so that no entries are lost at shutdown
  • Catching and logging of SIGSEGV and other fatal signals ensures controlled shutdown
  • On Linux/OSX a caught fatal signal will generate a stack dump to the log
  • G3log is cross platform, currently in use on  Windows, various Linux platforms and OSX

G3log can be built with Visual Studio 2013, Clang and GCC4.7 or newer.

Release information can be found at author's blog. See also the project's page on Bitbucket.

Boost 1.56.0 is released

Some welcome news from Boost.org...

Boost 1.56.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.

This is the first release since November of last year, and the last one since Boost migrated from a monolithic Subversion repository to modularized git repositories on github.com. The end users should see no change though, since the archives have the same layout as previous releases.

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

CodeSynthesis XSD 4.0.0 Released, Adds Support for C++11

CodeSynthesis XSD 4.0.0 Released, Adds Support for C++11

XSD is an open source, cross-platform W3C XML Schema to C++ data binding compiler. Provided with a schema, it generates C++ classes that represent the given vocabulary as well as XML parsing and serialization code. You can then access the data stored in XML using types and functions that semantically correspond to your application domain rather than dealing with elements, attributes, and text in a direct representation of XML such as DOM or SAX.

Major new features in this release:

  • Support for C++11 in addition to C++98.
  • Support for ordered types including mixed content.
  • Support for anyType and anySimpleType content extraction as DOM and text, respectively.
  • Improved streaming, partially in-memory parsing and serialization support including better XML namespace handling and streaming at multiple document levels.
  • Automatic generation of make-style dependency information.

This release also adds support for Clang as well as Visual Studio 2012 (11.0) and 2013 (12.0).

A more detailed discussion of these features can be found on the blog. For the complete list of new features in this version see the official release announcement.

XSD is written in portable C++ (both C++98/03 and C++11 are supported) and you should be able to use it with any reasonably modern C++ compiler. In particular, we have tested this release on GNU/Linux (x86/x86-64), Windows (x86/x86-64), Mac OS X (x86), and Solaris (x86/x86-64/SPARC) with GNU g++ 4.2.x-4.8.x, MS Visual C++ 2005, 2008, 2010, 2012, 2013, Sun Studio 12u2, and Clang 3.x.

More information, documentation, source code, and pre-compiled binaries are available on the project's page.