Product News

GEANT4: Forecasting the future -- Monica Friedlander

A widely-used C++ program you might never have heard of: Physicists and other scientists use the GEANT4 toolkit to identify problems before they occur.

GEANT4: Forecasting the future

By Monica Friedlander

From the article:

Physicists can tell the future -- or at least foresee multiple possible versions of it. They do this through computer simulations. Simulations can help scientists predict what will happen when a particular kind of particle hits a particular kind of material in a particle detector. But physicists are not the only scientists interested in predicting how particles and other matter will interact. This information is critical in multiple fields, especially those concerned about the effects of radiation.

At CERN in 1974, scientists created the first version of GEANT (Geometry and Tracking) to help physicists create simulations. Today it is in its fourth iteration, developed by an international collaboration of about 100 scientists from 19 countries. Anyone can download the system to a personal computer, use C++ programming language to plug in details about the particle and material in question and find out what will happen when the two meet.

GEANT4 is used in some of the most advanced accelerator experiments in the world, but its user base has grown beyond the particle physics community...

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

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.