Product News

Boost 1.55.0 released!

Release 1.55.0 of the Boost C++ Libraries is now available:

Boost Version 1.55.0

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.

New libraries:

  • Predef: This library defines a set of compiler, architecture, operating system, library, and other version numbers from the information it can gather of C, C++, Objective C, and Objective C++ predefined macros or those defined in generally available headers, from Rene Rivera.

Clang is (draft) C++14 feature-complete!

A few hours ago, Clang completed checkin 194194 to be feature-complete for draft C++14 including both language extensions and standard library features. (Note: The library conformance requires using libc++, instead of libstdc++ which is supported on more platforms but is not as conforming.) Congratulations to the Clang team for this achievement!

With this progress, it appears that the next release of Clang and LLVM, expected in December or January, will be draft C++14 feature-complete. C++14 itself may still undergo final changes at the February 2014 ISO C++ meeting, which is expected to be the final meeting for technical tweaks to the contents of C++14.

Duetto: A C++ compiler for the Web going beyond emscripten and node.js

logo_duetto_quadrato_192.pngLearning Technologies Ltd. has released a new Clang-based C++ compiler for the Web:

Duetto: a C++ compiler for the Web going beyond emscripten and node.js

From the announcement:

Today Lean­ing Tech­nolo­gies Ltd. releases duetto, a com­piler designed to develop integrated (back­end and fron­tend) web appli­ca­tions in C++. duetto is now avail­able to the pub­lic as FOSS here, and will be offered in a com­mer­cial pack­age with closed-source-friendly licens­ing soon.

[... duetto] allows to pro­gram both the fron­tend and the back­end of a Web appli­ca­tion in an inte­grated C++ code­base, com­pil­ing them respec­tively to JavaScript and native code.

Duetto com­bines the advan­tages of emscripten and node.js by allow­ing the pro­gram­mer to:

  • write web appli­ca­tions in C++, reusing exist­ing code and mak­ing port­ing of whole appli­ca­tions and games to the browser plausible.
  • code both the fron­tend and the back­end of a web appli­ca­tion in the same lan­guage and codebase
In addi­tion to this, duetto pro­vides some nice features:
  • Bring the robust­ness and proven scal­a­bil­ity of C++ pro­gram­ming to the Web
  • You can access all browser APIs directly. Duetto inher­its the C++ phi­los­o­phy of expos­ing the plat­form capa­bil­i­ties (and lim­i­ta­tions) to the users. There is no mid­dle man.
  • Duetto is based on LLVM/clang. An indus­try stan­dard C++ com­piler is a programmer’s best friend: code san­ity is ver­i­fied as com­pile time, includ­ing RPC signatures.
  • The LLVM tool­chain also guar­an­tees that a mind-blowing set of opti­miza­tions is run at com­pile time, gen­er­at­ing highly effi­cient code. This decreases the bur­den on JavaScript JIT com­piler at runtime.
  • Con­trar­ily to emscripten we do not try to emu­late a tra­di­tional address space using typed arrays, but directly map C++ objects to JS objects. This reduces mem­ory con­sump­tion since the garbage col­lec­tor can delete unused object.

ODB C++ ORM 2.3.0 Released, Adds Schema Evolution Support

ODB is an open source object-relational mapping (ORM) system for C++. It allows you to persist C++ objects to a relational database without having to deal with tables, columns, or SQL and without manually writing any of the mapping code.

Major new features in this release:

  • Support for database schema evolution, including automatic schema migration, immediate and gradual data migration, as well as soft object model changes (ability to work with multiple schema versions using the same C++ classes). For a quick showcase of this functionality see the Changing Persistent Classes section in the Hello World Example chapter.
  • Support for object sections which provide the ability to split data members of a persistent C++ class into independently loaded/updated groups.
  • Support for automatic mapping of C++11 enum classes.

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.

ODB is written in portable C++ (both C++98/03 and C++11 are supported) and you should be able to use it with any modern C++ compiler. In particular, we have tested this release on GNU/Linux (x86/x86-64/ARM), 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, and 2012, Sun Studio 12u2, and Clang 3.x.

The currently supported database systems are MySQL, SQLite, PostgreSQL, Oracle, and SQL Server. ODB also provides optional profiles for Boost and Qt, which allow you to seamlessly use value types, containers, and smart pointers from these libraries in your persistent classes.

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

This week in C++: EDG 4.8 and Visual C++ 2013

The past week saw new releases of two major C++ implementations, with a focus on standards conformance improvements.

Edison Design Group (EDG) shipped version 4.8 of their C++ compiler front-end. This is the first EDG C++ release to achieve full C++11 language conformance. It adds support for C++11 inheriting constructors, user-defined literals, thread_local variables, alignment support (alignof and alignas), and complete decltype support.

Note: You can't buy a complete compiler from EDG, but EDG's front-end is a key part of several major commercial compilers and tools. With the availability of 4.8, this means that EDG-based products such as Intel's ICC compiler could achieve full language conformance when they can integrate the EDG 4.8 front-end in a future release.

Microsoft shipped Visual C++ 2013, a major update to VC++ 2012 with additional C++ conformance features. Since last year's release, VC++ 2013 adds the following ISO C++ features: explicit conversion operators, raw string literals, function template default arguments, delegating constructors, { } uniform initialization syntax and initializer_lists, variadic templates, non-static data member initializers, =default, =delete, and using aliases. This release also include some small post-C++11 features that were approved earlier this year for inclusion in the draft of the upcoming C++14 standard, including make_unique, nonmember cbegin/cend, the improved <functional> operator functors such as greater<>, and the new transformation trait type aliases such as remove_reference_t.

At the GoingNative conference in September, Microsoft also announced that before the end of the year it expects to release a follow-on "alpha" or preview compiler containining initial implementations of additional C++11 language features, likely including 'some or all of' the following: implicit move function generation, & and && qualifiers on member functions, __func__, extended sizeof, thread-safe initialization of function local static variables, unconditional noexcept, constexpr on functions other than constructors, and possibly inheriting constructors. The CTP is also expected to include support for several new draft-standard C++14 language features, including auto function return type deduction, decltype(auto), and possibly the much-anticipated C++14 marquee feature generic lambdas. It will likely also include an initial implementation of the await concurrency language feature that is being proposed for possible inclusion in a future standard.

CGAL 4.3 Released, Computational Geometry Algorithms Library

cgal_front_page_2013.pngThe CGAL Open Source Project is pleased to announce the release 4.3 of CGAL, the Computational Geometry Algorithms Library.

Besides fixes to existing packages, the following has changed since CGAL 4.2:

  • The CGAL Manual generated with Doxygen

    The documentation of CGAL is now generated with Doxygen: http://doc.cgal.org/4.3

    The conversion to Doxygen from our home-made tools was not completely smooth. Please report any documentation bug you may discover to our Inria Forge bug tracker.

  • 2D Periodic Triangulations (new package)

    This package allows to build and handle triangulations of point sets in the two dimensional flat torus. Triangulations are built incrementally and can be modified by insertion or removal of vertices. They offer point location facilities. The package provides Delaunay triangulations and offers nearest neighbor queries and primitives to build the dual Voronoi diagrams.

See http://www.cgal.org/releases.html for a complete list of changes.

The CGAL project is a collaborative effort to develop a robust, easy-to-use, and efficient C++ software library of geometric data structures and algorithms, such as:

  • triangulations (2D constrained triangulations, Delaunay triangulations and periodic triangulations in 2D and 3D),
  • Voronoi diagrams (for 2D and 3D points, 2D additively weighted Voronoi diagrams, and segment Voronoi diagrams),
  • Boolean operations on polygons and polyhedra,
  • regularized Boolean operations on polygons with curved arcs
  • arrangements of curves,
  • mesh generation (2D, 3D and surface mesh generation, surface mesh subdivision and parametrization),
  • alpha shapes (in 2D and 3D),
  • convex hull algorithms (in 2D, 3D and dD),
  • operations on polygons (straight skeleton and offset polygon),
  • search structures (kd trees for nearest neighbor search, and range and segment trees),
  • interpolation (natural neighbor interpolation and placement of streamlines),
  • optimization algorithms (smallest enclosing sphere of points or spheres, smallest enclosing ellipsoid of points, principal component analysis),
  • kinetic data structures.

Some modules are distributed under the terms of the LGPL Open Source license (GNU Lesser General Public License v3 or later versions). Most modules are distributed under the terms of the GPL Open Source license (GNU General Public License v3 or later versions). If your intended usage does not meet the criteria of the aforementioned licenses, a commercial license can be purchased from GeometryFactory.

For further information and for downloading the library and its documentation, please visit the CGAL web site.

POCO 1.4.6p2 and Development Release 1.5.2 are available

Now available:

POCO Stable Release 1.4.6p2 and Development Release 1.5.2 Available

From the announcement:

Stable release 1.4.6p2 contains mostly bugfixes, upgrades to some bundled libraries (expat, zlib and sqlite) and a few new features (e.g. ColorConsoleChannel). ...

Development release 1.5.2 adds the MongoDB client library, contains significant updates to the JSON library, adds all changes from 1.4.6p2 and a whole lot of other improvements and fixes. ...

Startup Cloudius announces OSv, a new C++ open-source VM operating system

Froosv.PNGm Cloudius comes OSv: An alternative to Linux running in a virtual machine, written in modern C++. Cloudius is a startup formed by a group of ex-Red Hat OS virtualization experts.

Announcement: OSv, a new open-source operating system for virtual machines

InformationWeek, Charles Babcock: "Cloudius Takes On Linux as Cloud OS"

From the announcement:

Another refreshing feature of OSv is that is written in C++. It's been 40 years since Unix was (re)written in C, and the time has come for something better.

C++ is not about writing super-complex type hierarchies (as some people might have you believe). Rather, it allowed us to write shorter code with less boiler-plate repetition and less chances for bugs. It allowed us to more easily reuse quality code and data structures. And using newly standardized C++11 features, we were able to write safe concurrent code with standard language features instead of processor-specific hacks. And all of this with zero performance overheads -- most of C++'s features, most notably templates, are compile-time features which result in no run-time overhead compared to C code.

 

LLVM Toolchain on Windows -- Chandler Carruth

Have you been waiting to use clang until it works on Windows? Your wait is over. The inimitable Chandler Carruth from Google announced an honest-to-god Windows installer for the LLVM toolchain that integrates into Visual Studio, and links with the native C++ runtime.

A Path Forward for an LLVM Toolchain on Windows

by Chandler Carruth

[...] we’ve been driving many of the efforts around compatibility with Visual Studio and native Windows C++ code in Clang and LLD (the LLVM linker). Today, as announced at my GoingNative 2013 talk, we are able to build a trivial C++ application that in turn links against native C++ libraries and uses them in real, interesting ways. This is a huge milestone for the project, and something we’re really excited to be talking more about.

Continue reading...

Planetary: First Smithsonian curation of code created using C++ and Cinder-- S Chan & A Cope

The first piece of code acquired by the Smithsonian's Cooper-Hewitt National Design Museum -- "Planetary", written in C++.

Planetary: collecting and preserving code as a living object

Posted by Sebastian Chan & Aaron Cope on Monday August 26, 2013

From the article:

Cooper-Hewitt has just acquired its first piece of code. Although the collection has objects that are the end result of algorithmic processes, notably Patrick Jouin's 3D printed chair, Solid C2, this is the first time that code, itself, has been collected.

Almost all contemporary design practice involves digital processes -- from the ubiquitous Adobe design software to CAD packages used by product designers and architects, to the simple day-to-day office management and accounting software -- it would be difficult to find a designer who lives entirely 'off the grid.’ Despite this, design museums have been slow to start to add software to their permanent collections.

Some of this reticence to collect digital objects stems from deep uncertainties as to how to preserve and present such objects to future visitors and future scholars. But for Cooper-Hewitt these uncertainties have been a strong driver to experiment.

So, here we have Planetary.

Planetary is an iPad application written in C++ using the Cinder framework. Planetary offers an alternative music player application for the iPad that visualizes your music collection as a series of celestial bodies. Songs are moons, albums are planets, artists are suns—and the orbits of each are determined by the length of albums and tracks. Their brightness represents their frequency of playback.

Continue reading...