Product News

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

Optimizing C++ Code: Dead Code Elimination -- Jim Hogg

We keep hearing about C++'s "as if" rule, but what does it really do? Fundamentally, it enables optimizations. A modern compiler never produces an executable that's identical to the program you actually wrote; it produces an equivalent program that's probably a lot better.

Hence Jim Hogg's nice new series on what optimizing compilers do, using Visual C++ as an example. The latest instalment:

Optimizing C++ Code : Dead Code Elimination

by Jim Hogg

From the article:

This post examines the optimization called Dead-Code-Elimination, which I’ll abbreviate to DCE.  It does what it says: discards any calculations whose results are not actually used by the program.

Now, you will probably assert that your code calculates only results that are used, and never any results that are not used: only an idiot, after all, would gratuitously add useless code -- calculating the first 1000 digits of pi, for example, whilst also doing something useful.  So when would the DCE optimization ever have an effect? ...

XL C/C++ V11.1 supports extern templates, enum class, right angle brackets -- IBM C/C++ Cafe

[Ed.: We're pleased to report continued progress toward conformance by C++ compiler vendors. This post combines three features contributed by Cecilia, christineli, and Alice Ying]

The IBM XL C/C++ V11.1 now supports several new C++11 features.

With extern templates, you can provide an explicit instantiation declaration for a template specialization if an explicit instantiation definition of the template exists in other translation units or later in the same file. If one translation unit contains the explicit instantiation definition, other translation units can use the specialization without having the specialization instantiated multiple times.

With right angle brackets, you can avoid having to write an extra space in code like vector<list<int> >, and just write vector<list<int>> the way Stroustrup intended. 

With scoped enumerations, you can avoid the following problems with the traditional enumerations:

  • Implicit conversion to an integer
  • Inability to specify the underlying type
  • Scope issue: enumerator is injected into (a.k.a. "pollutes") the enclosing scope

Enjoy!

HPX version 0.9.6 released -- Stellar Group, LSU

stellar-group.PNGThe Stellar Group at Louisiana State University has released version 0.9.6 of High Performance Parallex (HPX) for Linux, MacOS, Windows, and Android.

HPX V0.9.6 Released

The STE||AR Group is proud to announce the sixth formal release of HPX (V0.9.6). ...

From the announcement:

In this release we have made several significant changes:

  • Consolidated API to be aligned with the C++11 (and the future C++14) Standard
  • Implemented a distributed version of our Active Global Address Space (AGAS)
  • Ported HPX to the Xeon-Phi device
  • Added support for the SLURM scheduling system
  • Improved the performance counter framework
  • Added a distributed version of the Active Global Address Space (AGAS)
  • Added parcel (message) compression and parcel coalescing systems
  • Allow different scheduling polices for different parts of code with experimental executors API
  • Added experimental security support on the locality level
  • Created a native transport layer on top of Infiniband networks
  • Created a native transport layer on top of low level MPI functions
  • Added an experimental tuple-space object