Product News

Why a "file based" dependency manager rocks for C/C++

C/C++ file-based dependency manager

Biicode is a file based dependency manager for C++. That lets amazing things to happen, such as allowing to reuse individual files from previous projects without having to worry about packaging, setup or installs. Biicode tracks which files depends on which files, and use it to automatically define build targets, or manage dependencies accordingly. For example, you could just reuse the “Person” object from another project, and you will not depend on the other project's dependencies at all, as those files do not depend on them. And this is only the beginning, with this file based approach you can also do many other amazing things, stay tuned for next posts. We believe this is indeed a new paradigm for dependency management. We are still in beta, releasing based on our users feedback almost every week, towards such a system that could rock for all of us as developers. That means that we are not perfect, as I told you we are working hard and defining the best possible roadmap for our community, including open-sourcing the code and building all the necessary tools for production environments.

Help us improve, try it out

Quick Q: Is there an alternative to PC-Lint that supports C++14? -- StackOverflow

It's not often we run a link to a SO article in the Product section, but this is a useful product question.

Alternative for PC-Lint supporting C++14 (Visual Studio 2013)

I am using PC-Lint for quite some time with very good results.

The last year however, I noticed that PC-Lint cannot keep up with the new C++ standards. E.g. range-based for-loops, variadic templates, make_unique, ... which are all constructions supported by Visual Studio 2013, aren't recognized by PC-Lint.

The result is that my code is now filled with lint-comments to disable checking on blocks of code using these constructions. This means:

  • less readable code
  • I'm almost spending more time updating my lint-comments that actually writing code

Is there an alternative (free or commercial) for PC-Lint on Windows that can keep up with the recent C++ standards?

CppDepend 5 Released

CppDepend allows architects and developers to analyze a code base, automate code reviews, and facilitate refactoring and migration. It’s based on Clang for more reliability and lets queries the code base over LINQ queries thanks to CQLinq.

New features in CppDepend v5.0 include:

  • Import result files of other static analyzer like CppCheck and CPD,
  • Hundred of Clang diagnostics are available and it can be easily queried using CQLinq.
  • Custom CQLinq extensions which allows you to write elaborated CQLinq queries,
  • Support for C++14: CppDepend works with the last version of Clang which implement all of the Draft International Standard of the upcoming C++14 language standard,
  • Advanced integration with CppCheck,
  • The directory/file organization for C projects.

Open Source project license terms<span 1;"="">.

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