### License Changes

The whole CGAL-3.x series was released under a combination of LGPLv2 (for the foundations of CGAL), and QPL (for the high-level packages). QPL was the former license of the graphical toolkit Qt, but that license is not supported by any major free software project. Furthermore, the terms of the LGPLv2 license are ambiguous for a library of C++ templates, like CGAL.

The CGAL project, driven by the CGAL Editorial Board, has decided to change the license scheme of CGAL. We increased the major number of the CGAL version to '4' in order to reflect this license change. The CGAL-4.x series is released under:

- LGPLv3+ (that is LGPL
*"either version 3 of the License, or (at your option) any later version"*), for the foundations of CGAL, instead of LGPLv2, - GPLv3+ for the high-level packages, instead of QPL.

CGAL 4.0 offers the following improvements and new functionality over CGAL 3.9:

## Changelog

### General

- On Windows, CGAL libraries are now built by default as shared libraries (also called DLL). To run applications that use .dll files of CGAL, you must either copy the .dll files into the directory of the application, or add the path of the directory that contains those .dll files into the PATH environment variable.
- On Windows, the CMake scripts of CGAL now search for shared version of the Boost libraries. You must ensure that the .dll files of Boost are found by the dynamic linker. You can, for example, add the path to the Boost .dll files to the PATH environment variable.
- On Windows, CMake version 2.8.6 or higher is now required.
- Eigen version 3.1 or later is now the recommended third party
library to use in
*Planar Parameterization of Triangulated Surface Meshes*,*Surface Reconstruction from Point Sets*,*Approximation of Ridges and Umbilics on Triangulated Surface Meshes*, and*Estimation of Local Differential Properties of Point-Sampled Surfaces*packages. If you use Eigen you no longer need Taucs, Lapack or Blas to use those packages (and any other in CGAL).

### Linear Cell Complex (new package)

- This package implements linear cell complexes, objects in
d-dimension with linear geometry. The combinatorial part of objects
is described by a combinatorial map, representing all the cells of
the object plus the incidence and adjacency relations between cells.
Geometry is added to combinatorial maps simply by associating a
point to each vertex of the map. This data structure can be seen as
the generalization in dD of the
`Polyhedron_3`

.

### 2D Voronoi Diagram Adaptor (temporarily removed)

- As the copyright holder of this package has not granted the right to switch from QPL to GPL, this package is removed from the distribution. Note that it is “only” an adapter, that is the functionality of point/segment/disk Voronoi diagram is offered through the Delaunay triangulation, segment Delaunay graph, and Apollonius graph.

### AABB Tree

- Documented the constness of member functions of the
`AABB_tree`

class. - The class
`AABB_tree`

is now guaranteed to be read-only thread-safe. As usual in CGAL, this small overhead introduced for thread-safety can be deactivated by defining`CGAL_HAS_NO_THREADS`

.

### 2D Alpha Shapes

- Added an extra template parameter to the class
`Alpha_shape_2`

that allows a certified construction using a traits class with exact predicates and inexact constructions. - An object of type
`Alpha_shape_2`

can now be constructed from a triangulation.

### 3D Alpha Shapes

- Added an extra template parameter to the class
`Alpha_shape_3`

that allows a certified construction using a traits class with exact predicates and inexact constructions.

### Geometric Object Generators

`Random_points_in_iso_box_d`

(deprecated since 3.8) has been removed. Use`Random_points_in_cube_d`

instead.

### Linear and Quadratic Programming Solver

- Minor bugfix.

### Spatial Searching

- The const-correctness of this package have been worked out. The transition for users should be smooth in general, however adding few const in user code might be needed in some cases.
- The class
`Kd_tree`

is now guaranteed to be read-only thread-safe. As usual in CGAL, this small overhead introduced for thread-safety can be deactivated by defining`CGAL_HAS_NO_THREADS`

. - Bug-fix in
`Orthogonal_incremental_neighbor_search`

and`Incremental_neighbor_search`

classes. Several calls to`begin()`

now allow to make several nearest neighbor search queries independently.

### STL Extension

`CGAL::copy_n`

is now deprecated for`CGAL::cpp0x::copy_n`

which uses`std::copy_n`

, if available on the platform.`CGAL::successor`

and`CGAL::predecessor`

are now deprecated for`CGAL::cpp0x::next`

and`CGAL::cpp0x::prev`

. These functions use the standard versions if available on the platform. Otherwise,`boost::next`

and`boost::prior`

are used.

### Triangulation_2

- Fixed a thread-safety issue in
`Delaunay_triangulation_2`

remove functions. As usual in CGAL, the small overhead introduced for thread-safety can be deactivated by defining`CGAL_HAS_NO_THREADS`

. - Add extraction operator for the class
`Constrained_triangulation_2`

(and thus to all inheriting classes).